在Android手机上体验Tensorflow Lite

简介

TensorFlow是非常流行的深度学习框架,Android则是非常流行的移动操作系统,二者均由Google主导开发。为了能在资源受限的硬件上运行深度学习程序,Google开发了TensorFlow的Lite版。与普通版本的TensorFlow不同,Lite版不要求很高的计算能力,因而能够运行于Android、iOS及Raspberry Pi等边缘设备。TensorFlow Lite目前只支持推断,还不能用于模型训练。

我上周购买了一台华为mate 20 X,正好可以用来体验TensorFlow Lite。为了能迅速得到可用的程序,我就直接采用了TensorFlow的示例代码。

安装

在Android上安装TensorFlow Lite的演示程序非常容易。

前提:

  1. 电脑上安装了Android Studio,推荐最新版。
  2. 其次,下载TensorFlow的完整代码,可以通过git下载,或者直接下载zip压缩包并解压。下载地址为https://github.com/tensorflow/tensorflow/
  3. 下载MobileNet模型。下载地址为https://storage.googleapis.com/download.tensorflow.org/models/tflite/mobilenet_v1_224_android_quant_2017_11_08.zip

准备好了,那就启动Android Studio,点击File菜单下的Open项,在打开的对话框中点击解压得到的TensorFlow文件夹,打开tensorflow\tensorflow\lite\java\demo文件夹。
Android Studio开始导入官方的demo程序。

由于该demo程序依赖的各种工具、库比较早,Android Studio会下载并安装相应版本的依赖。这个过程比较长,在我的电脑上一共用了30多分钟。

导入完毕后,将MobileNet模型解压,得到两个文件,labels.txt和mobilenet_quant_v1_224.tflite,并拖进Android Studio的app\src\main\assets文件夹。

接着就可以点击Run,将该示例程序编译并安装到手机上。

测试

昨晚成功将TensorFlow的示例程序安装到手机。经过昨晚及今天的几次简单测试,算是体验了一把深度学习。

该示例程序正确识别出了咖啡杯。

将显示器和键盘的组合识别为台式机。显示器是接在笔记本电脑上的,因此识别不是很准确,但这个不算错误。

但是,在识别猫的测试中,效果不佳。不知道是这只猫与众不同,还是MobileNet模型的训练不够。

总结

TensorFlow Lite在我这台搭载麒麟980、具有6 GB内存的手机上运行还是比较快的。可以配置线程数、模型种类(quant或float)和设备API类型(CPU或NNAPI)。识别率不是很高,但也可圈可点。

接下来我会读一遍该Demo的源码,以及MobileNet的论文。至于如何充分利用麒麟980的NPU计算能力,我还没有找到方法。

参考资料

本文主要参考了TensorFlow Lite的官方文档