TensorFlow Lite编译Android so库
工作中最近用到了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库相关推荐
- Tensorflow Lite 编译
Google最近发布了Tensorflow Lite,并且提供了demo,虽然该demo可以使用bazel build –cxxopt='–std=c++11' //tensorflow/contri ...
- configure 查找依赖库_Rust在编译Android的库时,如何设定依赖的第三方库引用的C/C++的动态库的搜索路径?...
谢邀.不懂android,也不懂OpenCL.但是我尝试了解了一下你的问题. 既然你用了第三方库,那就得查源码了.翻开ocl 库的源码搜android关键字,很容易定位到下面代码. #https:// ...
- TensorFlow Lite+Android,Google要搞的大事情
近日谷歌开源了TensorFlow的终端版本TensorFlow Lite,这个版本的发布其实早在预料之中,但又能从这件事看出未来谷歌整个生态版图的一些端倪,接下来就让博主为大家分析一下. 首先为什么 ...
- Android TensorFlow Lite 深度学习识别手写数字mnist demo
一. TensorFlow Lite TensorFlow Lite介绍.jpeg TensorFlow Lite特性.jpeg TensorFlow Lite使用.jpeg TensorFlow L ...
- Google正式发布TensorFlow Lite预览版,针对移动/嵌入设备的轻量级解决方案
来源:AI科技评论 概要:日前,谷歌正式发布 TensorFlow Lite 开发者预览版,这是针对移动和嵌入式设备的轻量级解决方案. 日前,谷歌正式发布 TensorFlow Lite 开发者预览版 ...
- 在ARM板子上把玩Tensorflow Lite
前几天Google的IO大会上发布的ML Kit,ML Kit为端上部署深度学习模型提供了一套完整的解决方案,本地运行.云端都支持.里面本地部署用到的就是Tensorflow lite. Tensor ...
- 案例分享 | CEVA 使用 TensorFlow Lite 在边缘设备部署语音识别引擎及前端
客座博文 / Ido Gus,来自 CEVA CEVA 是无线连接和智能传感技术的领先授权商.我们的产品可帮助原始设备制造商 (OEM) 为移动设备.消费者.汽车.机器人.工业和物联网等多种终端市场, ...
- 边缘计算Tensorflow Lite
边缘计算 1.云计算与边缘计算 1.1 云计算 1.2 边缘计算 2.边缘AI 2.1 物联网与5G 2.Tensorflow与Tensorflow Lite 2.1 Tensorflow Lite结 ...
- 从零开始在Windows上构建Android版的Tensorflow Lite
文章目录 第一步:获取源代码 1. 工具:Git 2. 下载代码 第二步:了解代码 第三步:工具准备 1. Git 2. NDK 3. CMake 4. Python 3 5. Patch 第四步:环 ...
最新文章
- vsxxxx Avalon 感知提示
- 4.1.2 文件的逻辑结构
- spark数据处理示例一:分类
- 《Starting with Starling》 Ep 1~11
- Android LinearLayout加载Fragment
- 微信又添新表情,“我裂开了”!
- kafak 命令使用
- consul docker register
- 你还在 Docker 中跑 MySQL?恭喜你,好下岗了!
- 计算机人工智能识别系统应用领域,人工智能论文3000字以上
- windows安装syslog日志转发客户端nxlog
- hdu_5145_NPY and girls(莫队算法+组合)
- 激光导航AGV的停车精度受环境变化的影响有多大?
- linux内核移植与开发板,基于uClinux内核移植ARM开发板应用
- java 游戏背景mp3音乐_java飞机大战(带背景音乐) 游戏原码下载
- 2021-03-19我的博客
- HTML5之10 __使用 Canvas API创建 热点图
- VS2015安装完成后Visual C++的一些模板找不到,安装C++新模板
- 服务器缓存(CDN)
- 读《消失的真实》有感