從深度可分離卷積 到 MobileNetv1 到 MobileNetv2
深度可分離卷積
卷積
要解釋深度可分離卷積,就要從卷積過程開始說起,我們假設輸入為
N x H x W x C
的特徵向量,其中
N
為特徵向量個數,
H、W
為特徵圖的長寬,
C
為特徵向量的通道數,當我們用k個卷積核進行卷積操作時,如果設定步長為1,那麼最後輸出為
N x H x W x K
Depthwise
深度可分離卷積分為兩個過程:
Depthwise
Pointwise
Depthwise作為可分離卷積第一步,主要是將特徵圖的通道分離開,來進行卷積操作,比如我們的輸入資料維度為
N x H x W x C
,我們將資料分為C組,對每一組做3x3卷積,這樣相當於蒐集了每個通道的空間特徵,即Depthwise特徵
Pointwise
pointwise過程是對
N x H x W x C
的輸入上做k個普通的1x1卷積,相當於收集了每個點的特徵,這樣輸出結果與直接對輸入特徵使用k個卷積核的結果相同
深度可分離卷積是Inception結構的極限版本,模型在低緯度嵌入上進行空間聚合,不會損失或損失太多的體現能力
上面的簡化版本,我們又可以看做,把一整個輸入做為1*1卷積,然後切成三段,所以又出現瞭如下表現形式
我們考慮,如果不是分成三段,而是分成5段或更多(最多達到通道數),效能可能會更好。
MobileNet_v1
模型結構
在每一個Depthwise Conv 後都接一個BN和RELU層
優點分析
輕量化 模型中沒有使用池化操作,而是直接採用stride=2進行卷積操作
用兩個超引數來控制網路計算速度與準確度之間的平衡:
Width Multiplier(α \alphaα): Thinner Models
所有層的通道數(channel)乘以α引數,模型大小近似下降到原來的α²倍,計算量下降到原來的α²倍
Resolution Multiplier(ρ \rhoρ): Reduced Representation
輸入層的解析度(Resolution)乘以ρ引數,等價於所有層解析度乘以ρ,模型大小不變,計算量下降為原來的ρ²倍
MobileNetV2
不同點主要在於:
引入了shortcut結構(殘差網路)
2、在進行depthwise之前先進行1x1的卷積增加feature map的通道數,實現feature maps的擴張。(inverted residual block,一般的residual block是兩頭channel多總監featuremap的通道少(沙漏形態)。而inverted residual block是兩頭通道少,中間feature的通道多(梭子形態))
3、pointwise結束之後棄用relu啟用函式,改用linear啟用函式,來防止relu對特徵的破壞。
作者認為,啟用函式在高位空間能夠有效的增加非線性,而在低維空間時則會破壞特徵,不如線性的效果好
模型結構:
為什麼要在Depthwise之前進行1x1卷積來增加feature map的通道數?
因為DW卷積的是對所有的通道進行卷積操作,通道數量成為制約卷積提取操作的關鍵因素,假如通道數很少的話,卷積只能在一個低緯空間中提取特徵,因此效果不夠好,所以我們在進行DW卷積之前,先對特徵進行升維操作,這樣DW卷積也會在一個相對高的維度進行特徵提取工作