Skip to content

zihaomu/tflite_cmake

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

159,599 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

tflite-cmake

tflite包的cmake在编译android GPU版本时,会遇到很多报错。主要原因是相关代码没有被加入到cmake,以及一些代码需要flatbuffer去编译。鉴于tensorflow并不是很积极的修复错误的cmake代码,这个仓库将会整理并测试对应版本release代码进行同步更新。 代码参考:tensorflow#62705 目前涉及到有问题的版本包括2.12~2.162.10版本无上述问题。

Update: 2023.03.21

增加新的编译选项TFLITE_SHARED_LIB,让tflit的所有第三方库静态编译到so内部,方便集成。 例子:

 cmake .. -DTFLITE_LESS_LINK=ON \
 -DCMAKE_TOOLCHAIN_FILE=xxx/ndk/xxx/build/cmake/android.toolchain.cmake \
 -DANDROID_ABI=arm64-v8a \
 -DTFLITE_ENABLE_GPU=ON \
 -DANDROID_PLATFORM=26 \
 -DFLATBUFFERS_FLATC_EXECUTABLE=xxx/flatbuffers/flatc

编译安卓GPU版本的so

为什么一定需要GPU版本的tflite?经过测试发现,tflite只有GPU版本在移动端速度比较快,而tflite的CPU速度比MNN要慢约一倍。(在mac intel i9和安卓高通888芯片上测试对比)

step0:编译flatbuffer

编译时需要能运行的flatbuffer执行文件去编译对应版本的头文件库。

git clone https://github.com/google/flatbuffers.git

cd flatbuffers
mkdir build && cd build
cmake ..
make -j8
ls

找到那个flatc的可执行文件的绝对路径,后面编译时要用到。

step1: 配置ndk环境变量

配置好ndk相关环境变量

export ANDROID_HOME=xxx/Library/Android/sdk
export ANDROID_NDK_HOME=xxx/Android/sdk/ndk/26.1.10909125 # 换成你自己的ndk

step2: 编译tflite

 cmake .. -DBUILD_SHARED_LIBS=ON \
 -DCMAKE_TOOLCHAIN_FILE=xxx/ndk/xxx/build/cmake/android.toolchain.cmake \
 -DANDROID_ABI=arm64-v8a \
 -DTFLITE_ENABLE_GPU=ON \
 -DANDROID_PLATFORM=26 \
 -DFLATBUFFERS_FLATC_EXECUTABLE=xxx/flatbuffers/flatc

期间需要下载很多第三方依赖,下载失败可以手动找到需要下载的文件以及下载链接,然后手动下载好放到对应位置。重新执行上面的指令即可。

以此仓库记录一下被坑进去的2天时间。

以下是原始readme.

Python PyPI DOI CII Best Practices OpenSSF Scorecard Fuzzing Status Fuzzing Status OSSRank Contributor Covenant TF Official Continuous TF Official Nightly

Documentation
Documentation

TensorFlow is an end-to-end open source platform for machine learning. It has a comprehensive, flexible ecosystem of tools, libraries, and community resources that lets researchers push the state-of-the-art in ML and developers easily build and deploy ML-powered applications.

TensorFlow was originally developed by researchers and engineers working within the Machine Intelligence team at Google Brain to conduct research in machine learning and neural networks. However, the framework is versatile enough to be used in other areas as well.

TensorFlow provides stable Python and C++ APIs, as well as a non-guaranteed backward compatible API for other languages.

Keep up-to-date with release announcements and security updates by subscribing to announce@tensorflow.org. See all the mailing lists.

Install

See the TensorFlow install guide for the pip package, to enable GPU support, use a Docker container, and build from source.

To install the current release, which includes support for CUDA-enabled GPU cards (Ubuntu and Windows):

$ pip install tensorflow

Other devices (DirectX and MacOS-metal) are supported using Device plugins.

A smaller CPU-only package is also available:

$ pip install tensorflow-cpu

To update TensorFlow to the latest version, add --upgrade flag to the above commands.

Nightly binaries are available for testing using the tf-nightly and tf-nightly-cpu packages on PyPi.

Try your first TensorFlow program

$ python
>>> import tensorflow as tf
>>> tf.add(1, 2).numpy()
3
>>> hello = tf.constant('Hello, TensorFlow!')
>>> hello.numpy()
b'Hello, TensorFlow!'

For more examples, see the TensorFlow tutorials.

Contribution guidelines

If you want to contribute to TensorFlow, be sure to review the contribution guidelines. This project adheres to TensorFlow's code of conduct. By participating, you are expected to uphold this code.

We use GitHub issues for tracking requests and bugs, please see TensorFlow Forum for general questions and discussion, and please direct specific questions to Stack Overflow.

The TensorFlow project strives to abide by generally accepted best practices in open-source software development.

Patching guidelines

Follow these steps to patch a specific version of TensorFlow, for example, to apply fixes to bugs or security vulnerabilities:

  • Clone the TensorFlow repo and switch to the corresponding branch for your desired TensorFlow version, for example, branch r2.8 for version 2.8.
  • Apply (that is, cherry-pick) the desired changes and resolve any code conflicts.
  • Run TensorFlow tests and ensure they pass.
  • Build the TensorFlow pip package from source.

Continuous build status

You can find more community-supported platforms and configurations in the TensorFlow SIG Build community builds table.

Official Builds

Build Type Status Artifacts
Linux CPU Status PyPI
Linux GPU Status PyPI
Linux XLA Status TBA
macOS Status PyPI
Windows CPU Status PyPI
Windows GPU Status PyPI
Android Status Download
Raspberry Pi 0 and 1 Status Py3
Raspberry Pi 2 and 3 Status Py3
Libtensorflow MacOS CPU Status Temporarily Unavailable Nightly Binary Official GCS
Libtensorflow Linux CPU Status Temporarily Unavailable Nightly Binary Official GCS
Libtensorflow Linux GPU Status Temporarily Unavailable Nightly Binary Official GCS
Libtensorflow Windows CPU Status Temporarily Unavailable Nightly Binary Official GCS
Libtensorflow Windows GPU Status Temporarily Unavailable Nightly Binary Official GCS

Resources

Learn more about the TensorFlow community and how to contribute.

Courses

License

Apache License 2.0

About

compile tflite with cmake

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • C++ 56.4%
  • Python 26.8%
  • MLIR 5.9%
  • Starlark 4.0%
  • HTML 2.8%
  • Go 1.3%
  • Other 2.8%