高陸川
(山東省日照第一中學(xué),山東日照,276000)
由于深度學(xué)習(xí)模型的訓(xùn)練需要極高的計(jì)算能力,所以深度學(xué)習(xí)框架大都是基于PC終端,一般都是基于具有GPU計(jì)算能力的服務(wù)器。但是近幾年,隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,再加之?dāng)y帶方便,移動(dòng)設(shè)備逐漸成為人們?nèi)粘I?、娛?lè)的主要平臺(tái)。目前,絕大部分移動(dòng)設(shè)備都是采用Online方式使用深度學(xué)習(xí)技術(shù)。Online方式會(huì)在移動(dòng)設(shè)備上先對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,然后再將數(shù)據(jù)發(fā)送到服務(wù)器進(jìn)行深度學(xué)習(xí)相關(guān)操作,最后將處理結(jié)果傳回移動(dòng)設(shè)備。這種方式在效率、隱私性、用戶體驗(yàn)等方面均存在一定問(wèn)題。為了解決這些問(wèn)題,谷歌、百度、騰訊等公司都在積極研發(fā)適用于移動(dòng)端的深度學(xué)習(xí)平臺(tái),希望能夠帶來(lái)更好的用戶體驗(yàn)。本文主要對(duì)谷歌公司研發(fā)的TensorFlow Lite深度學(xué)習(xí)平臺(tái)進(jìn)行深入的研究和分析。
要介紹TensorFlow Lite就必須先從TensorFlow說(shuō)起。TensorFlow是谷歌公司研發(fā)的一款人工智能學(xué)習(xí)開(kāi)源平臺(tái)。平臺(tái)的命名很直接地表明了人工智能神經(jīng)網(wǎng)絡(luò)的工作過(guò)程。Tensor代表張量,本質(zhì)就是n維的數(shù)組向量;Flow就是流,代表基于數(shù)據(jù)流圖的計(jì)算過(guò)程。TensorFlow平臺(tái)從發(fā)布至今,已經(jīng)更新到1.10版本,被廣泛地應(yīng)用在各個(gè)領(lǐng)域。而且由于其開(kāi)源特性,學(xué)生、研究員、工程師、發(fā)明家、創(chuàng)業(yè)者等各種行業(yè)從業(yè)者都可以方便地獲取并使用TensorFlow。
在移動(dòng)設(shè)備部署人工智能應(yīng)用是目前的一個(gè)趨勢(shì),谷歌公司旗下的Android系統(tǒng)是目前市場(chǎng)份額最大的移動(dòng)設(shè)備系統(tǒng),再加上谷歌公司TensorFlow平臺(tái)在人工智能領(lǐng)域的優(yōu)秀表現(xiàn),谷歌公司研發(fā)應(yīng)用于移動(dòng)設(shè)備的人工智能開(kāi)發(fā)平臺(tái)可以說(shuō)是水到渠成。在Google I/O 2017大會(huì)上,谷歌發(fā)布了TensorFlow Lite,可以幫助應(yīng)用開(kāi)發(fā)者便捷地在移動(dòng)設(shè)備上部署人工智能。TensorFlow Lite是TensorFlow的一個(gè)輕量級(jí)版本,針對(duì)移動(dòng)設(shè)備做了很多優(yōu)化和改造。谷歌表示TensorFlow Lite 仍處于“積極開(kāi)發(fā)”狀態(tài),目前僅有少量預(yù)訓(xùn)練AI模型面世。但是,因?yàn)锳ndroid系統(tǒng)的版本演進(jìn)是由谷歌一手控制的,所以長(zhǎng)遠(yuǎn)來(lái)看,TensorFlow Lite必定會(huì)得到Android系統(tǒng)層面的支持,從而達(dá)到更好的性能表現(xiàn)。
TensorFlow Lite主要面向移動(dòng)設(shè)備和嵌入式設(shè)備,主要特點(diǎn)有:(1)輕量級(jí):不同于TensorFlow,TensorFlow Lite具有輕量級(jí)的特點(diǎn),很多方面都進(jìn)行了優(yōu)化處理,例如模型大小。(2)跨平臺(tái):通過(guò)特殊的優(yōu)化設(shè)計(jì),使其可以在不同的平臺(tái)上運(yùn)行,目前已經(jīng)支持Android系統(tǒng)和 iOS系統(tǒng)。(3)快速:專為移動(dòng)設(shè)備進(jìn)行優(yōu)化,能夠大幅提升模型加載時(shí)間,支持硬件加速。
(1)TensorFlow Model
TensorFlow平臺(tái)訓(xùn)練好的模型,以文件的形式保存在磁盤中,其文件格式無(wú)法直接應(yīng)用到TensorFlow Lite平臺(tái)。
(2)TensorFlow Lite Converter
TensorFlow Lite轉(zhuǎn)換器,可以將TensorFlow平臺(tái)的模型轉(zhuǎn)換為適用于TensorFlow Lite的文件格式。
(3)TensorFlow Lite Model File
TensorFlow Lite模型文件。不同于TensorFlow模型,TensorFlow Lite的模型文件經(jīng)過(guò)了優(yōu)化和處理,能夠更好地適應(yīng)移動(dòng)設(shè)備的處理。TensorFlow Lite模型文件可以直接部署到Android App中進(jìn)行調(diào)用。
(4)Android App
Android App應(yīng)用平臺(tái),主要包括封裝好的Java API和C++ API、編譯器、安卓神經(jīng)網(wǎng)絡(luò) API。安卓神經(jīng)網(wǎng)絡(luò)API是谷歌官方提供的底層運(yùn)算接口,為高級(jí)機(jī)器學(xué)習(xí)框架(如TensorFlow Lite)提供基礎(chǔ)層功能,會(huì)直接集成到Android 8.1(以及更高版本)的系統(tǒng)中。
(5)iOS App
iOS App應(yīng)用平臺(tái),主要包括封裝好的C++ API和編譯器。
圖1 TensorFlow Lite平臺(tái)架構(gòu)
本文實(shí)驗(yàn)基于windows 10系統(tǒng),開(kāi)發(fā)工具使用的是Android App的官方開(kāi)發(fā)環(huán)境Android Studio[4],版本為3.0。另外,開(kāi)發(fā)環(huán)境需要滿足Android SDK 版本高于26,Android NDK版本高于14。
圖2 Android SDK設(shè)置示意圖
具體設(shè)置過(guò)程為:在Android Studio中選擇settings->Android SDK,然后切換到SDK Tools選項(xiàng)卡。這里要注意,Android Studio安裝時(shí)默認(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目錄下。接下來(lái),我們要下載預(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)行解壓,會(huì)得到模型文件mobilenet_v1_224.tflite和標(biāo)簽數(shù)據(jù)文件labes.txt,然后把這兩個(gè)文件復(fù)制到Demo工程的assets文件夾下。
一切就緒后,對(duì)整個(gè)Demo工程進(jìn)行編譯。如果SDK和NDK版本均符合要求,則會(huì)順利編譯成功。如果遇到編譯失敗,可以對(duì)照錯(cuò)誤日志進(jìn)行檢查和修復(fù)。編譯通過(guò)后,點(diǎn)擊“Run”安裝并運(yùn)行Demo。由于Demo運(yùn)行時(shí)需要調(diào)用相機(jī)功能,而模擬器無(wú)法滿足這一需求,所以我們采用Android真機(jī)進(jìn)行實(shí)驗(yàn)。將Android手機(jī)通過(guò)USB數(shù)據(jù)線連接到電腦上,然后在手機(jī)設(shè)置的開(kāi)發(fā)者選項(xiàng)中啟用“USB調(diào)試”。完成上述設(shè)置后,點(diǎn)擊“Run”并在彈出對(duì)話框中選擇對(duì)應(yīng)的Android設(shè)備,即可成功運(yùn)行Demo。
本文實(shí)驗(yàn)中Android真機(jī)選用的是小米Note3。TensorFlow Lite Demo展示的是物體識(shí)別功能,我們選取了10種常見(jiàn)物體,每種物體以隨機(jī)拍攝視角進(jìn)行3次識(shí)別,通過(guò)物體的識(shí)別準(zhǔn)確率和識(shí)別速度來(lái)衡量TensorFlow Lite的性能表現(xiàn)。識(shí)別過(guò)程界面如圖3所示。
圖3 不同視角識(shí)別過(guò)程界面
通過(guò)表1和表2數(shù)據(jù)可以看出,TensorFlow Lite對(duì)于生活中常見(jiàn)物品的識(shí)別,在識(shí)別準(zhǔn)確率和識(shí)別速度上均有不錯(cuò)的表現(xiàn),可以較好地滿足用戶需求并且具有良好的用戶體驗(yàn)。
表1 物體識(shí)別準(zhǔn)確率
表2 物體識(shí)別速度
本文主要對(duì)TensorFlow Lite開(kāi)發(fā)平臺(tái)進(jìn)行了研究分析,包括其框架結(jié)構(gòu)、平臺(tái)特點(diǎn)等。此外,本文還進(jìn)行了性能實(shí)驗(yàn)來(lái)評(píng)估TensorFlow Lite的性能表現(xiàn)。TensorFlow Lite自2017年11月發(fā)布至今,仍在不斷地完善和更新。正如谷歌官方所言,TensorFlow Lite 正處于“積極開(kāi)發(fā)”狀態(tài)。雖然目前只有少量幾個(gè)預(yù)訓(xùn)練AI模型面世,但我們有理由相信谷歌公司會(huì)“積極開(kāi)發(fā)”,發(fā)布功能更為完善、模型更加豐富的新版本TensorFlow Lite。