TensorflowLite移动端部署

本篇文章主要讲解TensorflowLite在移动端的部署,包括Android和IOS平台。

操作系统 : Mac
Tensorflow Version:1.4

Tensorflow Lite是Tensorflow针对移动端进行了深度精简过得深度学习模型移动端框运行架,大小仅700kb左右,相对于笨重的tensorflow来说有巨大的优势,特别是针对移动端通常要求安装包比较小的情况下。

带来优点的同时也有负面影响,正是因为精简了一个算法操作符才导致了框架之小,导致模型中的操作符在Tensorflow Lite中无法找到,但事情总是有解决办法的。可以参见Tensorflow Lite 采坑记

下载Tensorflow并且配置tensorflow的环境

  1. git clone https://github.com/tensorflow/tensorflow.git

  2. cd tensorflow&&git checkout 1.4

  3. 配置WORKSPACE文件中android sdk 和 ndk 路径

  4. 执行./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目录中

《TensorflowLite移动端部署》 tensorflow_ios_library.png

头文件依赖同Android端, 静态库只需要依赖libtensorflow-lite.a。

IOS开发可以参考tensorflow/contrib/lite/examples/ios/simple工程的相关配置。

    原文作者:我是吸血鬼
    原文地址: https://www.jianshu.com/p/18a7324b4382
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞