本篇文章主要讲解TensorflowLite在移动端的部署,包括Android和IOS平台。
操作系统 : Mac
Tensorflow Version:1.4
Tensorflow Lite是Tensorflow针对移动端进行了深度精简过得深度学习模型移动端框运行架,大小仅700kb左右,相对于笨重的tensorflow来说有巨大的优势,特别是针对移动端通常要求安装包比较小的情况下。
带来优点的同时也有负面影响,正是因为精简了一个算法操作符才导致了框架之小,导致模型中的操作符在Tensorflow Lite中无法找到,但事情总是有解决办法的。可以参见Tensorflow Lite 采坑记。
下载Tensorflow并且配置tensorflow的环境
-
cd tensorflow&&git checkout 1.4
-
配置WORKSPACE文件中android sdk 和 ndk 路径
-
执行./configure,配置Python的路径,其他选项【Y/N】全部选择 N即可。
经过四部操作即可配置tensorflow的相关环境
Android 端
在Android端采用NDK的方式集成Tensorflow Lite源码,而集成源码我们需要一些静态库以及头文件,但是Tensorflow Lite并没有。我们需要执行以下命令:
bazel build --cxxopt=--std=c++11 //tensorflow/contrib/lite/java/demo/app/src/main:TfLiteCameraDemo
如果最终看到成功执行,则可以在bazel-out/android-armeabi-v7a-opt/bin中找到我们需要的文件。
当前版本静态库依赖如下:
libbuiltin_ops.a 、libcontext.a、 libfarmhash.a、 libframework.a 、libgemm_support.a、 libneon_tensor_utils.a、 libportable_tensor_utils.a 、libquantization_util.a 、libstring_util.a 、libtensor_utils.a
以及android ndk api cpu-features,如何配置cpu-features.a请百度。
头文件依赖:
flatbuffers、 tensorflow
其中tensorflow中包含tensorflow/contrib/lite
备注:通过bazel build -s 可以查看详细的编译过程,未来如果依赖库有变化,可以通过编译输出信息查看链接信息以确定自定义脚本的开发。
IOS端
IOS端集成比较简单,在tensorflow/contrib/lite中包含了ios编译脚本。
下载相关依赖库,执行如下命令:
bash tensorflow/contrib/lite/download_dependencies.sh
编译生成IOS 多CPU架构的的静态库:
bash tensorflow/contrib/lite/build_ios_universal_lib.sh
最终生成的静态库位于tensorflow/contrib/lite/gen/lib目录中
tensorflow_ios_library.png
头文件依赖同Android端, 静态库只需要依赖libtensorflow-lite.a。
IOS开发可以参考tensorflow/contrib/lite/examples/ios/simple工程的相关配置。
网友评论