工作中最近用到了Google TensorFlow技术,Android端对相机预览图进行预处理,并加载tflite模型并推测运行结果。期间需要用到lite的so库等相关sdk,并自己实践编译了一下。
通过编译tensorflow源码生成tensorflowlite.jar 和 libtensorflowlite_jni.so库。

一、tensorflow源码

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

二、编译环境和工具

1、Bazel编译工具:https://docs.bazel.build/versions/master/install-ubuntu.html.
官网有详细介绍如何在Ubuntu下载和安装Bazel流程,按照步骤操作即可。

2、Python 3,tensorflow configure需要用到Python。

3、OpenJDK 11(与Ubuntu 18.04.5需对应)

4、Android NDK & CMake:可直接在Android Studio的SDK Manager中直接勾选并下载NDK,、CMake、SDK Build-Tools工具。

三、编译过程

tensorflow源码中包括很多目录,我们只需关注编译tensorflow lite即可。
进到tensorflow-master源码根目录输入命令 ./configure后会弹出一系列选项提示去选择y/N,
比如Python安装目录,是否支持CUDA等。一般选择N或者填入default选项。
当提示是否希望为Android 构建交互配置 ./WORKSPACE的时候需要则输入y

Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: y

后面根据自己本地实际情况选择Android NDK和SDK版本就好。
最后configure完成如下:

当显示Configuration finished后就可以使用Bazel编译了,在tensorflow-maste根目录下输入如下命令:

bazel build -c opt --fat_apk_cpu=arm64-v8a,armeabi-v7a --host_crosstool_top=@bazel_tools//tools/cpp:toolchain //tensorflow/lite/java:tensorflow-lite

编译没有错误后生成包的路径如下:
/home/liuke/Project/tensorflow-master/bazel-bin/tensorflow/lite/java下的tensorflow-lite.aar

解压出来就能看到与平台相关的libtensorflowlite_jni.so库了

四、编译总结

1、运行./configure后No module named ‘numpy’,因为我本地同时安装了python2(已安装numpy)和python3,针对python3可通过命令sudo apt-get install python3-numpy特定安装。

2、Bazel requires Android build tools version 30.0.0 or newer, 29.0.0 was provided
Bazel版本需要和Android build tools版本对应,尽量适配最新的版本来容错。
同时jdk版本也要对应,比如Bazel所使用的jdk版本要和Ubuntu系统版本对应。

3、missing input file ‘external/androidsdk/build-tools/31.0.0/lib/dx.jar’
最新的build tools版本默认没有了dx.jar,然后我就从较低版本的29.0.0的build tools拷贝该jar到31.0.0对应路径。重新configure后编译即可。

4、若还有其它Tensorflow for Android的库需要用到工程的,可以参考官方文档:
Build TensorFlow Lite for Android.
Build TensorFlow Lite with CMake.

TensorFlow Lite编译Android so库相关推荐

  1. Tensorflow Lite 编译

    Google最近发布了Tensorflow Lite,并且提供了demo,虽然该demo可以使用bazel build –cxxopt='–std=c++11' //tensorflow/contri ...

  2. configure 查找依赖库_Rust在编译Android的库时,如何设定依赖的第三方库引用的C/C++的动态库的搜索路径?...

    谢邀.不懂android,也不懂OpenCL.但是我尝试了解了一下你的问题. 既然你用了第三方库,那就得查源码了.翻开ocl 库的源码搜android关键字,很容易定位到下面代码. #https:// ...

  3. TensorFlow Lite+Android,Google要搞的大事情

    近日谷歌开源了TensorFlow的终端版本TensorFlow Lite,这个版本的发布其实早在预料之中,但又能从这件事看出未来谷歌整个生态版图的一些端倪,接下来就让博主为大家分析一下. 首先为什么 ...

  4. Android TensorFlow Lite 深度学习识别手写数字mnist demo

    一. TensorFlow Lite TensorFlow Lite介绍.jpeg TensorFlow Lite特性.jpeg TensorFlow Lite使用.jpeg TensorFlow L ...

  5. Google正式发布TensorFlow Lite预览版,针对移动/嵌入设备的轻量级解决方案

    来源:AI科技评论 概要:日前,谷歌正式发布 TensorFlow Lite 开发者预览版,这是针对移动和嵌入式设备的轻量级解决方案. 日前,谷歌正式发布 TensorFlow Lite 开发者预览版 ...

  6. 在ARM板子上把玩Tensorflow Lite

    前几天Google的IO大会上发布的ML Kit,ML Kit为端上部署深度学习模型提供了一套完整的解决方案,本地运行.云端都支持.里面本地部署用到的就是Tensorflow lite. Tensor ...

  7. 案例分享 | CEVA 使用 TensorFlow Lite 在边缘设备部署语音识别引擎及前端

    客座博文 / Ido Gus,来自 CEVA CEVA 是无线连接和智能传感技术的领先授权商.我们的产品可帮助原始设备制造商 (OEM) 为移动设备.消费者.汽车.机器人.工业和物联网等多种终端市场, ...

  8. 边缘计算Tensorflow Lite

    边缘计算 1.云计算与边缘计算 1.1 云计算 1.2 边缘计算 2.边缘AI 2.1 物联网与5G 2.Tensorflow与Tensorflow Lite 2.1 Tensorflow Lite结 ...

  9. 从零开始在Windows上构建Android版的Tensorflow Lite

    文章目录 第一步:获取源代码 1. 工具:Git 2. 下载代码 第二步:了解代码 第三步:工具准备 1. Git 2. NDK 3. CMake 4. Python 3 5. Patch 第四步:环 ...

最新文章

  1. vsxxxx Avalon 感知提示
  2. 4.1.2 文件的逻辑结构
  3. spark数据处理示例一:分类
  4. 《Starting with Starling》 Ep 1~11
  5. Android LinearLayout加载Fragment
  6. 微信又添新表情,“我裂开了”!
  7. kafak 命令使用
  8. consul docker register
  9. 你还在 Docker 中跑 MySQL?恭喜你,好下岗了!
  10. 计算机人工智能识别系统应用领域,人工智能论文3000字以上
  11. windows安装syslog日志转发客户端nxlog
  12. hdu_5145_NPY and girls(莫队算法+组合)
  13. 激光导航AGV的停车精度受环境变化的影响有多大?
  14. linux内核移植与开发板,基于uClinux内核移植ARM开发板应用
  15. java 游戏背景mp3音乐_java飞机大战(带背景音乐) 游戏原码下载
  16. 2021-03-19我的博客
  17. HTML5之10 __使用 Canvas API创建 热点图
  18. VS2015安装完成后Visual C++的一些模板找不到,安装C++新模板
  19. 服务器缓存(CDN)
  20. 读《消失的真实》有感

热门文章

  1. 网站的关键!教你13步打造漂亮的WEB字体
  2. incaseformat蠕虫病毒爆发,深信达助力安全防护
  3. Spring~用注解读取bean(属性注入、构造方法注入、set注入)
  4. elasticsearch:使用top_hits聚合获取分组列表
  5. 用Python爬取了上万部电影的排名,周末周末好带女神一起去
  6. 拖放(DragDrop)
  7. 2019-2020-2 20175227张雪莹《网络对抗技术》 Exp1 PC平台逆向破解
  8. 泡妞技术帖:一物降一物 金庸爷爷教你如何谈恋爱
  9. 【spine】spine 简介
  10. 懂得感恩的人,运气都不会太差