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