本篇文章翻译自tensorflow官网,会加上自己的一些实操讲解,便于大家快速运行起第一个移动端机器学习的demo。

为了让你在Android上开始使用tensorflow,我们将通过两种方式来构建我们的移动端的Tensorflow例子并将它部署到一个Android设备上。

为什么要选择这些方法之一?

在Android上使用Tensorflow最简单的方法就是使用Android Studio。如果你不打算自定义你的Tensorflow构建,或者如果你想使用Android Studio的编辑器和其他功能去构建一个app并且只是想添加TensorFlow,我们推荐你使用Android Studio。

如果您使用自定义操作,或有其他原因从头开始构建Tensorflow,请向下滚动并查看我们有关使用Bazel构建demo的说明。

使用Android Studio构建样例

前提条件

如果还没有,做以下两件事情:

  • 安装Android Studio,按照网址的介绍来操作即可。(注:自行搜索好搭建Android的开发环境)
  • 从Github克隆Tensorflow仓库

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

clone tensorflow

构建

1.打开Android Studio,从欢迎界面,选择Open an existing Android Studio project

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'

如下图所示:

nativeBuildSystem

4.点击run按钮或者使用Run-> Run 'android'从顶部菜单。
如果它询问你使用Instant Run,点击Proceed Without Instant Run
此外,你需要在设备中启用开发调试选项才能插入Android设备。

使用Android Studio将Tensorflow添加到您的应用程序

最简单的方式就是添加以下行到你的Gradle构建文件:

allprojects {    repositories {        jcenter()    }}dependencies {    compile 'org.tensorflow:tensorflow-android:+'}

这会自动将Tensorflow的最新稳定版作为AAR下载并安装到您的项目中。

使用Bazel构建Demo

另外一种方法在Android上使用Tensorflow就是使用Bazel构建一个apk并且使用ADB加载它到你的设备当中。这个需要你知道一些构建系统和Android开发者工具的知识,但是我们将在这里指导您完成基础的操作。

  • 首先,按照我们的说明从源码安装。这个会知道你通过安装Bazel并且克隆Tensorflow代码。
  • 下载Android SDK和NDK如果你的环境还没有它们。你至少需要NDK的12b版本,SDK的23版本以上。
  • 在Tensorflow源代码,使用您本地的SDK和NDK路径更新WORDSPACE文件,其中包含
    具体如下图所示:
WORDSPACE
  • 运行Bazel去构建Demo
bazel build -c opt //tensorflow/examples/android:tensorflow_demo
  • 使用ADB去安装apk到你的设备当中
adb install -r bazel-bin/tensorflow/examples/android/tensorflow_demo.apk

这个会在你的设备当中安装三个应用程序,都是Tensorflow演示的一部分。有关更多信息,请参阅Android示例应用程序。

我们来看下安装到手机的效果,如下图所示:

demo

注:官网说有三个示例,但笔者运行的时候发现多了一个TF Speech,应该是做语音识别相关的应用,具体大家可以试下。

Android 示例应用程序

Android示例代码是一个构建和安装三个示例应用程序的单个项目,这个三个示例应用程序都使用相同的基础代码。示例应用程序都从手机摄像头获取视频输入:

  • TF Classify 使用Inception v3模型来标记来自Imagenet的类所执行的对象。Imagenet只有1000种类别,它会遗漏大多数日常生活中的物体,并且包含许多现实生活中不可能遇到的东西,所以结果往往会非常有趣。例如,没有“人”的类别,相反,它往往会猜测它通常与人的照片相关的事物,例如安全带或氧气面罩。如果你想自定义此示例来识别你关心的对象,则可以使用Tensorflow for Poets codelab作为示例,以便根据你自己打数据来训练模型。
  • TF Detect 使用多盒模型试图在相机中任务的位置绘制边框。对于每个检测结果,这些框都有可信度的注释。结果可能并不完美,因为这种对象检测仍然是一个活跃的研究课题。Demo还包括光学追踪,当物体在帧之间移动时,会比Tensorflow推断运行更加频繁。这样提高了用户体验,因为明显的帧速率更加快,但是它还能够估计哪些框指向帧之间的相同对象,这对于随着时间的推移计数对象是重要的。
  • TF Stylize 在摄像头上实现实时风格的传输算法。你可以选择使用哪种样式,并使用屏幕底部的调色板在它们之间进行混合,也可以将处理的分辨率切换为更高或更低的rez。

注:看翻译会懵,直接运行Demo看下效果就清楚三个示例具体用来干啥的了。

Android推理库

由于Android应用程序需要用Java编写,核心Tensorflow是C++编写的,所以Tensorflow有一个JNI来链接两者。它的接口只针对推理,所以它提供了加载图表,设置输入和运行模型来计算特定输出的能力。您可以在TensorFlowInferenceInterface.java中查看最少的一组方法的完整文档。

这些Demo使用了这个接口,因此它们是查找示例用法的好地方。您可以在ci.tensorflow.org下载预先构建的二进制jar文件。

更多相关文章

  1. Android(安卓)ButterKnife框架的使用方法
  2. android开发笔记之2012版辅助开发工具包(ADT)新功能特性介绍及安装
  3. 2012版辅助开发工具包(ADT)新功能特性介绍及安装使用
  4. 最强 Android(安卓)Studio 使用小技巧和快捷键总结
  5. Android(安卓)中 RecyclerView 的基本使用
  6. Android中使用SQLite数据库详解
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. Android实现瀑布流,圆角矩形,点按效果
  2. 关于使用谷歌地图的问题
  3. px(像素)与 dp, sp换算公式
  4. android 短信 彩信 数据库 转
  5. Android实现抖动动画
  6. Android(安卓)中String.xml文件中的错误
  7. Android(安卓)开发即时聊天工具 YQ :(五) 发
  8. this version of ADT requires android S
  9. Android(安卓)library projects cannot b
  10. Android日常知识收集与总结之EditText篇