【模型壓縮】輕量級深層神經網路MobileNets
論文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
官方代碼:https://github.com/tensorflow/models/blob/master/slim/nets/mobilenet_v1.md
非官方實現:https://github.com/shicai/MobileNet-Caffe
摘要
我們提供一類高效模型稱為MobileNets,用於移動和嵌入式視覺應用。 MobileNets是基於一個流線型的架構,它使用智能深度可分離的卷積來構建輕量級的深層神經網路。我們引入兩個簡單的全局超參數,有效地進行平衡延遲度和準確度。這兩個超參數允許模型構建者根據問題的約束條件,為其應用選擇合適大小的模型。我們進行了資源和精度權衡的擴展實驗,與ImageNet分類上的其他流行的網路模型相比,MobileNets表現出很強的性能。最後,我們展示了MobileNets在廣泛的應用場景中的有效性,包括物體檢測,細粒度分類,人臉屬性和大規模地理定位。
浩克白話解讀:本文是講模型壓縮的。基於移動設備計算力和內存有限的特點,推出了一種輕量級的深度神經網路,主要手段就是把卷積計算拆分。作者希望展示兩點,1,壓縮後的模型體量變小了很多;2,這種壓縮後的模型,準確率和之前沒有太大削弱。
主要賣點:
深度可分解卷積
MobileNets模型基於深度可分解的卷積,它可以將標準卷積分解成一個深度卷積和一個點卷積(1 × 1卷積核)。深度卷積將每個卷積核應用到每一個通道,而1 × 1卷積用來組合通道卷積的輸出。後文證明,這種分解可以有效減少計算量,降低模型大小。圖2說明了標準卷積是如何進行分解的。
接下來作者計算了這種分解可以多大程度上減少參數量。這裡首先指出論文中存在的一處筆誤,下圖標註部分寫錯了,正確應為 DG×DG×N 。
首先是標準卷積,假定輸入F的維度是 DF×DF×M ,經過標準卷積核K得到輸出G的維度 DG×DG×N ,卷積核參數量表示為 DK×DK×M×N 。如果計算代價也用數量表示,應該為 DK×DK×M×N×DF×DF 。
現在將卷積核進行分解,那麼按照上述計算公式,可得深度卷積的計算代價為 DK×DK×M×DF×DF ,點卷積的計算代價為 M×N×DF×DF 。
將二者進行比較,可得:
MobileNets使用了大量的3 × 3的卷積核,極大地減少了計算量(1/8到1/9之間),同時準確率下降的很少,相比其他的方法確有優勢。
模型結構和訓練
MobileNets結構建立在上述深度可分解卷積中(只有第一層是標準卷積)。該網路允許我們探索網路拓撲,找到一個適合的良好網路。其具體架構在表1說明。除了最後的全連接層,所有層後面跟了batchnorm和ReLU,最終輸入到softmax進行分類。圖3對比了標準卷積和分解卷積的結構,二者都附帶了BN和ReLU層。按照作者的計算方法,MobileNets總共28層(1 + 2 × 13 + 1 = 28)。
MobileNet將95%的計算時間用於有75%的參數的1×1卷積,作者採用tensorflow框架進行訓練,因為過擬合不太容易,所以數據增強和規則化用的不多。
寬度乘數
這裡介紹模型的第一個超參數,即寬度乘數 α 。為了構建更小和更少計算量的網路,作者引入了寬度乘數 α ,作用是改變輸入輸出通道數,減少特徵圖數量,讓網路變瘦。在 α 參數作用下,MobileNets某一層的計算量為:
DK×DK×αM×DF×DF+αM×αN×DF×DF
其中, α 取值是0~1,應用寬度乘數可以進一步減少計算量,大約有 α2 的優化空間。
實驗分析
模型選擇
表4中,同樣是MobileNets的架構,使用可分離卷積,精度值下降1%,而參數僅為1/7。
表5中,深且瘦的網路比淺且胖的網路準確率高3%。
模型收縮超參數
表6中,α 超參數減小的時候,模型準確率隨著模型的變瘦而下降。
表7中,ρ 超參數減小的時候,模型準確率隨著模型的解析度下降而下降。
表8中,在ImageNet數據集上,將MobileNets和VGG與GoogleNet做了對比。
目標檢測
這裡的實驗主要是將MobileNets作為目標檢測網路Faster R-CNN和SSD的基底(base network),和其他模型在COCO數據集上進行了對比。(為什麼不在VOC PASCAL上進行對比,應該更直觀吧?也不給一個幀率,不知道速度怎麼樣)
第二個超參數是解析度乘數 ρ ,解析度乘數用來改變輸入數據層的解析度,同樣也能減少參數。在 α 和 ρ 共同作用下,MobileNets某一層的計算量為:
DK×DK×αM×ρDF×ρDF+αM×αN×ρDF×ρDF
其中,ρ 是隱式參數,ρ 如果為{1,6/7,5/7,4/7},則對應輸入解析度為{224,192,160,128},ρ 參數的優化空間同樣是 ρ2 左右。 表3可以看出兩個超參數在減少網路參數的上的作用。
Conclusion
我們提出了一種基於深度可分離卷積的新型模型架構,稱為MobileNets。我們討論了一些可以得到高效模型的重要設計決策。然後,我們演示了如何通過使用widthmultiplier和resolutionmultiplier來構建更小更快的MobileNets,以減少合理的精度來減少模型尺寸和延遲。然後,我們將不同的MobileNets與流行的模型進行比較,展示了尺寸,速度和精度。我們最終通過展示MobileNet在應用於各種任務時的有效性來得出結論。作為幫助採用和探索MobileNets的下一步,我們計劃在TensorFlow中發布模型。
後記:
因為卷積拆分的思想和「Factorized Convolutional Neural Networks」這篇論文類似,有人說此篇論文有灌水嫌疑,我不認同。本文是典型的工業界論文的風格,主線清晰,敘述部分很樸素,直來直去,沒有用花哨的概念裝點或者故弄玄虛。而且代碼開源且健壯。論文的代碼基於tensorflow,實驗部分結合SSD等通用且時效性強的模型,具有很高的實用價值。
參考文獻
- MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
- mobilenet網路的理解 - BigCowPeking - CSDN博客
推薦閱讀:
TAG:深度學習DeepLearning | TensorFlow | 目標檢測 |