論文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNet是爲移動和嵌入式設備提出的輕量級網絡模型。論文驗證了模型在其他領域(對象檢測,人臉識別,大規模地理定位等)使用的有效性。本文爲閱讀學習MobileNet論文時的要點記錄。
深度可分離卷積(Depthwise separable convolution)
標準卷積
圖(a)是標準卷積。輸入特徵圖尺寸爲,卷積核尺寸爲,輸出特徵圖尺寸爲,可計算出標準卷積的參數量爲。
深度卷積(depthwise convolution)
圖(b)代表深度卷積。輸入特徵圖尺寸爲,卷積核尺寸爲,輸出特徵圖尺寸爲,即深度卷積調整了feature map的大小,沒有改變通道數。實際上相當於分組卷積。深度卷積的參數量爲。
逐點卷積(pointwise convolution)
圖©代表逐點卷積,是一個的卷積。輸入特徵圖是(b)圖中的操作輸出的特徵圖,尺寸爲,卷積核尺寸爲,輸出特徵圖尺寸爲。逐點卷積的參數量爲。
深度可分離卷積
深度可分離卷積將標準卷積分解成深度卷積(depthwise convolution)和逐點卷積(pointwise convolution)。那麼深度可分離卷積操作的參數量爲深度卷積與逐點卷積的參數量之和:。所以深度可分離卷積參數量是標準卷積的。因此相比於標準卷積,深度可分離卷積可大幅度降低參數量和計算量。
網絡結構與訓練
MobileNet的模型結構如下:
如上圖所示,由於深度可分離卷積將原本的一個標準卷積層替換爲一個深度卷積層和一個逐點卷積層,相當於一個卷積層變成了兩個卷積層,那麼對應的BN和ReLU也需要在每一個卷積層各進行一次。
深度學習中的卷積通常是用通用矩陣乘(GEMM)來實現的。需要先通過im2col對其在內存中重排序,才能使用GEMM。im2col可以將feature map和卷積核展成列(行)向量,以方便後續的矩陣乘法計算。
我們把一個卷積覈對應的值展開,到底應該展開爲行還是列呢?卷積核的滑動先行後列還是相反?區別在哪?
這其實主要取決於我們使用的框架訪存的方式。計算機一次性讀取相近的內存是最快的,尤其是當需要把數據送到GPU去計算的時候,這樣可以節省訪存的時間,以達到加速的目的。不同框架的訪存機制不一樣,所以會有行列相反這樣的區別。在caffe框架下,im2col是將一個小窗的值展開爲一行,而在matlab中則展開爲列。所以說,行列的問題沒有本質區別,目的都是爲了在計算時讀取連續的內存。
這也解釋了我們爲什麼要通過這個變化來優化卷積。如果按照數學上的步驟做卷積讀取內存是不連續的,這樣就會增加時間成本。同時我們注意到做卷積對應元素相乘再相加的做法跟向量內積很相似,所以通過im2col將矩陣卷積轉化爲矩陣乘法來實現。
————————————————
原文鏈接:im2col的原理和實現
卷積則不需要在內存中進行重新排序,可以直接使用GEMM進行實現,降低延遲。GEMM是最優化的數值線性代數算法之一。而如下圖所示,MobileNet的絕大部分計算量和參數量都源自卷積,其餘的參數也幾乎都在FC層,因此MobileNet的參數量和計算量相比使用標準卷積的網絡將大幅降低。
由於MobileNet的網絡規模較小,不容易產生過擬合的問題,因此在訓練網絡時無需作過多的正則化和數據增廣(特別是深度卷積層,參數量已經很少了,不需要進行權重衰減)。
減小模型、提高效率的兩個超參數
Width Multiplier:使模型變瘦
引入width multiplier參數,使模型變瘦(thinner),從而降低計算量。是一個將輸入和輸出feature map的通道數進行收縮的乘數,輸入通道變爲,輸出通道變爲。深度可分離卷積引入後的計算成本爲:。
其中,$ α ∈ (0, 1] $ ,通常設置爲1,0.75,0.5 或0.25。引入後,深度可分離卷積的參數量大致收縮爲之前的倍。
width multiplier也可以用於其他的網絡模型,但是引入width multiplier之後,網絡需要從頭開始訓練。引入後,深度可分離卷積的參數量大致收縮爲之前的倍。
Resolution Multiplier: 使輸入分辨率變小
通過設置輸入的分辨率來隱式設置Resolution Multiplier參數。深度可分離卷積同時引入與後的計算成本爲:$D_K \times D_K \times αM \times \rho D_F\times \rho D_F+αM \times αN\times \rho D_F\times\rho D_F $。
其中通常是隱式設置的,因此網絡的輸入分辨率爲224、192、160或128。
引入後,深度可分離卷積的計算量縮減爲之前的倍。
要點總結
- 深度可分離卷積
- 兩個超參數