高陆川
(山东省日照第一中学,山东日照,276000)
由于深度学习模型的训练需要极高的计算能力,所以深度学习框架大都是基于PC终端,一般都是基于具有GPU计算能力的服务器。但是近几年,随着移动互联网的快速发展,再加之携带方便,移动设备逐渐成为人们日常生活、娱乐的主要平台。目前,绝大部分移动设备都是采用Online方式使用深度学习技术。Online方式会在移动设备上先对数据进行预处理,然后再将数据发送到服务器进行深度学习相关操作,最后将处理结果传回移动设备。这种方式在效率、隐私性、用户体验等方面均存在一定问题。为了解决这些问题,谷歌、百度、腾讯等公司都在积极研发适用于移动端的深度学习平台,希望能够带来更好的用户体验。本文主要对谷歌公司研发的TensorFlow Lite深度学习平台进行深入的研究和分析。
要介绍TensorFlow Lite就必须先从TensorFlow说起。TensorFlow是谷歌公司研发的一款人工智能学习开源平台。平台的命名很直接地表明了人工智能神经网络的工作过程。Tensor代表张量,本质就是n维的数组向量;Flow就是流,代表基于数据流图的计算过程。TensorFlow平台从发布至今,已经更新到1.10版本,被广泛地应用在各个领域。而且由于其开源特性,学生、研究员、工程师、发明家、创业者等各种行业从业者都可以方便地获取并使用TensorFlow。
在移动设备部署人工智能应用是目前的一个趋势,谷歌公司旗下的Android系统是目前市场份额最大的移动设备系统,再加上谷歌公司TensorFlow平台在人工智能领域的优秀表现,谷歌公司研发应用于移动设备的人工智能开发平台可以说是水到渠成。在Google I/O 2017大会上,谷歌发布了TensorFlow Lite,可以帮助应用开发者便捷地在移动设备上部署人工智能。TensorFlow Lite是TensorFlow的一个轻量级版本,针对移动设备做了很多优化和改造。谷歌表示TensorFlow Lite 仍处于“积极开发”状态,目前仅有少量预训练AI模型面世。但是,因为Android系统的版本演进是由谷歌一手控制的,所以长远来看,TensorFlow Lite必定会得到Android系统层面的支持,从而达到更好的性能表现。
TensorFlow Lite主要面向移动设备和嵌入式设备,主要特点有:(1)轻量级:不同于TensorFlow,TensorFlow Lite具有轻量级的特点,很多方面都进行了优化处理,例如模型大小。(2)跨平台:通过特殊的优化设计,使其可以在不同的平台上运行,目前已经支持Android系统和 iOS系统。(3)快速:专为移动设备进行优化,能够大幅提升模型加载时间,支持硬件加速。
(1)TensorFlow Model
TensorFlow平台训练好的模型,以文件的形式保存在磁盘中,其文件格式无法直接应用到TensorFlow Lite平台。
(2)TensorFlow Lite Converter
TensorFlow Lite转换器,可以将TensorFlow平台的模型转换为适用于TensorFlow Lite的文件格式。
(3)TensorFlow Lite Model File
TensorFlow Lite模型文件。不同于TensorFlow模型,TensorFlow Lite的模型文件经过了优化和处理,能够更好地适应移动设备的处理。TensorFlow Lite模型文件可以直接部署到Android App中进行调用。
(4)Android App
Android App应用平台,主要包括封装好的Java API和C++ API、编译器、安卓神经网络 API。安卓神经网络API是谷歌官方提供的底层运算接口,为高级机器学习框架(如TensorFlow Lite)提供基础层功能,会直接集成到Android 8.1(以及更高版本)的系统中。
(5)iOS App
iOS App应用平台,主要包括封装好的C++ API和编译器。
图1 TensorFlow Lite平台架构
本文实验基于windows 10系统,开发工具使用的是Android App的官方开发环境Android Studio[4],版本为3.0。另外,开发环境需要满足Android SDK 版本高于26,Android NDK版本高于14。
图2 Android SDK设置示意图
具体设置过程为:在Android Studio中选择settings->Android SDK,然后切换到SDK Tools选项卡。这里要注意,Android Studio安装时默认是不安装NDK的,所以此处要仔细查看Android SDK和NDK是否已经安装以及版本是否满足要求,如果不符合要求,要勾选正确版本进行安装,安装完成后,重启Android Studio即可。如图2所示。
首先,我们从https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite克隆Demo的源代码到本地,然后在Android Studio中导入官方提供的Demo。Demo文件夹位于java目录下。接下来,我们要下载预训练好的TensorFlow Lite 模型和标签数据。官方提供的下载地址为:https://storage.googleapis.com/download.tensorflow.org/models/tflite/mobilenet_v1_224_android_quant_2017_11_08.zip。将下载后的压缩文件进行解压,会得到模型文件mobilenet_v1_224.tflite和标签数据文件labes.txt,然后把这两个文件复制到Demo工程的assets文件夹下。
一切就绪后,对整个Demo工程进行编译。如果SDK和NDK版本均符合要求,则会顺利编译成功。如果遇到编译失败,可以对照错误日志进行检查和修复。编译通过后,点击“Run”安装并运行Demo。由于Demo运行时需要调用相机功能,而模拟器无法满足这一需求,所以我们采用Android真机进行实验。将Android手机通过USB数据线连接到电脑上,然后在手机设置的开发者选项中启用“USB调试”。完成上述设置后,点击“Run”并在弹出对话框中选择对应的Android设备,即可成功运行Demo。
本文实验中Android真机选用的是小米Note3。TensorFlow Lite Demo展示的是物体识别功能,我们选取了10种常见物体,每种物体以随机拍摄视角进行3次识别,通过物体的识别准确率和识别速度来衡量TensorFlow Lite的性能表现。识别过程界面如图3所示。
图3 不同视角识别过程界面
通过表1和表2数据可以看出,TensorFlow Lite对于生活中常见物品的识别,在识别准确率和识别速度上均有不错的表现,可以较好地满足用户需求并且具有良好的用户体验。
表1 物体识别准确率
表2 物体识别速度
本文主要对TensorFlow Lite开发平台进行了研究分析,包括其框架结构、平台特点等。此外,本文还进行了性能实验来评估TensorFlow Lite的性能表现。TensorFlow Lite自2017年11月发布至今,仍在不断地完善和更新。正如谷歌官方所言,TensorFlow Lite 正处于“积极开发”状态。虽然目前只有少量几个预训练AI模型面世,但我们有理由相信谷歌公司会“积极开发”,发布功能更为完善、模型更加丰富的新版本TensorFlow Lite。