[論文閱讀]MobileNetV2: Inverted Residuals and Linear Bottlenecks


 0.      本文貢獻點

 

  本文的主要貢獻點是一個構造了一個結構,稱為the inverted residual with linear bottleneck。該結構與傳統的residual block中維度先縮減后擴增相反,而是先將輸入的低維feature map擴增到高維,然后用depthwise convolution方式做卷積運算,然后再使用一個線性的卷積將其映射到低維空間中。

  Depthwise Separable Convolutions原理可以參考這篇文章

 

 1.      Inverted residual block簡單介紹

 

  如上圖,左邊(a)圖的傳統的residual block,先用1x1卷積將輸入的feature map的維度降低,然后進行3x3的卷積操作,最后再用1x1的卷積將維度變大。右邊(b)圖即為本文提出的結構,先用1x1卷積將輸入的feature map維度變大,然后用3x3 depthwise convolution方式做卷積運算,最后使用1x1的卷積運算將其維度縮小。注意,此時的1x1卷積運算后,不再使用ReLU激活函數,而是使用線性激活函數,以保留更多特征信息,保證模型的表達能力。

         該block具體結構如下:

 

 

 

 

 

  當stride=1時,block內會有short cut;而當stride=2時,block沒有short cut。

 

2.      MobileV2V1的區別

  下圖是MobileNetV2與MobileNetV1的區別(原圖鏈接):

 

主要區別有兩點:

(1)Depth-wise convolution之前多了一個1*1的“擴張”層,目的是為了提升通道數,獲得更多特征;

(2)最后不采用Relu,而是Linear,目的是防止Relu破壞特征。

 

 

MobileNetV2相關資料:

  1. MobileNet V2 論文初讀
  2. [論文筆記](MobileNet V2)Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification, Detection and Segmentation
  3. 知乎關於MobileNetV2的討論

附:

下面段落摘自第二篇文章。

 

  1.       Intuition

 

 

  如上圖所示,利用MxN的矩陣B將輸入張量(2維,即N=2)變換到M維的空間中,通過ReLU后(y=ReLU(Bx)),再用此矩陣逆恢復原來的張量(即從M維空間變換回2維空間)。可以看到,當M較小時,恢復后的張量坍縮嚴重,M較大時則恢復較好。

  這意味着,在較低維度的張量表示上進行ReLU等線性變換會有很大的信息損耗。因而本文提出使用線性變換替代Bottleneck的激活層,而在需要激活的卷積層中,使用較大的M使張量在進行激活前先擴張,整個單元的輸入輸出是低維張量,而中間的層則用較高維的張量。

 

2.      MobileNetV2網絡

  MobileNetV2網絡結構如下:

 

  網絡的性能如下:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM