# MobileNetV3 論文閱讀 Paper: https://arxiv.org/pdf/1905.02244.pdf ## Introduction 文中基於MobileNetV1, V2架構,對於block的設計與整體模型大小作出了改善,整體結構使用NetAdapt算法分別因應計算需求而創造出MobileNetV3-Large與Small兩個版本,而在語意分割的任務中,文中也提出一新的Decoder架構-Lite Reduced Atrous Spatial Pyramid Pooling(LR-ASPP)。 這篇文章的目標在於開發出一對於移動裝置在準確率與延遲的權衡下有最佳的可能性的架構,因此文中主要有完成以下幾點: 1. Complementary search techniques (互補搜索方法?) 2. 用於移動裝置上的非線性版本架構 3. 新且有效率的網路設計 4. 新且有效率的語意分割Decoder ## Efficient Mobile Building Blocks MobileNetV1中提出了depthwise separable conv來取代傳統的卷積層,而MobileNetV2加入linear bottleneck與inverted residual 架構使block更有效率(如圖3)。在MnasNet中,基於MobileNetV2的架構上再加入了注意力的module,而在MobileNetV3中,則沿用MobileNetV2+Squeeze-and-Excite(SEblock)的架構,不過將Squeeze-and-Excite接在depthwise filter之後,另外文中使用hard sigmoid來取代swish(如圖4)。 ![](https://i.imgur.com/m3oDm5L.png) ## Network Search MobileNetV3使用platform-aware NAS來搜索網路的總體架構,並使用NetAdapt演算法搜索每層filter的數量。 ## Network Improvement 文中重新設計了計算量較大的第一層與最後一層(因為之前都是使用傳統的conv),另外文中也介紹了新的激活函數-h-swish,其計算速度較快且對於量化非常友好。 ### Redesigning Expensive layers 最後一層的feature map是非常重要的,因為其含有最多的特徵,而通常使用1x1的卷基層,為了使最後一層可以保有豐富的特徵且提高效率,文中將1x1的卷基層移到avg-pool之後,如此該層計算的就會是1x1的feature map而非7x7的feature map,這樣的設計結果使得該卷積層的計算量與延遲幾乎為0。 而當7x7的feature map變為1x1時,前面的projection, filtering層(圖5中 3x3Dconv, 1x1Conv兩層)就可以被移除,而如此可以節省7毫秒的推論時間。 ![](https://i.imgur.com/9u1e02d.png) 另一個重新設計的點為使用新的激活函數h-swish,使用此函數可以將第一層32個filter減少為16,如此可以減少2毫秒的推論時間。 ### Nonlinearities 在某些論文中說明使用swish這個非線性函數來取代ReLU時,可以顯著提高準確率,其中$swishx=x*σ(x)$,然而此函數在嵌入式的環境中會更加耗費計算資源,因此本篇中使用兩種方法處理此問題: 1. 用分段線性$ReLU6(x+3)/6$來取代sigmoid: ![](https://hackmd.io/_uploads/SydmIMeP3.png) 文中提到,在實驗中hard與smooth版本在準確率上並沒有太大的差異,然而在部屬上卻有很多優點,首先,在幾乎所有的軟體和硬體框架上都有對ReLU6的優化實現。其次,在量化模式下,它消除了由於不同近似sigmoid實現所引起的潛在數值精度損失的問題。最後,在實際應用中,硬版本的swish可以實現為一個分段函數,以大幅減少記憶體訪問次數,從而降低延遲成本。 2. 隨著網路的深度加深,非線性函數的效益應會有所提升,因為每個層的激活記憶體通常會在降低解析度時減半,而文中發現,swish好效益只發生在深層的時候,因此文中從模型的後半部分才開始使用h-swish,由Table1, 2可得知。 ### Large squeeze-and-excite 在先前的MobileNet版本中,擠壓-激勵模塊的大小是相對於卷積瓶頸的大小來調整的。然而,這種相對大小的設計對於不同的瓶頸層可能不一致,並且需要根據每層的通道數量進行調整。為了簡化設計並提高模型性能,MobileNetV3中的擠壓-激勵模塊被固定為擴張層通道數量的1/4。 ### MobileNetV3 ![](https://hackmd.io/_uploads/SJKeqGxPn.png) ![](https://hackmd.io/_uploads/BkX-9Mxv2.png) ## Experiments 文中測試了在classification, detecion, segmentation上的準確率與延遲。 ### Training setup * Optimizer: RMSProp * momentum: 0.9 * init learning rate: 0.1 * batch size: 4096 (128 per chip) * lr decay rate: 0.01 every 3 epochs * dropout: 0.8 * weight decay: 1e-5 ### Results ![](https://hackmd.io/_uploads/ByYDhGxwn.png) 在圖7中,我們展示了MobileNetV3性能在乘法因子(multiplier)和解析度上的折衷情況。需要注意的是,MobileNetV3-Small在性能方面優於MobileNetV3-Large,後者的乘法因子被縮放以使性能接近提高了近3%。另一方面,解析度提供了比乘法因子更好的折衷方案。然而,需要注意的是,解析度通常由問題本身確定(例如,分割和檢測問題通常需要更高的解析度),因此無法始終作為可調參數使用。 ## Conclusion and Future work 在本論文中,我們介紹了MobileNetV3 Large和Small模型。我們描述了我們在多個網絡架構搜索算法和網絡設計方面的努力,以提供下一代移動模型。我們還展示了如何以量化友好和高效的方式適應像swish這樣的非線性函數,並將squeeze and excite機制引入移動模型領域作為有效的工具。