一、標準卷積流程:
一次性完成,輸入爲, 過濾器爲(個數爲N),輸出爲
計算量爲:
二、深度可分離卷積(Depthwise Seperable Convolution)流程:
分兩步完成,分別爲Depthwise Conv 和 Pointwise Conv
1. Depthwise Conv:filtering stage
輸入爲, 過濾器爲(個數爲M),輸出爲
計算量爲:
2. Pointwise Conv:combination stage
輸入爲, 過濾器爲(個數爲N),輸出爲
計算量爲:
總計算量爲:
三、Depthwise Seperable Conv 和 Std.Conv 對比
1. 計算量對比
2. Depthwise Seperable Conv 比Std.Conv 的參數、計算時間少;同時對同一個模型架構,精度略低一點;
3. Depthwise Seperable Conv 分兩步完成卷積: Depthwise Conv 和 Pointwise Conv
四、兩個參數再次縮小模型
相對於基準模型,mobilenet可以提供兩個參數:width multiplier 和 resolution multiplier。
1. width multiplier(寬度乘子):更薄的模型,按比例減少通道數,即深度,該參數記爲 ,其取值範圍爲(0,1]。那麼輸入與輸出通道數將變成 和,計算量變爲:; 結果是參數量減少,計算量也減少。
2. resolution multiplier(分辨率乘子):分辨率更低的模型,按比例降低圖的大小,記爲 ;例如輸入特徵圖是224x224,可以減少爲192x192;計算量爲:;結果是參數量不變,計算量減少。
五、Mobilenet
採用深度可分離卷積,主要目的是降低模型參數量和計算量。
1. MobilenetV1特點:
(1)採用深度可分離卷積,並且可調寬度乘子和分辨率乘子
(2)採用Batch Normalization
(3)採用Relu6激活函數
2. MobilenetV1的問題:
(1)沒有利用殘差塊
(2)Relu6激活函數的存在,導致效果不好
3. MobilenetV2特點:
(1)增加Inverted residuals:通常的residuals block是先1*1的Conv layer,減少通道數下來,再3*3 Conv layer,最後經過一個1*1 的Conv layer,將通道數再“擴張”回去。即先“壓縮”,最後“擴張”回去。
而 inverted residuals就是 先“擴張”,最後“壓縮”,Depth-wise convolution之前多了一個1*1的“擴張”層,目的是爲了提升通道數,獲得更多特徵;
(2)Linear bottlenecks:爲了避免Relu對特徵的破壞,在residual block的Eltwise sum之前的那個 1*1 Conv 不再採用Relu,而採用Linear,目的是防止Relu破壞特徵。
(完)