本篇文章翻译自tensorflow官网,会加上自己的一些实操讲解,便于大家快速运行起第一个移动端机器学习的demo。
为了让你在Android上开始使用tensorflow,我们将通过两种方式来构建我们的移动端的Tensorflow例子并将它部署到一个Android设备上。
为什么要选择这些方法之一?
在Android上使用Tensorflow最简单的方法就是使用Android Studio。如果你不打算自定义你的Tensorflow构建,或者如果你想使用Android Studio的编辑器和其他功能去构建一个app并且只是想添加TensorFlow,我们推荐你使用Android Studio。
如果您使用自定义操作,或有其他原因从头开始构建Tensorflow,请向下滚动并查看我们有关使用Bazel构建demo的说明。
前提条件
如果还没有,做以下两件事情:
git clone https://github.com/tensorflow/tensorflow
构建
1.打开Android Studio,从欢迎界面,选择Open an existing Android Studio project。
2.然后定位到你拉下来的仓库选择tensorflow/examples/android目录,点击OK导入到工作区。
如果它要求你执行同步Gradle,点击OK。 你可能需要安装各种平台和工具,直接点击安装即可。 注:缺什么就安装什么,保证所有要求的环境都是具备的。
3.打开工程中android模块下的build.gradle文件,找到nativeBuildSystem变量并且设置它为none如果它还没设置。
// set to 'bazel', 'cmake', 'makefile', 'none'
def nativeBuildSystem = 'none'
如下图所示:
4.点击run按钮或者使用Run-> Run 'android'
从顶部菜单。
如果它询问你使用Instant Run,点击Proceed Without Instant Run。
此外,你需要在设备中启用开发调试选项才能插入Android设备。
最简单的方式就是添加以下行到你的Gradle构建文件:
allprojects {
repositories {
jcenter()
}
}
dependencies {
compile 'org.tensorflow:tensorflow-android:+'
}
这会自动将Tensorflow的最新稳定版作为AAR下载并安装到您的项目中。
另外一种方法在Android上使用Tensorflow就是使用Bazel构建一个apk并且使用ADB加载它到你的设备当中。这个需要你知道一些构建系统和Android开发者工具的知识,但是我们将在这里指导您完成基础的操作。
bazel build -c opt //tensorflow/examples/android:tensorflow_demo
adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk
这个会在你的设备当中安装三个应用程序,都是Tensorflow演示的一部分。有关更多信息,请参阅Android示例应用程序。
我们来看下安装到手机的效果,如下图所示:
注:官网说有三个示例,但笔者运行的时候发现多了一个TF Speech,应该是做语音识别相关的应用,具体大家可以试下。
Android示例代码是一个构建和安装三个示例应用程序的单个项目,这个三个示例应用程序都使用相同的基础代码。示例应用程序都从手机摄像头获取视频输入:
注:看翻译会懵,直接运行Demo看下效果就清楚三个示例具体用来干啥的了。
Android推理库
由于Android应用程序需要用Java编写,核心Tensorflow是C++编写的,所以Tensorflow有一个JNI来链接两者。它的接口只针对推理,所以它提供了加载图表,设置输入和运行模型来计算特定输出的能力。您可以在TensorFlowInferenceInterface.java中查看最少的一组方法的完整文档。
这些Demo使用了这个接口,因此它们是查找示例用法的好地方。您可以在ci.tensorflow.org下载预先构建的二进制jar文件。