mobilenet v1 主要是提出一種深度可分離卷積,將原來的三維度卷積 分成二維度加上 厚度上的單獨卷積,從而可以實現參數上的極大減少。【主要帶來計算量和參數量的大量減少。 計算量減少9倍左右的參數量。
該網絡架構核心的特點是分成提出了兩種卷積形式Depthwise convolution和pointwise convolution。
【1】Depthwise convolution對每個輸入通道使用不同的卷積核,每個通道對應一個卷積核,其應用於depth級別。
【2】pointwise convolution從含義上就是普通的卷積,只不過其維度是1*1形狀大小的。
在進行使用時,首先是使用depthwise convolution對不同的通道進行分別的卷積【這樣挺好的,就是每個通道使用一個二維矩陣】,然後再使用pointwise將depthwise卷積的結果合在一起。【主要的參數吧,可以很多個1*1*厚度 * 個數的卷積,實現個數級的升降維度】
換個角度解釋,比如原來需要 8個3*3*3的卷積核【比如原來特徵圖厚度爲3,現在需要生成厚度爲8的特徵圖】,那麼 如果用深度可分離卷積的話,就可以,首先是Depthwise convolution需要參數量爲3*3*3個【對應於三個厚度通道,每個通道都需要一個3*3的矩陣】,而再加上pointwise convolution就是 1*1*3*8大小的【使用起到升降維度的1*1矩陣對 維度進行調整,同時使用了8個矩陣,這個是可以自己調節的】,發現沒,減少了非常多。
接下來我們分析從計算量和參數量角度 ,Mobilenet中的深度可分離卷積相對於普通卷積所能帶來的減少量吧。
【1】在參數量方面,假定Dk是卷積核的長和寬、 M是厚度、N是卷積核的數量, 可以發現左爲原卷積的參數量, 右爲進行深度可分離卷積拆解後的參數量,
帶來的參數減少量爲:Dk*Dk*M*(N-1) - M*N
【2】在計算量方面,標準卷積是左側的公式,其中可以明確吧,是對所有的參數都乘上原特徵圖的 寬度和長度,每個參數都做完全的計算。
而深度可分離卷積比舒服的多,相當於第一部分 少乘 卷積核數量N這一維度, 之後補上純粹的1*1*M*N卷積核上的參數乘過去。
經過這樣的處理計算後,參數量和計算量均降爲原來的 九分之一 到八分之一。【論文中有說明,參數和計算量下降到原來的九分之一左右,這個也跟具體的使用有關,而準確率只下降極小的1%】
如上是最爲核心的深度可分離卷積的部分, 其具體實現時對應的是如下的形式上的替換。可以看到在這裏是 將之前 3*3卷積的直接形式,分爲 深度卷積 -> BN -> Relu6->1*1逐點卷積 ->BN ->Relu這 6個部分, 使用 深度卷積+逐點卷積 來提換原來的 3*3普通卷積, 此外可以發現這裏是將 Relu 激活函數換成了Relu6.
激活函數替換後的對比如下,Relu6的公式如右【其特點就是將 輸入值大於6的部分,直接設置值爲6, 作者認爲,使用relu6可以在低精度計算中具有較好的 魯棒性】。
從整體來看,其架構對應是如下的形式:
————————————————————————————————————————————————————
V2是在V1上做了什麼改進?
答:V2是在V1基礎上主要加入了對殘差連接的利用。
其相對於V1版本有三個比較大的創新點。
【1】利用Inverted residuals策略,在V1版本中沒有很好地利用 Residual Connection,而這種殘差在大多情況下都是比較好的,所以在 V2中把該模塊加了過去。
【2】使用Linear bottleneck策略把最後一個的 激活層換成線性形式, 也就是把Relu6層變成了 Linear形式。
原因是我們發現深度卷積部分的卷積核在 訓練時特別容易訓廢掉【也就是發現深度卷積得到的卷積核很多是空的,我覺得這個空,意思應該是核上值爲0】, 作者認爲是Relu激活函數導致的問題。
作者也是有做分析的,分析把relu結果變換embedding到高維空間上進行觀察,發現在低維度relu是很容易造成信息的丟失, 而在高維度上做relu時,信息丟失則比較少。 因此這種丟失就解釋了 爲什麼深度卷積的卷積核很多爲空,所以因此 Relu會造成信息耗損, 就將relu替換成線性激活函數來使用。 進行替換時並不是每一層都替換,而只是對最後一層進行的替換。
【3】使用了Expansion layer策略,這個方式使用的 原因 是爲了 讓 深度卷積操作可以在更高的通道的上進行【因爲原始 深度卷積是有多大卷多大】,這樣的話可以在更高維度上進行處理,能有更好的效果, 所以 我們在 深度卷積前 先加上 逐點卷積,按照 PW逐點擴張卷積 -> DW深度卷積操作 ->PW 壓縮卷積。 使用這樣的方式 三步替代之前的兩步操作
【總結】總體下來,就是以上三點,使得 其結構可以表達成如下的形式【先升維、再卷積、再降維】, 也可以對應右側的對比觀察。
參考: