您當前的位置:首頁 > 舞蹈

從深度可分離卷積 到 MobileNetv1 到 MobileNetv2

作者:由 十一 發表于 舞蹈時間:2019-07-12

深度可分離卷積

卷積

要解釋深度可分離卷積,就要從卷積過程開始說起,我們假設輸入為

N x H x W x C

的特徵向量,其中

N

為特徵向量個數,

H、W

為特徵圖的長寬,

C

為特徵向量的通道數,當我們用k個卷積核進行卷積操作時,如果設定步長為1,那麼最後輸出為

N x H x W x K

從深度可分離卷積 到 MobileNetv1 到 MobileNetv2

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結構的極限版本,模型在低緯度嵌入上進行空間聚合,不會損失或損失太多的體現能力

從深度可分離卷積 到 MobileNetv1 到 MobileNetv2

上面的簡化版本,我們又可以看做,把一整個輸入做為1*1卷積,然後切成三段,所以又出現瞭如下表現形式

從深度可分離卷積 到 MobileNetv1 到 MobileNetv2

我們考慮,如果不是分成三段,而是分成5段或更多(最多達到通道數),效能可能會更好。

從深度可分離卷積 到 MobileNetv1 到 MobileNetv2

MobileNet_v1

模型結構

從深度可分離卷積 到 MobileNetv1 到 MobileNetv2

從深度可分離卷積 到 MobileNetv1 到 MobileNetv2

在每一個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對特徵的破壞。

作者認為,啟用函式在高位空間能夠有效的增加非線性,而在低維空間時則會破壞特徵,不如線性的效果好

模型結構:

從深度可分離卷積 到 MobileNetv1 到 MobileNetv2

為什麼要在Depthwise之前進行1x1卷積來增加feature map的通道數?

因為DW卷積的是對所有的通道進行卷積操作,通道數量成為制約卷積提取操作的關鍵因素,假如通道數很少的話,卷積只能在一個低緯空間中提取特徵,因此效果不夠好,所以我們在進行DW卷積之前,先對特徵進行升維操作,這樣DW卷積也會在一個相對高的維度進行特徵提取工作

標簽: 卷積  通道  特徵  Feature  輸入