MobileNetV3學習筆記 --- Searching for MobileNetV3

論文:https://arxiv.org/pdf/1905.02244.pdf
Pytorch_MobilenetV3 實現:https://github.com/xiaolai-sqlai/mobilenetv3

給出MobilenetV1和MobilenetV2的論文鏈接,沒有看過的可以先去看看。
MobilenetV1:https://arxiv.org/abs/1704.04861
MobilenetV2:https://arxiv.org/pdf/1801.04381.pdf

MobilenetV1

引入了深度可分離卷積作爲傳統卷積層的有效替代,大大減少計算量。深度可分離卷積通過將空間濾波與特徵生成機制分離,有效地分解了傳統卷積。深度可分離卷積由兩個單獨的層定義:用於空間濾波的輕量深度卷積和用於特徵生成的較重的1x1卷積。

MobilenetV2:

引入線性瓶頸和倒置殘差結構,以便通過利用問題的低秩性質來提高層結構的效率。
1.Linear Bottlenecks
Bottlenecks的最後把ReLU函數替換爲Linear 線性函數,以防止ReLU破壞特徵。
2.Inverted residuals
Bottlenecks 採用與resnet相反的設計方式,先擴張 -> 提取特徵 -> 壓縮。
結構如圖:
在這裏插入圖片描述
MnasNet
https://arxiv.org/pdf/1807.11626.pdf
建立在MobileNetV2結構上,通過在瓶頸結構中引入基於擠壓和激勵的輕量級注意模塊。注意,與[18]中提出的基於ResNet的模塊相比,擠壓和激勵模塊集成在不同的位置。模塊位於展開中的深度過濾器之後,以便注意應用於最大的表示。

MobilenetV3

使用以上三種的不同層的組合作爲構建塊,以構建最有效的模型。圖層也通過修改的swish非線性激活函數進行了升級。squeeze and excitation結構以及swish非線性函數都使用sigmoid,這對於定點算術的計算效率低下又難以維持精度,因此我們將其替換爲hard sigmoid。

在這裏插入圖片描述翻譯:圖4. MobileNetV2 +Squeeze and Excite結構[20]。 與[20]相反,我們在殘差層中施加Squeeze and Excite(擠壓和激發)。 我們根據層使用不同的非線性,有關詳細信息,請參見5.2節。

總體而言,MobilenetV3有以下兩個創新點:

1.互補搜索組合

  • Platform-Aware NAS(資源受限的NAS)

在計算和參數量受限的前提下搜索網絡的各個模塊,所以稱之爲模塊級的搜索(Block-wise Search)。

  • NetAdapt

用於對各個模塊確定之後各個網絡層的搜索微調,所以叫Layerwise-Search。這種方法是對可感知平臺的NAS的補充:它允許以順序的方式微調各個層,而不是嘗試推斷粗略但全局的體系結構。 簡而言之,該技術進行如下:
首先使用了神經網絡搜索功能來構建全局的網絡結構,隨後利用了NetAdapt算法來對每層的核數量進行優化。對於全局的網絡結構搜索,研究人員使用了與Mnasnet中相同的,基於RNN的控制器和分級的搜索空間,並針對特定的硬件平臺進行精度-延時平衡優化,在目標延時(~80ms)範圍內進行搜索。隨後利用NetAdapt方法來對每一層按照序列的方式進行調優。在儘量優化模型延時的同時保持精度,減小擴充層和每一層中瓶頸的大小。

2.網絡結構

在網絡的開頭和結尾重新設計了計算昂貴的層。 引入了新的非線性h-swish,這是最近的swish非線性的改進版本,它計算速度更快,對量化更友好。

通過架構搜索找到模型後,我們會發現某些最後一層以及一些較早的層比其他層更昂貴。 我們建議對體系結構進行一些修改,以減少這些慢層的等待時間,同時保持準確性。 這些修改超出了當前搜索空間的範圍。

  • 尾部結構改變

當前基於MobileNetV2的倒置瓶頸結構和變體的模型使用1x1卷積作爲最後一層,以便擴展到更高維度的特徵空間。爲了具有豐富的預測特徵,這一層至關重要。 但是,這要付出額外的計算和延時。爲了在保留高維特徵的前提下減小延時,將平均池化前的層移除並用1*1卷積來計算特徵圖。特徵生成層被移除後,先前用於瓶頸映射的層也不再需要了,這將爲減少7ms的開銷,在提速11%的同時減小了30m的操作數。
在這裏插入圖片描述

  • 頭部channel數量改變

當前的MobilenetV2開始使用32個 3 * 3的濾波器,作者發現使用h-swish激活函數相比於使用sigmoid和swish函數,可以在保持精度不減的情況下,將channel降低到16個,並且提速2ms。
給出MobilenetV2和MobilenetV3的結構如下,重點關注前面的通道數 32/16。
MobilenetV2
                                                             MobilenetV2
MobilentV3-small
                                                         MoblenetV3-small

  • h-swish激活函數
    swish非線性激活函數作爲ReLU的替代,可以可以顯着提高神經網絡的準確性,其定義如下:
    在這裏插入圖片描述
    儘管這種非線性提高了準確性,但在嵌入式環境中卻帶來了非零成本,因爲S型函數在移動設備上的計算成本更高。
    設計的h-swish函數如下:
    在這裏插入圖片描述
    在這裏插入圖片描述

MobilenetV3網絡結構

給出了MobilenetV3-large 和MobilenetV3-small兩個版本,分別針對高資源用例和低資源用例,結構如下圖:
在這裏插入圖片描述
在這裏插入圖片描述

參考:
https://blog.csdn.net/thisiszdy/article/details/90167304
https://blog.csdn.net/Chunfengyanyulove/article/details/91358187?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1
https://blog.csdn.net/zaf0516/article/details/90374170
https://blog.csdn.net/sinat_37532065/article/details/90813655

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章