肖理想,羅 澤
1(中國科學院 計算機網絡信息中心,北京 100190)
2(中國科學院大學,北京 100049)
深度學習的快速發展,已經在許多領域取得了巨大的成功.一方面,卷積神經網絡(Convolutional Neural Networks,CNNs)[1,2]在圖像識別上取得了的巨大的進步,另一方面,移動手機當前已經成為人類日常生活的隨身攜帶之物,手機上的各式各樣的應用程序(Applications,APPs)能幫助人類進行更好的決策.目前,智能終端上基于卷積神經網絡模型的應用程序絕大多數都是采用“客戶端-服務端”模式,但是該模式不僅強依賴于網絡性能(如網速等)而且會導致用戶數據泄露.數據表明,我國部分地區還不能實現網絡的全覆蓋,這會對一些強依賴網絡的應用程序造成很大影響.例如,科研工作者工作在無網絡的野外、海洋等地區,這些強依賴網絡的應用程序就不能使用.因此,將卷積神經網絡遷移到移動智能終端上直接運行是必須的也是必要的,本文的目的就是將鳥類識別的卷積神經網絡模型遷移到安卓設備上,使其能夠在任務網絡情況下使用.
眾所周知,卷積神經網絡在圖像識別上取得了巨大的進展,從LeCun 等人提出LeNet 網絡模型,再到2012年AlexNet[3]在ImageNet 比賽上奪得冠軍,之后越來越多的科研機構和大型科技公司都在卷積神經網絡的研究上上投入巨大的精力.最近幾年,從VGGNets[4]、InceptionV3[5]再到ResNet 等網絡在圖像識別上的準確率逐步提高,已經超過人類的識別精度.但是這些都基于粗粒度分類和云端服務器的模型,由于移動設備的計算能力和存儲能力有限,基于移動設備的網絡模型一直發展緩慢.隨著谷歌在2017年提出一種基于移動設備的圖像識別的深度學習模型MobileNets[6,7],之后曠世科技進一步提出了ShuffleNet 網絡.這些基于移動設備網絡模型在計算和存儲能力有限的移動設備上取得不錯的效果,本文主要基于MobileNets 網絡進行模型融合探索和實驗.
細粒度識別是近年來圖像識別的熱門任務之一,細粒度識別的難點在于其圖像所屬類別的粒度更為精細,不容易定位圖像的局部敏感特征.許多學者都在嘗試提高細粒度識別的精度,Lin TY 等[8]人提出Bilinear CNN 模型進行細粒度識別,論文提出使用兩種CNN模型進行特征提取,之后使用外積組合得到局部敏感特征.Fu JL 等[9]人提出將注意力(attention)機制加入到圖像識別中,使用分類網絡和標注網絡交替訓練,提高分類準確率.
神經網絡模型遷移到移動設備上也有一些工作者做出過嘗試,例如,梁淑芬等人[10]將輕量級的LeNet 網絡應用到移動設備上進行身份證號碼的識別,南京航空航天大學的劉程等人[11]基于向量之間的比較將人臉識別程序遷移到移動設備上進行打卡試驗.上述兩種應用都取得的不錯的效果,但是LeNet 網絡處理能力有限很難應對大規模的圖像分類,尤其在細粒度圖像識別上表現的更差;基于向量比較的人臉識別在預測的時候主要是通過設置的關鍵點進行特征提取之后再進行向量的比較.
本文設計了一個基于卷積神經網絡的鳥類識別系統,使用基于移動設備的卷積神經網絡模型進行模型融合.考慮到細粒度識別[12,13]的特點,使用不同特征的加權平均進行訓練,為了得到圖像的局部特征使用雙線型模型融合,分析了大量的圖像并提出使用物理裁剪的方式來近似替代標注工作,融合多圖像特征進行訓練.最后將實驗之后的模型,遷移到安卓設備上運行.
系統的整體架構如圖1所示.系統采用功能模塊化進行結構設計,降低系統的耦合度,使得系統設計、調試和維護等操作簡單化,具有更多的靈活性,使得系統能夠同時支持在線和離線兩種鑒定方式.本文的功能模塊化設計不僅考慮到整體的耦合性,而且可以在系統層面進行優化加速,系統通過輪詢當前設備的網絡狀況,根據網絡狀況提前預加載資源或者釋放資源來提高系統的運行效率.

圖1 系統結構圖
圖1中分別用實線和虛線表示離線和在線兩種鑒定方式,可以看到這兩種方式都通過數據處理模塊進行調用,這樣可以根據用戶的網絡情況自動調用對應的服務,給用戶更好的體驗效果.當系統檢測到移動設備上的網絡狀況很差的時候,自動加載數據資源,為用戶接下來的離線鑒定做好準備,系統通過網絡狀態輪詢的方式,當系統的網絡狀態良好時候,釋放加載的資源,降低資源浪費率.系統默認根據網絡情況選擇選擇不同的服務.具體的優化結構如圖2所示.

圖2 系統輪詢優化
Tensorflow[14]是一個基于數據流編程(dataflow programming)的符號數學系統,被廣泛應用于各類機器學習(machine learning)算法的編程實現,是目前使用最廣泛的深度學習框架.TensorFlow Lite 是Tensor Flow 針對移動和嵌入式設備的輕量級解決方案.它使基于設備的機器學習模型預測具有低延遲和低功耗.TensorFlow Lite 還支持硬件加速的Android 神經網絡應用程序編程接口(Application Programming Interface,API).Keras 是一個高層神經網絡的API,Keras 由純Python 編寫而成并基于TensorFlow、Theano和CNTK 后端.由于Keras 使用簡單快速,能夠快速的開發深度學習模型,受到了很多科研工作者的青睞.
本文使用遷移學習[15,16]訓練模型,基于ImageNet的權重進行預訓練,之后進行微調.基于遷移學習的模型訓練方式一般有兩種,第一,將預訓練的模型作為圖片的特征提取器,將整個任務作為一個多分類問題;第二,先訓練頂層網絡參數,微調原有網絡部分層的參數.詳細信息如表1所示.

表1 遷移學習方式
為了判斷遷移學習模型提取特征的有效性,本文通過PCA[17]降維進行特征可視化,隨機選擇三類鳥進行二維平面的顯示,顯示結果如圖3所示.從圖3中可以看出在二維平面上三類鳥的散點基本分散,可以認為模型提取的特征是有效的特征.

圖3 遷移學習特征降維圖
本系統的數據主要包括鳥類的基本信息和每個鳥的代表圖.由于大小的限制,移動設備上不存儲鳥類的圖集和聲音數據.對于數據庫中所有的鳥,選擇一個最具代表性的圖片進行壓縮至適中的縮略圖來代表這個鳥進行顯示.本文提取數據庫中的基本信息并存儲在Json 文件中,將每個鳥的縮略圖重命名為其對應的id.鳥類的基本信息如下:

本文使用遷移學習訓練模型,將卷積神經網絡模型作為特征提取器,加權平均融合采用一主一輔的策略進行模型融合,主模型特征的權重是1 -a,輔模型特征的權重是1 -a.訓練時特征的計算公式如下:

訓練完成后需要保存主模型和訓練好的全連接層,以及輔模型在訓練數據上所有特征的平均值.測試的時候的使用特征的計算公式如下:

其中,MainVec表示主模型提取的特征向量,AssistVec是輔模型提取的特征向量,AssistAvgVec是輔模型在訓練數據上的特征平均值向量.加權平均的融合方式可以從方差的角度進行分析,可以認為是在主模型特征中加入了部分擾動,在圖像特征中加入擾動就相當于在圖像中加入噪聲,這種噪聲可以認為測試數據是模糊的、缺失的低質量圖像.這種融合方式的優點是僅僅需要保存主模型和輔模型在訓練數據上的平均特征向量,可以很好的預測低質量的圖像.缺點是超參數a不好確定,在實際使用中可以通過交叉驗證得到最優的超參數.模型結構如圖4所示.

圖4 加權平均融合
加權平均融合是特征的加權平均,從結構來看,這是雙線型模型的一種特例,雙線型融合的策略是使用兩個卷積神經模型進行特征提取,之后進行叉乘操作得到局部敏感特征.由于叉乘之后的數據維度過高,本文使用PCA 進行降維處理,模型的架構如圖5所示.

圖5 雙線型模型訓練方式
雙線型融合模型的優點是使用叉乘擴充特征,有可能得到局部敏感特征,加權平均的方式關注的是低質量的圖像,雙線型模型更關注細粒度分類的本身特點,希望找到更精細的識別特征,提升模型的準確率.雙線型融合的缺點是PCA 的降維的參數不好設置,考慮到叉乘之后的維度不能太大,建議PCA 的維度設置在[20,30]之間,同時可以使用交叉驗證的方式,選擇最優的PCA 維度.另外一個缺點是雙線型融合需要保存兩個模型,這使得模型的大小擴大一倍,除此之外,由于模型中使用了PCA 降維,使得整個模型不是端到端的模式.
雙線型模型只考慮了提高細粒度鳥類識別的精度問題,模型卻擴大一倍.通過結構圖可以得到,雙線型融合是對同一圖像使用不同的特征提取方式,目的是得到更精細的分類特征.對于細粒度識別問題,文獻[9]中指出可以直接關注局部位置例如鳥喙和翅膀等,例如使用YOLO 等模型先標記出鳥喙和翅膀等位置,裁剪出來局部位置,使用同一個模型分別提取原始圖像和局部位置圖像特征.考慮到移動設備的存儲能力和計算能力,不能直接使用YOLO 等類似模型.本文提出了一種近似的物理裁剪的替代方法,如果使用隨機標記裁剪的方式,由于具有很大隨機性的會對模型有很大的擾動.本文分析了大量鳥的圖像和用戶使用智能手機的拍照習慣,發現一般情況下鳥都會在圖片的中心,因此本文使用中心裁剪替代隨機裁剪.我們將這種融合方式叫做多圖片單模型融合.多圖片單模型融合的優點是簡單,相對雙線型融合網絡模型沒有增大,適合在移動設備使用.缺點是,如果鳥的位置不在圖像的中心,會得到一個較差的結果.具體的模型結構如圖6所示.

圖6 多圖片單模型融合
本文的實驗數據是100 類鳥,訓練數據共有36,782 張鳥的圖像,測試數據和驗證數據每類鳥各有20 張圖像.本文使用兩種測試環境分別是臺式機測試環境和安卓手機測試環境,臺式機測試環境具體的參數是:Ubuntu16.04LTS 操作系統,8 核Intel Core i7 處理器,12 GB 內存.安卓測試環境具體參數是:Android 5.1 操作系統,聯發科8 核處理器,2 GB 運行內存.
加權平均融合有兩個難點,分別是模型的選擇和超參數a的設置,本文主模型選擇使用MobileNet 卷積神經網絡模型,輔模型選擇InceptionV3 卷積模型和Xception 卷積模型進行對比實驗,而且對比了超參數a=0.9和a=0.95的實驗結果.具體實驗結果如表2所示.

表2 加權平均融合實驗結果
從表中可以看出,當超參數a=0.95相 比a=0.9,融合模型的準確率更高.從方差的角度來看,輔模型的權重越大,相當于加入的擾動方差越大,對模型的結果影響較大,本文的測試數據和訓練數據都是高質量的圖像,因此輔模型的權重越小,更能得到好的結果.目前,智能設備的拍攝的圖像質量越來越高,因此建議使用較小的輔模型權重.加權平均的融合方式比單模型MobileNet 的準確率更低的原因是因為加權平均融合加入了方差擾動,當圖片模糊的時候會取得更好的結果,但是測試數據集中的圖片質量較高,加權只是增加了擾動,不能得到更好的結果.
加權平均融合對模糊的圖像更友好,從結構上來看,加權平均模型是雙線型模型的一種特例.加權平均融合區分主輔模型,雙線型融合沒有模型的主次之分,同時使用兩種模型進行特征提取.本文選擇基于移動設備的網絡模型 MobileNet和MobileNetV2 作為雙線型融合方法的基特征提取器.PCA 的維度選擇了20和25 進行實驗,為了更好的對比實驗結果,本文還選擇了MobileNet和Xception 的雙線型融合進行對比實驗.實驗結果如表3所示.

表3 雙線型融合實驗結果
上文提到可以通過交叉驗證得到最優的PCA 維度,這樣雖然可以得到很好的結果,但是訓練速度卻很慢.本文給出一種簡單的PCA 維度的選擇方法,可以通過可視化叉乘之后的特征來判斷選擇何種維度進行降維,圖7從左到右依次是原圖、PCA 維度等于20 的熱力圖和PCA 維度等于25 的熱力圖.從圖7中的熱力圖可以看出PCA 維度等于20 維的時候,特征更關注鳥喙的位置,可以認為得到了更好的敏感特征.
雙線型融合的優點在于能夠得到局部敏感特征,缺點是需要保存兩個模型.多圖片模型融合基于Bounding Box 思想,使用物理方式裁剪局部敏感位置,是一種基于圖像的雙線型融合方式.本文使用MobileNetV2 模型進行對比實驗,分別對比了隨機裁剪和中心裁剪兩種裁剪方式,設置裁剪框的大小是原圖的1/2.實驗結果如表4所示.

圖7 PCA 維度熱力圖

表4 多圖片單模型融合實驗結果
從表4中可以看出中心裁剪得到的結果更好,主要因為隨機裁剪具有很大地不穩定性,并且訓練和測試數據中鳥一般出現在圖像的中心位置,這也更符合用戶的習慣,相對隨機裁剪的方式更穩定.本文給出了中心裁剪、隨機裁剪和原圖叉乘之后的熱力圖結果,圖8從左到右依次是原圖裁剪、中心裁剪的熱力圖和隨機裁剪的熱力圖.從圖8可以看出,中心裁剪的方式更多的關注翅膀和頭的位置,得到了相對較好的局部特征.
3種不同的融合方式,各有其優缺點.加權平均融合對模糊圖像有很好的表現,但對于高清圖像誤差較大;雙線型融合可以提取圖像的局部敏感特征便于細粒度識別,但對于移動設備而言它的模型相對較大;多圖片單模型是一種基于圖像的雙線型模型,在提取敏感特征的同時不會增加模型大小,是一種較好的算法模型,缺點是裁剪方式和圖片有很大關系.表5給出3 種融合方式最優實驗結果的對比結果.

圖8 裁剪方式熱力圖

表5 融合方式最優實驗結果對比
本文通過對比上述所有融合方法的實驗結果,綜合考慮移動設備的計算能力和存儲能力以及模型融合的準確率,系統最后選擇了基于多圖片單模型融合的方式,使用這種方式訓練得到MobileNetV2 模型投入使用.由于多圖片單模型融合對圖像中鳥的位置很敏感,為了提高APP 的友好性,系統也提供了原始Mobile-Net 的模型供用戶使用.
用戶進入主界面的時,系統自動進行網絡狀態檢測,如果檢測到沒有網絡或者網絡狀態很差,就將模型和數據文件提前加載到內存中,當用戶使用本地模型進行測試的時候,直接使用加載好的模型和鳥類的基本信息,可以直接進行預測.網絡狀況的檢測是輪詢進行的,當檢測到網絡存在時,會自動調用云端的模型,這時就釋放已經加載好的資源,減少內存使用.離線模型的運行結果如圖9所示.

圖9 系統測試圖
本文構建了一個基于安卓平臺和卷積神經網絡的離線鳥類識別系統,提出了基于細粒度識別的三種模型融合方式,分別使用加權平均融合、雙線型融合和多圖片單模型融合的方法在鳥類數據上進行了實驗.本文訓練的模型直接運行在移動設備上,不依賴任何外部的計算資源和存儲資源.為了進一步提高鳥類識別的準確率,采用融合思想進行訓練模型.從整體來看,本文使用遷移學習降低模型訓練的時間,得到相對較優的算法模型,并且在移動設備上取得了預期的效果.本文雖然取得了不錯的效果,但是將深度學習模型遷移到移動設備[18]上還有很長的路要走.為了在計算和存儲能力都有限的移動設備上運行深度學習模型還需要進一步的研究,例如提出更優的適合移動設備的網絡結構,提高移動設備的計算能力和儲存能力.