1、概述
作为一个Android开发者和Tensorflow爱好者,当发现tensorflow可以在Android平台开发,那必须来玩玩。大多数参考文章说,Tensorflow在Android上的应用只能在Linux系统编译,事实上不是,构建工具bazel 现在支持Windows、Mac、Linux三个平台,windows上没有尝试过,但应该也可以,跟着本文步骤,可以在各个平台实现。本文从搭建环境开始,一步步实现Tensorflow在Android平台上的应用。
2、搭建环境
(1)搭建Java环境
由于后面安装的构建工具Bazel,环境需要jdk8.
Java环境安装指导地址:
http://jingyan.baidu.com/article/215817f7e3f2bd1eda1423f4.html
Java多版本环境安装指导地址:
http://www.cnblogs.com/butterfly-clover/p/5764587.html
(2)搭建SDK环境
android环境最佳下载地址:
http://www.androiddevtools.cn/
(3)搭建NDK环境
NDK下载地址:
http://www.androiddevtools.cn/
NDK配置指导:
http://blog.csdn.net/ztchun/article/details/61197181
(4)安装Bazel
Bazel是一个构建工具,即一个可以运行编译和测试来组装软件的工具,跟Make、Ant、Gradle、Buck、Pants和Maven一样。这个工具将在以后编译的时候用到。
一些早期的指导教程Android只能在Linux系统上编译,因为Brazel只支持Linux平台,现在支持三大主流平台,Windows我没试过,应该是可以的。
brazel下载链接及其安装教程:
https://bazel.build/versions/master/docs/install.html
3.编译APK
(1)下载tensorflow
tensorflow下载链接:
https://github.com/tensorflow/tensorflow
(2)修改tensorflow根目录的WORKSPACE
根据实际情况,用vim修改android_ndk_repository、android_sdk_repository的位置和版本:
//vim命令
vim WORKSPACE
(3)bazel构建
切换到tensorflow的根目录下,构建命令:
bazel build //tensorflow/examples/android:tensorflow_demo
构建需要花费较长时间,慢慢等喽。
(4)编译成功
看到下面的结果就OK了。
默认会在tensorflow/bazel-bin/tensorflow/examples/android目录下面生成我们想要的apk文件。
5、运行程序
(1)TF Classify(分类)
分类功能使用谷歌的检测模型实时分类相机的每一帧图片,在相机图片的顶部展示分类结果,如下图展示了三种识别结果。
(2)TF Detect(检测)
演示基于使用深层神经网络的可伸缩对象检测的模型,以实时地在相机预览中本地化和跟踪人。如下图所示。
(3)TF Stylize(风格化)
使用基于“艺术风格的学习表示”的模型,将相机预览图像重新显示为多个不同艺术家的预览图像。如下图对杯子,风格化,效果还不错。
原图:
风格化图:
编译后程序已经上传至github上,欢迎交流。
后面准备基于此SDK开发一些实际应用玩玩,大家有好的建议欢迎留言。