第三课:把tensorflow,模型和测试数据导入Android工程

关于Android项目的创建这里就不做赘述了,我们直接进入主题,看下如何把机器学习库和训练的模型导入一个安卓应用中。

导入 Inference Interface

在上一课时中我们下载了 Inference Interface 的 nightly build 的 AAR 文件,这个AAR其实就是库文件,需要把这个文件导入到项目中,通常会把这个 AAR 文件放在 app/libs 下面:

为了导入这个 AAR,首先需要在 app/build.gradle 中声明一个本地的 flatDir 仓库:

然后指定依赖:

最后再做一个 Project Sync 就完成了 Inference Interface 的导入,完整的app/build.gradle应该是这样的:

导入 Pre-trained Model

在上一课时中已经下载了 Pre-trained model 的二进制包,解压缩这个包,会发现里面有这些文件:

其中model.ckpt.* 是我们在训练自己的模型时会用到的文件(下一系列课程我们会专门讲解如何训练自己的模型),这里暂时忽略;frozen_inference_graph.pb 文件正是我们需要的,开箱即用的模型文件,把这个文件作为一个 asset 导入项目中。在 Android Studio 中,单击 New Folder Assets Folder 命令创建一个 assets 目录,将 frozen_inference_graph.pb 复制到 assets 目录中,重命名为 model.pb。

导入测试数据

在机器学习的世界里面,绝大部分的输入和输出数据都是数字,换句话来说,当训练这个识别模型的时候,你不会告诉它这张图片上的是人,而是告诉它这个图片上面的物体代号是 1;模型在输出识别结果的时候,也不会输出人,汽车这样的字符,而是输出 1、2、3 这样的数字,那么这些数字代表的是什么,去哪里找这样的对应关系呢?

把这个文件也存到 assets 目录中,重命名为 labels.txt,现在 assets 目录应该是这样的:

关键的代码

现在相关的资源都导入到项目里面了,接下来我们写一点代码把模型和数据加载起来!

想一想我们需要做哪些工作:

加载模型 model.pb,获取一个 TensorFlowInferenceInterface 来进行后续操作。

获取到 TensorFlowInferenceInterface 的对象之后就可以在这个对象上面输入图片数据并获取识别结果了。夸张的讲人工智能科学家大牛们现在研究的就是如何实现这个接口,这里我们先不探究原理,只会用就好,以后的系列课程我们慢慢的去剖析机器学习的原理。

把数据集 labels.txt 的内容读到数组中,供查询识别结果中的物体名称;

至此,相信你应该了解了tensorflow框架,训练模型,测试数据是如何在一个应用程序中实现的。是不是很简单!下一课程让我们一起完成一个完整的apk程序,也会把完成的源代码后台发给大家!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171222G00JZ600?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券