tensorflow lite源码编译和android端部署详解一
本篇文章主要讲通过编译tensorflow源码生成libtensorflowlite.jar 和 libtensorflowlite_jni.so库
关于android部署关注和代码将在下篇博客介绍
1.下载tensorflow源码
https://github.com/tensorflow/tensorflow
点击clone下载源码zip文件,并解压到自己目录中
2. 下载bazel编译工具(用来编译tensorflow源码的)
大家可以直接参考下面地址非常详细告诉你下载和安装bazel流程
https://docs.bazel.build/versions/master/install-ubuntu.html
3. 下载android studio
其实可以直接下载android NDK就可以了,但是因为我们后面会设计到android的相关部署代码,android studio
下载后就解决了所有android所需要的东西都可以自动下载,比较方便
下载地址如下:
https://developer.android.google.cn/studio
下载完android studio后,在studio中手动下载NDK, CMAKE这些我们需要的东西
如下:勾选CMake
勾选NDK
然后点OK,等待下载就行了
记住下载完成后的NDK目录,后面会用到:
tensorflow lite即可。
一般是在AndroidSDK/ndk-bundle下面
3.编译tensorflow lite源码
下载的tensorflow代码中包括tensorflow, tensorflow lite, 和所有的example, models等等,编译只用关注编译
tensorflow lite即可。
进入到下载好的tensorflow目录下输入命令:
./configure
之后根据提示输入自己正确的python安装目录
后面一路选择no就可以,因为我们只需要编译tensorflow lite需要的java包和so库,不需要编译全部tensorflow,
一直到让你选择配置android环境时,做相应配置如下,选择真却的android sdk和NDK环境,用于后续成功编译
tensorflow lite的java包和so库:
在选择默认的android NDK等级和SDK的级别就可以了,最后如下configure完成
配置完成后我们就可以开始编译tensorflow lite相关东西啦
在tensorflow主目录下输入如下命令:
bazel build --cxxopt='--std=c++11' //tensorflow/lite/java:tensorflowlite \
--crosstool_top=//external:android/crosstool \
--host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
--cpu=armeabi-v7a
这里解释下,--cxxopt='--std-c++11'表示支持c++11不然会报错
--cpu=armeabi-v7a, 也可以填写如下选项,需要根据自己的cpu来决定,一般情况下就是armeabi-v7a,可以支持华为,小米
高通处理器,麒麟处理器, 以及基于ARM核的处理器等等市面上绝大多数
编译完成如下图:
生成的JAR包和SO库放在如下目录下,每个人会有区别:
/home/qinchao/code/tensorflow-master/bazel-bin/tensorflow/lite/java
到此tensorflow lite编译库已经完成啦,考出libtensorflowlite.jar和libtensorflowlite_jni.so即可!
原文链接:https://blog.csdn.net/qinchao315/article/details/88780845