天天看點

mobilenet v2

一、網絡模型結構

提出了 inverted residual structure,主要由 bottleneck block 和 expansion layer 組成,後面會詳細的介紹它們的結構

1.1 inverted residual structure

Residual block

mobilenet v2

運作流程:input -> 1 * 1 卷積降維,relu -> 3 * 3 卷積,relu -> 1 * 1 卷積升維,relu -> add(input, output)

Inverted residual block

mobilenet v2
mobilenet v2

運作流程:input -> 1 * 1 卷積升維,relu -> 3 * 3 DW卷積,relu -> 1 * 1 卷積降維,不要relu -> add(input, output)

Residual block 是一個先降維再升維的過程

Inverted residual block 正好相反,是一個先升維再降維的過程,并且在降維時,不使用relu激活函數。具體細節看 bottleneck block 的實作

2.2 bottleneck convolution

具體結構如下:

Bottleneck with expansion layer

expansion layer 實際上就是一個 1 * 1 的卷積層,用于對輸入特征圖進行升維

輸出特征圖時隻進行 1 * 1 的卷積,不接rule6非線性層。

具體 block 參數如下圖所示:

mobilenet v2
mobilenet v2
殘差塊的特征融合過程,隻有在strid=1,即輸出特征圖和輸出特征圖次元相同的情況下,才進行特征相加融合。過程如上圖所示

2.3 網絡整體結構

mobilenet v2

t 表示 expansion factor,就是經過 expansion layer 後,輸出通道數 = 輸入通道數 * t。

c 表示輸出的通道數,n表示該 block 重複n次,s 表示步長。

2.4 為什麼提出這樣的結構,靈感來自哪裡

作者的觀點:

  • a、relu 會過濾掉特征值小于0的資訊,進而造成資訊損失,是以針對通道數較小的特征圖,隻進行 1 * 1 的卷積運算,但不進行 relu 非線性運算
  • b、神經網絡需要引入 non-linearities,否則整體隻是一個線性組合,表達能力有限。是以我們還是需要使用rule,為了減少rule層帶來的資訊損失,作者提出了 expansion layer

    先進行通道升維,然後再進rule運算,由于通道數的增加,在某些通道上丢失的資訊,可能在其他通道上得到了補償。

  • 基于以上兩點,作者最終設計了 bottleneck block結構

不同通道數的rule輸出對比:

mobilenet v2
可以看到通道數越大,rule後儲存的資訊越多。

二、實驗

分類

目标檢測

論文和code

  • 論文:https://arxiv.org/pdf/1801.04381v4.pdf
  • code:

繼續閱讀