3

Android Things 是否支持 TensorFlow?TensorFlow Android 示例可以移植到 Android Things 上运行吗?如果是这样,最简单的方法是什么?

4

1 回答 1

3

简短的回答:是的,您确实可以在运行 Android Things(例如 Raspberry Pi 3)的嵌入式设备上运行 TensorFlow。我们已将 TensorFlow 图像分类应用程序移植到 Android Things。它位于:https ://github.com/androidthings/sample-tensorflow-imageclassifier 。

长答案:为了运行 TensorFlow,您首先需要构建模型图并针对大型输入数据集运行训练。完成后,您可以根据经过训练的模型运行推理以做出明智的决策。训练的第一部分是资源密集型的,通常是预先完成的,而推理部分相对较轻。它是已移植到运行 Android Things 的设备上的推理部分。

下面总结了将 TensorFlow 集成到 Android Things 项目时需要做的事情:

  • 首先,将 TensorFlow Android Inference 库文件添加到您的项目中:Tensorflow-Android-Inference-alpha-debug.aar

  • 接下来,在应用程序的 build.gradle 文件中添加一个依赖项,如下所示: compile(name: 'Tensorflow-Android-Inference-alpha-debug', ext: 'aar')

要利用 TensorFlow Android Inference 库,您需要实例化一个 org.tensorflow.contrib.android.TensorFlowInferenceInterface 实例以公开以下方法:

  • initializeTensorFlow:使用模型图作为输入初始化 TensorFlow 对象
  • fillNodeFloat:将输入数据复制到 TensorFlow 输入数组中
  • runInference:运行推理并将结果保存在 TensorFlow 输出数组中
  • readNodeFloat:从 TensorFlow 输出数组中读取并保存到您自己的数组中

查看图像分类器示例的 TensorFlowImageClassifier.java 中的实现,了解如何将输入传递给 TensorFlow、运行推理,然后从 TensorFlow 中提取输出标签。例如,在我们的图像分类示例中,当显示狗的图像时,我们的应用程序可以检测出狗的品种。

示例中的模型图是使用 Google Inception V3 TensorFlow 模型构建的,其中包含来自 ImageNet 的 120 万张图像的训练集。如果您想构建自己的模型图,请务必在分类器实现中相应地更新模型文件、标签文件和输入/输出名称。

简而言之,上述使用 TensorFlow Android 推理库作为 gradle 依赖项的方法提供了一种快速简便的方法,可以将 TensorFlow 核心功能添加到任何 Android 项目中,甚至是复杂项目,例如具有本机代码并需要 NDK 集成的 TensorFlow Android 示例。这种方法还将主机平台扩展到那些目前没有完全支持 Bazel 的平台,如 Windows。

于 2017-03-01T00:03:48.243 回答