简介
TensorFlow是非常流行的深度学习框架,Android则是非常流行的移动操作系统,二者均由Google主导开发。为了能在资源受限的硬件上运行深度学习程序,Google开发了TensorFlow的Lite版。与普通版本的TensorFlow不同,Lite版不要求很高的计算能力,因而能够运行于Android、iOS及Raspberry Pi等边缘设备。TensorFlow Lite目前只支持推断,还不能用于模型训练。
我上周购买了一台华为mate 20 X,正好可以用来体验TensorFlow Lite。为了能迅速得到可用的程序,我就直接采用了TensorFlow的示例代码。
安装
在Android上安装TensorFlow Lite的演示程序非常容易。
前提:
- 电脑上安装了Android Studio,推荐最新版。
- 其次,下载TensorFlow的完整代码,可以通过git下载,或者直接下载zip压缩包并解压。下载地址为https://github.com/tensorflow/tensorflow/。
- 下载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计算能力,我还没有找到方法。