论文笔记:MobileNet v2
生活随笔
收集整理的這篇文章主要介紹了
论文笔记:MobileNet v2
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原論文:MobileNetV2: Inverted Residuals and Linear Bottlenecks
MobileNet v2
1、四個問題
- 與MobileNet v1所要解決的問題一樣,為嵌入式設備或算力有限的場景下設計一個有效的模型。
- 一方面,沿用了再MobileNet v1中采用的depthwise separable convolution。
- 另一方面,新提出了inverted residual結構和linear bottleneck結構來改進模型。
- 作者在論文中給出了一系列任務下的實驗結果:ImageNet圖像分類、目標檢測、語義分割等,MobileNet v2均取得了比MobileNet v1更好的效果。
- 就目標檢測來說,由MobileNet v2擴展構建的網絡,其性能相比于其他架構如:Faster-RCNN、RFCN等還是遜色不少,但是考慮到模型的實時性和計算量,MobileNet v2在各項任務的表現相比于同一量級的模型是state-of-the-art的。
- 社區對其的評價普遍都挺高,但也有一些人說自己復現(基于TensorFlow的)無法達到論文中的精度。網上也有挺多開源的復現代碼(基于Pytorch),用的時候還是自己復現一下再下定論吧。
2、論文概述
2.1、Depthwise Separable Convolutions
- 基本思想就是:講一個普通的卷積操作拆分成兩個卷積操作。第一層為depthwise卷積,分別對每個輸入通道進行卷積;第二層是pointwise卷積,實質就是1×11 \times 11×1卷積,主要是用來將前面depthwise輸出的特征組合起來構建新的特征。
2.2、Linear Bottlenecks
- 文中,經過激活層后的張量被稱為manifold of interest(看到網上將其翻譯為興趣流形,總覺得有點不到位,所以后面都直接用英文代替)。
- 在manifold of interest(經過ReLU后的張量)非0的情況下,ReLU只是一個線性變換。
- ReLU只有在input manifold處于輸入空間的子空間的情況下,才能保留input manifold的全部信息。
- 換句話說,只要使用了ReLU,就不可避免地要損失該通道內的一部分信息。
- 文中還給了一個示例,將input先映射到高維空間然后接一個ReLU后再還原回原來的維度。
- 示意圖如下,可以看出映射的維度越高,還原的效果越好,保留的原始信息越多。
- 一句話概括:Linear Bottlenecks就是,去掉ReLU,減小對特征的破壞,盡可能保留輸入的信息。
- Linear Bottlenecks后面會與Inverted residuals組合起來使用。
2.3、Inverted residuals
- 網絡結構基本單元的演變,如下圖所示:
- a就是普通的3×33 \times 33×3卷積。
- b是Depthwise Separable Convolution操作,此前用于MobileNet v1.
- c由b擴展而來,在b后面加了linear bottleneck(虛線框),bottleneck層沒有加ReLU。
- d與c很像,在堆疊網絡時兩者是等價的。
- 普通的residual block與inverted residual block之間的對比:
- 每個長方體的厚度象征著通道數。
- a為傳統的residual block。結構為:1×11 \times 11×1卷積(降維)+ReLU–>3×33 \times 33×3卷積+ReLU–>1×11 \times 11×1卷積(升維)+ReLU。
- b為反轉的residual block(inverted residual block)。結構為:1×11 \times 11×1卷積(升維)+ReLU–>3×33 \times 33×3depthwise separable卷積+ReLU–>1×11 \times 11×1卷積(降維)(注意,這里是不帶ReLU的,即前面提到的linear bottleneck)。
2.4、模型結構
- Bottleneck residual block的結構(也就是inverted residual block),其為MobileNet v2的基本組成模塊。
- MobileNet v2的總體結構:
- 幾種網絡的基本模塊之間的對比:
2.5、其他
- 圖a中可以看出,使用Linear bottleneck(不使用ReLU)比直接給輸出接上ReLU6的效果好。
- 我個人的理解:
- ReLU會使負值置0,所以使用ReLU一定會出現信息損失。
- 一般情況下,普通卷積后接上ReLU應該是能取得更好地效果的,不然也不會這么多人這么用。
- 然而,針對MobileNet這個網絡,由于其使用了大量的Depthwise Separable卷積,在Depthwise卷積之后接上ReLU就更容易損失信息了,導致效果反倒下降了。
- 為什么呢?因為Depthwise卷積是直接針對單通道的,也就是說它的輸出是單通道的,而這種單通道的信息經過ReLU后更容易損失信息。前面在討論Linear Bottleneck時,作者也提到了如果中間層的維度較低,再經過ReLU后(manifold of interest)則很容易損失信息,除非先升高到一個較高維度再降低回原來的維度,才能保留更多的信息。而普通卷積則會將各個輸入通道的輸出加權求和,這一點也類似于提升了維度,所以直接接上ReLU并不會損失太多信息。
- 我個人的理解:
- 圖b中可以看出,在bottleneck處添加shortcut會比在expanded layer處添加shortcut效果更好。
總結
以上是生活随笔為你收集整理的论文笔记:MobileNet v2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文笔记:PPFNet
- 下一篇: 论文笔记:Triplet Network