MobileNetV1/V2/V3簡述 | 輕量級網絡

MobileNet系列很重要的輕量級網絡家族,出自谷歌,MobileNetV1使用深度可分離卷積來構建輕量級網絡,MobileNetV2提出創新的inverted residual with linear bottleneck單元,雖然層數變多了,但是整體網絡準確率和速度都有提升,MobileNetV3則結合AutoML技術以及人工微調進行更輕量級的網絡構建
?
來源:曉飛的算法工程筆記 公眾號

MobileNetV1


論文: MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

Introduction

? MobileNet基于深度可分離卷積構建了非常輕量且延遲小的模型,并且可以通過兩個超參數來進一步控制模型的大小,該模型能夠應用到終端設備中,具有很重要的實踐意義。

Depthwise Separable Convolution

? 假設標準卷積的輸入和輸出分別為$D_F\times D_F \times M$的特征圖$\mathbb{F}$和$D_F \times D_F\times N$的特征圖$\mathbb{G}$(假設特征圖大小不變),卷積核大小為$D_K\times D_K\times M\times N$,則輸出特征圖的計算為:

? 計算量為:

? 計算量與輸入維度$M$、輸出維度$N$、卷積核大小$D_K$以及特征圖大小$D_F$相關。

? MobileNet通過深度可分離卷積優進行計算量優化,將標準卷積轉化為深度卷積和$1\times 1$pointwise卷積,每層后面都會接BN和ReLU。 深度卷積的每個輸入維度對應一個卷積核,對于相同的輸入,深度卷積的輸出特征圖計算為:

? $\hat{\mathbb{K}}$是大小為$D_K\times D_K\times M$的深度卷積核,$\hat{\mathbb{K}}$的$m_{th}$卷積核對應輸入$\mathbb{F}$的$m_{th}$特征圖和輸出$\hat{\mathbb{G}}$的$m_{th}$特征圖,深度卷積的計算量為:

? 盡管深度卷積更高效,但沒有很好地融合多個輸入維度,所以需要額外層來對其輸出進行線性組合,這里使用$1\times 1$pointwise卷積來生成新特征圖,即深度可分離卷積,計算量為:

? 深度可分離卷積和標準卷積的計算量縮放比為:

? MobileNet使用$3\times 3$的深度可分離卷積,所以大概會有8-9倍的計算量減少,準確率僅會有些許降低。

Network Structure and Training

? MobileNet的結構如表1所示,除第一層外其它均是深度可分離卷積,除了最后一層全連接層外每層都接BN和ReLU,總共28層。

? 論文提到不能直接通過計算量來代表網絡的高效性,還需要看操作的具體實現方法。如表2所示,MobileNet的大部分計算量和參數都在pointwise卷積上,不管在CPU設備還是GPU設備,都已經有很高效的實現方法。至于訓練的設置,論文也有較詳細的提及,有興趣的可以去看看原文。

Width Multiplier: Thinner Models

? 盡管MobileNet已經很輕量了,但還可以使用寬度縮放因子$\alpha$來進一步輕量化,將每層的輸入輸出維度變為$\alpha M$和$\alpha N$,縮放后的計算量變為:

? $\alpha \in (0,1]$,寬度縮放因子的計算量縮放比大約為$\alpha^2$,能夠讓用戶根據任務對準確率和速度進行trade off。

Resolution Multiplier: Reduced Representation

? MobileNet還可以通過分辨率縮放因子$\rho$來縮放模型的大小,結合寬度縮放因子$\alpha$,縮放后的計算量為:

? $\rho \in (0, 1]$,分辨率縮放因子的計算量縮放比大約為$\rho^2$。

? 論文也對深度可分離卷積、寬度縮放因子以及深度縮放因子的效果進行了對比。

Experiments

? MobileNet的實驗做得挺詳細的,在多種任務上進行性能對比,這里只列舉了部分結果,具體的可以看原文,但比較遺憾的是沒有貼推理耗時的對比結果。

? 對比MobileNet的全卷積版本和深度可分離卷積版本。

? 對比寬度縮放和直接去除最后5層$14\times 14\times 512$深度分離卷積的效果。

? 對比不同寬度縮放因子的效果。

? 對比不同分辨率縮放的效果。

CONCLUSION

? MobileNet運用深度可分離卷積進行輕量級網絡的構建,在準確率沒有大幅下降的情況下,能把參數量和計算量降低大約8倍,具有很重要的實踐意義。

MobileNetV2


論文: MobileNetV2: Inverted Residuals and Linear Bottlenecks

Introduction

? MobileNetV2提出新的層單元inverted residual with linear bottleneck,該結構類似與殘差網絡單元,都包含shorcut,區別在于該結構是輸入輸出維度少,中間通過線性卷積先擴展升維,然后通過深度卷積進行特征提取,最后再映射降維,可以很好地保持網絡性能且網絡更加輕量。

Linear Bottlenecks

? 神經網絡的高維特征中的關鍵信息(manifold of interest)是分散分布的,實際可以用緊湊的低維特征進行表示,因此理論上可以通過降低層輸出的維度來降低操作空間的維度。而論文認為,當層中存在非線性激活時,則可能會打破上面的理論,于是去除了低維特征的非線性操作,基于下面兩點發現:

  • 根據ReLU的屬性,若輸出為非零,則相當于對該輸入進行了線性變化,可認為部分輸入空間進行了線性變化,而網絡僅對這些非零輸出進行后續處理。由于特征的關鍵信息一般經過ReLU后輸出全是非0,因此可以認為ReLU對關鍵信息(低維特征)都進行了線性操作。

  • 論文將2維輸入通過矩陣$T$線性升維至$d$,再通過ReLU進行非線性激活,最后使用矩陣$T^{-1}$恢復至2維。從可視化結果來看,維度越低,ReLU對輸入的信息丟失越多。這表明,假設非線性操作的輸入特征能夠壓縮成較低維特征時,需要輸入特征有足夠大的復雜度,非線性操作才能保留較完整的信息。

? 假設層輸出的關鍵信息可以通過低維特征進行表示,則可以使用線性bootleneck進行提取,結構如圖2c所示,在深度卷積后接pointwise卷積進行降維,但在降維后不再使用非線性激活,僅對高維特征進行非線性激活。而圖2d是結構c的前一部分,兩者合起來構成一個完整的MobileNetV2 bottleneck,先通過pointwise卷積升維,然后深度卷積提取特征,最后再使用pointwise卷積進行降維,其中升維的比例稱為expansion ratio。

Inverted residuals

? MobileNetV2的residual block與Resnet的residual block類似,重點是為了更好地回傳梯度以及特征重用,區別在于MobileNetV2連接的是bottleneck特征,即維度較小的特征。如前面描述的,論文認為較低維的特征包含了所有的必須信息,而expansion layer僅是為了實現非線性變化的一個手段。

? residual block的操作以及輸入輸出如表1所示,盡管相對于MobileNetV1多了一個pointwise卷積,但這樣的結構允許更少的輸入輸出維度。從表3的對比可以看出,MobileNetV2的內存使用更少。而expansion ratio的設置可以允許結構有很多種變化,設為0時就是identity mapping,設為大于1則是Resnet的residual block。

Model Architecture

? MobileNetV2 unit包含stride=1和stride=2兩種。

? MobileNetV2的整體結構如表2所示,通過堆疊圖4d的結構進行構建,首層使用普通的卷積層,另外也可以通過寬度縮放因子和分辨率縮放因子來進行準確率和時延之間的trade off。

Experiments

? 論文對比MobileNetV2與其它網絡在圖像分類上的性能。

? 論文對比MobileNetV2與其它網絡在目標檢測上的性能。

? 論文對比MobileNetV2與其它網絡在語義分割上的性能。

? 另外論文對inverted residual with linear bottleneck的改進進行驗證。

Conclusions

? MobileNetV2基于inverted residual with linear bottleneck進行輕量級網絡構建,整體的結構都挺創新的,包括Inverted residuals以及expansion layer,linear Bottlenecks的分析也很有啟發意義,到現在很多終端算法仍是以MobileNetV2作為主干網絡。

MobileNetV3


論文: Searching for MobileNetV3

Introduction

? MobileNetV3基于AutoML構建,再人工微調對搜索結果進行優化,搜索方法使用了platform-aware NAS以及NetAdapt,分別用于全局搜索以及局部搜索,而人工微調則調整了網絡前后幾層的結構、bottleneck加入SE模塊以及提出計算高效的h-swish非線性激活。

? MobileNetV3首先使用MnasNet的platform-aware NAS進行每個block的層結構搜索,再將搜索結果按照預設的網絡結構搭建起來,有興趣的可以去看看公眾號的講解。platform-aware NAS主要是以準確率和實際時延的加權$ACC(m)\times [LAT(m)/TAR]^w$作為優化指標,逼近帕累托最優(準確率和時延分別不能再同時增加)。論文在實踐時發現,對于小模型而言,時延的增加會導致精度急劇增大,因此需要增大$w=-0.07$為$w=-0.15$,加大對時延增加的懲罰。
? 在完成初步的網絡搜索后,論文使用NetAdapt進行逐層地調整 ,作為對MnasNet的搜索方法的補充,NetAdapt的具體步驟如下:

  1. 基于MnasNet搜房方法得到的種子網絡作為開始。
  2. 生成新proposal集,每個proposal代表對種子網絡的一種修改,必須能帶來$\delta=0.01$倍的時延下降。
  3. 對于每個proposal,使用上一step的訓練模型進行參數初始化,缺失的參數隨機初始化,然后finetune $T=10000$輪得到大致的準確率。
  4. 根據指標選擇最好的proposal。
  5. 迭代步驟234直到滿足目標時延。

? 原始的NetAdapt使用時延作為步驟4的指標,論文修改為準確率和時延的比值$\frac{\Delta Acc}{\mid \Delta latency \mid}$,這樣能夠達到很好的trade-off,$\Delta latency$依然需要滿足步驟2,步驟2的proposal除了原來NetAdapt的修改卷積核操作外,還包含以下兩種:

  • 減小任意expansion layer的大小
  • 減小所有相同大小的bottleneck的大小

Redesigning Expensive Layers

? 在得到搜索結果后,論文發現通常網絡的前后幾層開銷都相對較多,因此針對這幾層進行了特定的修改。

? 對最后幾層的改造如圖5,前置了avg pool,使得后續升至高維的操作能在$1\times 1$特征圖上進行,而不是在$7\times 7$特征圖上進行,節省了大量的時間。而由于avg pool前置這個操作已經節省了大量的計算量,也就不需要前一個bottleneck的DConv+pointwise conv操作(該操作為了從160維生成320維特征,避免直接從160維到1280維)來減輕計算量了,直接去除,進一步節省計算量,這樣的改進大概能帶來7毫秒(11%)的速度提升。
? 對于前幾層,一般的網絡都使用32維$3\times 3$的卷積,論文認為這些卷積里面存在冗余,通過實驗,將維度降維16維不影響準確率,帶來2毫秒的速度提升,非線性激活使用了論文提出的hwish非線性激活,效果與其它函數差別不大。

Nonlinearities

? swish作為ReLU的替代品,能帶來顯著的準確率提升,swish的定義如下:

? 由于swish包含了sigmoid函數,在移動設備上計算沒有很好地優化。因此,論文將sigmoid替換成分段線性模擬$\frac{ReLU6(x+3)}{6}$,提出了改進版hwish:

? 從圖6的可視化結果來看,swish和h-swish的曲線十分接近。非線性操作在網絡越深處的耗時會低(特征圖大小減小一半),因此,僅在網絡的后半段使用h-swish。

Large squeeze-and-excite

? MobileNetV3的bottleneck在V2的基礎上加了SE模塊,其中SE ratio固定為0.25。論文提到這里的實現與MansNet不太一樣,固定為expansion layer的1/4,但我看來好像沒什么區別,知道的朋友麻煩告知一下。

MobileNetV3 Definitions

? MobileNetV3分為MobileNetV3-Large和MobileNetV3-Small兩個版本。

Experiments

? 論文的實驗很充分,這里只貼了部分任務的主要實驗結果,其它可以查看原文。

? 論文對比MobileNetV3與其它網絡在圖像分類上的性能。

? 論文對比MobileNetV3與其它網絡在目標檢測上的性能。

Conclusion

? MobileNetV3首先使用AutoML方法獲取到最優的網絡結構,再通過人工的部分修改來達到最終的精度,雖然網絡不是直接通過搜索得來的,但是實驗的效果還是有的,里面的improvement也值得參考和借鑒。

Conclusion


? MobileNet系列是很重要的輕量級網絡家族,MobileNetV1使用深度可分離卷積來構建輕量級網絡,MobileNetV2提出創新的inverted residual with linear bottleneck單元,雖然層數變多了,但是整體網絡準確率和速度都有提升,MobileNetV3則結合AutoML技術以及人工微調進行更輕量級的網絡構建

?
?
?

如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的算法工程筆記】

work-life balance.

posted @ 2020-07-08 16:17  曉飛的算法工程筆記  閱讀(133)  評論(0編輯  收藏
最新chease0ldman老人