論文閱記 MobileNetV3:Searching for MobileNetV3


  論文題目: Searching for MobileNetV3

  文獻地址:https://arxiv.org/pdf/1905.02244v5.pdf

  源碼地址:

  (1)PyTorch實現1:https://github.com/xiaolai-sqlai/mobilenetv3

  (2)PyTorch實現2:https://github.com/kuan-wang/pytorch-mobilenet-v3

  (3)PyTorch實現3:https://github.com/leaderj1001/MobileNetV3-Pytorch

  (4)TensorFlow實現1:https://github.com/Bisonai/mobilenetv3-tensorflow推薦

  (5)TensorFlow實現2:https://github.com/tensorflow/models/tree/master/research/object_detection

   

MobileNet V3實驗結果

  作者在classification、detection、segmentation三個方面測試驗證了MobileNet V3的性能。

1. classification

  ImageNet分類實驗結果

  與V2對比

2. detection

  SSDLite(COCO數據集)目標檢測結果

3. segementation

  用於語義分割的輕量級的head:

  Cityscapes數據集語義分割結果

移動端神經網絡現狀

  高效的神經網絡在移動應用程序中變得無處不在,使全新的設備體驗成為可能。它們也是個人隱私的關鍵推動者,允許用戶獲得神經網絡的好處,而不需要將數據發送到服務器進行評估。神經網絡高效的發展,不僅由於高精度和低延遲提升了用戶的體驗,而且有助於通過降低功耗來保護電池的壽命。

  從SqueezeNet大量使用1*1卷積進行壓縮-擴張模型起,開始關注於模型參數量的減少。而最近的工作將聚焦點從減少模型的參數量轉換到了減少模型的計算量(MAdds)。MobileNetV1利用深度可分離卷積提高了卷積的計算效率;MobileNetV2加入了線性bottlenecks反向殘差模塊構成了高效的模塊;ShuffleNet利用組卷積和通道洗牌操作進一步較少了計算量;CondenseNet在訓練階段學習組卷積,以保持層之間有用的密集連接,以便特性重用;ShiftNet利用shift操作和逐點卷積代替了昂貴的空間卷積。

  

  上圖中,左圖為MobileNet V2的網絡塊結構;右圖為MobileNet V3的網絡塊結構。可以看出,MobileNet V3中結合了三種思想:

  1. MobileNet V1: 深度可分離卷積(depthwise separable convolutions)

  2. MobileNet V2: 具有瓶頸的反向殘差結構(the inverted residual with linear bottleneck)

  3. MnasNet : 基於Squeeze and excitation 結構的輕量級注意力模型 (源於SENet),相當於在feature map 的每一通道上乘以對應的縮放因子。下圖是SE Block的結構示意圖。

  上圖中,左圖是SE Block與Inception結構相結合;右圖是SE Block與ResNet結構相結合。當然其還可以和ResXNet結合。

論文貢獻

  1. 使用硬件感知網絡架構搜索(hardware-aware network architecture search, NAS)與NetAdapt算法相結合自動搜索網絡結構;NAS執行模塊級搜索,NetAdapt執行層級搜索(局部搜索)。

  2. 網絡結構改進:將最后一步的平均池化層前移並移除最后一個卷積層,引入h-swish激活函數

網絡搜索

1. 基於模塊級搜索Block-wise Search: NAS

  通過優化每一個網絡模塊來搜索全局網絡結構。

  與MnasNet思路一樣,首先通過一種平台感知的神經結構方法來尋找全局網絡結構。並且,也使用了基於RNN的控制器和想通過的分級搜索空間。並且復用了MnasNet-A1,並在該模型的基礎上使用了NetAdapt。此處的多目標函數的設定與MnasNet中一致(如下式所示)。作者在這里使用w = -0.15代替了MnasNet中w=-0.07,可以為不同的延遲補償較大精度的改變。可以理解為當w值變大,不同延遲作用到ACC上,對於目標函數的影響更大(即分母大於1 與小於1的情況討論)。

  作者使用新的權重因子w重新搜索新的網絡架構,並利用NetAdapt和其他優化方式獲得最終的MobileNetV3-small模型。

2. 基於層級搜索Layer-wise Search: NetAdapt

  搜索每一層卷積核的個數,相當於對確定的各個模塊的每一層進行微調的工作。可以作為NAS的互補。

  過程大致如下:

  NetAdapt選擇△ACC / |△latency| 最大的建議。

網絡提升

  除了網絡搜索,還為模型引入了新的組件:

  1. 在模型網絡的開始和結尾開銷大的層進行重新設計;這些修改是超出搜索空間的,也就是說,這部分的修改應該不是自動完成的。

  MobileNetV2模型中使用反向殘差結構,利用1*1卷積將feature map恢復到高維的空間,雖然有利於豐富特征並進行預測,但卻引入了額外的計算開銷和延遲。作者選擇移除平均池化Avg-Pool前的層,並使用1*1卷積計算計算特征圖,會減少7ms的開銷,減少30百萬的運算量。值得慶幸的是沒有精度的損失。

  MobileNetV2模型中反向殘差結構和變體利用1*1卷積來構建最后層,以便於拓展到高維特征空間。雖然對於提取豐富特征進行預測十分重要,但卻引入了額外的計算開銷與延時。為了在保留高維特征的前提下減小延時,將平均池化前的層移除並用1*1卷積來計算特征圖。特征生成層被移除后,先前用於瓶頸映射的層也不再需要了,這將為減少10ms的開銷,在提速15%的同時減小了30m的操作數。

  另一個開銷較大層是最初的卷積核,當前使用的是32個3*3卷積,作者通過選擇不同的激活函數和減少卷積核的個數方式降低模型的冗余。選擇hard swish激活函數,並且減少卷積核個數到16,這又節省了2毫秒和1000萬madd

  

  2. 引入了一個新的非線性激活函數h-swish。

  作者發現swish激活函數可以顯著提高神經網絡的准確性,可作為ReLU的替代,swish激活函數如下所示:

  但swish激活函數中的sigmoid運算再移動端會消耗較多的計算資源。因此,作者提出了h-swish激活函數。使用ReLU6代替sigmoid運算:

  h-swish函數曲線如下圖所示。

MobileNet V3網絡(自動生成)

  MobileNetV3包含high resource 和 low resource兩種場景的模型,具體結構如下所示,MobileNet V3 -Large 和 MobileNet V3 - small,其中,SE是SENet提出的一種結構squeeze and excitation;HS表示h-swish,RE表示ReLU 。

總結

  MobileNet V3與MnasNet一樣,都是自動優化生成的模型,在得知網絡結構后,將其應用在某移動設備難度並不大,值得了解的是如何在指定的移動設備上進行網絡結構的生成。這一過程將會在一定程度上實現移動設備資源的高效利用。

 


免責聲明!

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



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