高陸川
(山東省日照第一中學(xué),山東日照,276000)
由于深度學(xué)習(xí)模型的訓(xùn)練需要極高的計算能力,所以深度學(xué)習(xí)框架大都是基于PC終端,一般都是基于具有GPU計算能力的服務(wù)器。但是近幾年,隨著移動互聯(lián)網(wǎng)的快速發(fā)展,再加之?dāng)y帶方便,移動設(shè)備逐漸成為人們?nèi)粘I睢蕵返闹饕脚_。目前,絕大部分移動設(shè)備都是采用Online方式使用深度學(xué)習(xí)技術(shù)。Online方式會在移動設(shè)備上先對數(shù)據(jù)進(jìn)行預(yù)處理,然后再將數(shù)據(jù)發(fā)送到服務(wù)器進(jìn)行深度學(xué)習(xí)相關(guān)操作,最后將處理結(jié)果傳回移動設(shè)備。這種方式在效率、隱私性、用戶體驗(yàn)等方面均存在一定問題。為了解決這些問題,谷歌、百度、騰訊等公司都在積極研發(fā)適用于移動端的深度學(xué)習(xí)平臺,希望能夠帶來更好的用戶體驗(yàn)。本文主要對谷歌公司研發(fā)的TensorFlow Lite深度學(xué)習(xí)平臺進(jìn)行深入的研究和分析。
要介紹TensorFlow Lite就必須先從TensorFlow說起。TensorFlow是谷歌公司研發(fā)的一款人工智能學(xué)習(xí)開源平臺。平臺的命名很直接地表明了人工智能神經(jīng)網(wǎng)絡(luò)的工作過程。Tensor代表張量,本質(zhì)就是n維的數(shù)組向量;Flow就是流,代表基于數(shù)據(jù)流圖的計算過程。TensorFlow平臺從發(fā)布至今,已經(jīng)更新到1.10版本,被廣泛地應(yīng)用在各個領(lǐng)域。而且由于其開源特性,學(xué)生、研究員、工程師、發(fā)明家、創(chuàng)業(yè)者等各種行業(yè)從業(yè)者都可以方便地獲取并使用TensorFlow。
在移動設(shè)備部署人工智能應(yīng)用是目前的一個趨勢,谷歌公司旗下的Android系統(tǒng)是目前市場份額最大的移動設(shè)備系統(tǒng),再加上谷歌公司TensorFlow平臺在人工智能領(lǐng)域的優(yōu)秀表現(xiàn),谷歌公司研發(fā)應(yīng)用于移動設(shè)備的人工智能開發(fā)平臺可以說是水到渠成。在Google I/O 2017大會上,谷歌發(fā)布了TensorFlow Lite,可以幫助應(yīng)用開發(fā)者便捷地在移動設(shè)備上部署人工智能。TensorFlow Lite是TensorFlow的一個輕量級版本,針對移動設(shè)備做了很多優(yōu)化和改造。谷歌表示TensorFlow Lite 仍處于“積極開發(fā)”狀態(tài),目前僅有少量預(yù)訓(xùn)練AI模型面世。但是,因?yàn)锳ndroid系統(tǒng)的版本演進(jìn)是由谷歌一手控制的,所以長遠(yuǎn)來看,TensorFlow Lite必定會得到Android系統(tǒng)層面的支持,從而達(dá)到更好的性能表現(xiàn)。
TensorFlow Lite主要面向移動設(shè)備和嵌入式設(shè)備,主要特點(diǎn)有:(1)輕量級:不同于TensorFlow,TensorFlow Lite具有輕量級的特點(diǎn),很多方面都進(jìn)行了優(yōu)化處理,例如模型大小。(2)跨平臺:通過特殊的優(yōu)化設(shè)計,使其可以在不同的平臺上運(yùn)行,目前已經(jīng)支持Android系統(tǒng)和 iOS系統(tǒng)。(3)快速:專為移動設(shè)備進(jìn)行優(yōu)化,能夠大幅提升模型加載時間,支持硬件加速。
(1)TensorFlow Model
TensorFlow平臺訓(xùn)練好的模型,以文件的形式保存在磁盤中,其文件格式無法直接應(yīng)用到TensorFlow Lite平臺。
(2)TensorFlow Lite Converter
TensorFlow Lite轉(zhuǎn)換器,可以將TensorFlow平臺的模型轉(zhuǎn)換為適用于TensorFlow Lite的文件格式。
(3)TensorFlow Lite Model File
TensorFlow Lite模型文件。不同于TensorFlow模型,TensorFlow Lite的模型文件經(jīng)過了優(yōu)化和處理,能夠更好地適應(yīng)移動設(shè)備的處理。TensorFlow Lite模型文件可以直接部署到Android App中進(jìn)行調(diào)用。
(4)Android App
Android App應(yīng)用平臺,主要包括封裝好的Java API和C++ API、編譯器、安卓神經(jīng)網(wǎng)絡(luò) API。安卓神經(jīng)網(wǎng)絡(luò)API是谷歌官方提供的底層運(yùn)算接口,為高級機(jī)器學(xué)習(xí)框架(如TensorFlow Lite)提供基礎(chǔ)層功能,會直接集成到Android 8.1(以及更高版本)的系統(tǒng)中。
(5)iOS App
iOS App應(yīng)用平臺,主要包括封裝好的C++ API和編譯器。

圖1 TensorFlow Lite平臺架構(gòu)
本文實(shí)驗(yàn)基于windows 10系統(tǒng),開發(fā)工具使用的是Android App的官方開發(fā)環(huán)境Android Studio[4],版本為3.0。另外,開發(fā)環(huán)境需要滿足Android SDK 版本高于26,Android NDK版本高于14。

圖2 Android SDK設(shè)置示意圖
具體設(shè)置過程為:在Android Studio中選擇settings->Android SDK,然后切換到SDK Tools選項(xiàng)卡。這里要注意,Android Studio安裝時默認(rèn)是不安裝NDK的,所以此處要仔細(xì)查看Android SDK和NDK是否已經(jīng)安裝以及版本是否滿足要求,如果不符合要求,要勾選正確版本進(jìn)行安裝,安裝完成后,重啟Android Studio即可。如圖2所示。
首先,我們從https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/lite克隆Demo的源代碼到本地,然后在Android Studio中導(dǎo)入官方提供的Demo。Demo文件夾位于java目錄下。接下來,我們要下載預(yù)訓(xùn)練好的TensorFlow Lite 模型和標(biāo)簽數(shù)據(jù)。官方提供的下載地址為:https://storage.googleapis.com/download.tensorflow.org/models/tflite/mobilenet_v1_224_android_quant_2017_11_08.zip。將下載后的壓縮文件進(jìn)行解壓,會得到模型文件mobilenet_v1_224.tflite和標(biāo)簽數(shù)據(jù)文件labes.txt,然后把這兩個文件復(fù)制到Demo工程的assets文件夾下。
一切就緒后,對整個Demo工程進(jìn)行編譯。如果SDK和NDK版本均符合要求,則會順利編譯成功。如果遇到編譯失敗,可以對照錯誤日志進(jìn)行檢查和修復(fù)。編譯通過后,點(diǎn)擊“Run”安裝并運(yùn)行Demo。由于Demo運(yùn)行時需要調(diào)用相機(jī)功能,而模擬器無法滿足這一需求,所以我們采用Android真機(jī)進(jìn)行實(shí)驗(yàn)。將Android手機(jī)通過USB數(shù)據(jù)線連接到電腦上,然后在手機(jī)設(shè)置的開發(fā)者選項(xiàng)中啟用“USB調(diào)試”。完成上述設(shè)置后,點(diǎn)擊“Run”并在彈出對話框中選擇對應(yīng)的Android設(shè)備,即可成功運(yùn)行Demo。
本文實(shí)驗(yàn)中Android真機(jī)選用的是小米Note3。TensorFlow Lite Demo展示的是物體識別功能,我們選取了10種常見物體,每種物體以隨機(jī)拍攝視角進(jìn)行3次識別,通過物體的識別準(zhǔn)確率和識別速度來衡量TensorFlow Lite的性能表現(xiàn)。識別過程界面如圖3所示。

圖3 不同視角識別過程界面
通過表1和表2數(shù)據(jù)可以看出,TensorFlow Lite對于生活中常見物品的識別,在識別準(zhǔn)確率和識別速度上均有不錯的表現(xiàn),可以較好地滿足用戶需求并且具有良好的用戶體驗(yàn)。

表1 物體識別準(zhǔn)確率

表2 物體識別速度
本文主要對TensorFlow Lite開發(fā)平臺進(jìn)行了研究分析,包括其框架結(jié)構(gòu)、平臺特點(diǎn)等。此外,本文還進(jìn)行了性能實(shí)驗(yàn)來評估TensorFlow Lite的性能表現(xiàn)。TensorFlow Lite自2017年11月發(fā)布至今,仍在不斷地完善和更新。正如谷歌官方所言,TensorFlow Lite 正處于“積極開發(fā)”狀態(tài)。雖然目前只有少量幾個預(yù)訓(xùn)練AI模型面世,但我們有理由相信谷歌公司會“積極開發(fā)”,發(fā)布功能更為完善、模型更加豐富的新版本TensorFlow Lite。