支撐移動端高性能AI的幕后力量!谷歌提出全新高性能MobileNet V3,網絡模型搜索與精巧設計的完美結合造就新一代移動端網絡架構。
在剛剛過去的谷歌I/O上小伙伴對新發布的技術一定過足了癮。支撐谷歌整合全球信息的AI被提到了至關重要的位置,從云到端,從安卓系統到移動設備無處不在的AI都顯示出向善的力量。移動端作為與用戶交流最為密切的設備,支撐它的AI技術正在飛速發展。為了實現更準確、更迅速更節能的移動端模型,在I/O大會召開的同日谷歌發表文章推出了最新一代移動端網絡架構MobileNet V3,也許這就是為Pixels提供優異表現背后的力量。在最新的論文里,研究人員結合了網絡架構搜索技術和新穎的架構設計實現了新一代的MobileNetV3,更適合移動端CPUs運行。新的模型在精度和延遲上進行了很好的平衡,并在圖像分類、檢測和分割上取得了超過V2版本15%~30%的速度提升。
V3兩個版本的模型與先前模型在精度-速度上表現的對比(TFLite在單核CPU上測試)。
同時在相同的模型大小下取得了更好的精度。
V3模型在模型大小、操作與精度上表現與先前模型的對比。
隨著AI的發展和落地,高效的神經網絡逐漸成為了移動設備和app的標配。一個高效的模型實現不僅能帶來順滑的體驗,更因為無需上傳用戶數據就能訓練模型而增強了對于用戶隱私的保護。除了帶來低延時的使用體驗,高效模型還為持久續行的移動設備節省了更多電能開銷。(I/O大會上對于隱私的強調和長續航的Pixels手機也許就有這個mobileNetV3的貢獻呢。)
在最新的論文中,研究人員提出了包含兩個子版本的MobileNetV3(Large/Small)為移動端高精度高效率的計算機任務提供AI動力。新模型不僅拓展了移動端網絡的能力邊界,更在實現過程中將模型自動搜索方法和新穎架構設計有機結合起來,創造出高效準確的模型架構。為了構建高效的網絡模型權衡精度和效率,研究人員設計了各設各樣精妙的模型,同時也利用了自動化的大規模架構搜索來不斷探索能力更強、效率更高的模型。這些精妙的設計不斷提高了移動端模型的效率和精度。SqueezeNet開始模型的參數量就不斷下降,為了進一步減少模型的實際操作數(MAdds),MobileNetV1利用了深度可分離卷積提高了計算效率,而v2則加入了線性bottlenecks和反轉殘差模塊構成了高效的基本模塊。隨后的ShuffleNet充分利用了組卷積和通道shuffle進一步提高模型效率。CondenseNet則學習保留有效的dense連接在保持精度的同時降低,ShiftNet則利用shift操作和逐點卷積代替了昂貴的空間卷積。除了各種精巧的設計,研究人員們還請來的算法幫忙自動化設計和搜索網絡模型。強化學習最先被引入這個領域,早期的工作主要集中在cell級別的結構搜索并復用所有層中,而最近的工作則拓展到了塊級別的架構,模型探索不同的層結構和不同分辨率的塊結構來構建網絡。此外網絡模型的剪枝和量化也是提高效率的重要途徑。在這些技術的加持下,Google的研究人員開始著手構建更強大的v3模型。在充分研究了v1版本的深度可分離模塊、v2版本的線性瓶頸和反轉殘差、MnasNet中的序列激活結構后,綜合了三種結構的優點設計出了高效的v3模塊,并利用了改進后的swish作為激活函數,使得后續的量化和效率提升更為有效。在構建v3版本模塊的過程中研究人員主要進行了網絡搜索和模型改進兩個部分,自動和手動的協同工作得到了更為先進的模型架構。
網絡搜索
對于模型結構的探索和優化來說,網絡搜索是強大的工具。研究人員首先使用了神經網絡搜索功能來構建全局的網絡結構,隨后利用了NetAdapt算法來對每層的核數量進行優化。對于全局的網絡結構搜索,研究人員使用了與Mnasnet中相同的,基于RNN的控制器和分級的搜索空間,并針對特定的硬件平臺進行精度-延時平衡優化,在目標延時(~80ms)范圍內進行搜索。隨后利用NetAdapt方法來對每一層按照序列的方式進行調優。在盡量優化模型延時的同時保持精度,減小擴充層和每一層中瓶頸的大小。
網絡改進
在機器搜索得到網絡架構的基礎上,研究人員引入了諸多新型的結構來提升模型的最終效果。不僅重新設計了網絡頭和尾的計算密集層,同時還引入了新的非線性激活h-swish,提升計算和量化能力。mobileNetV2模型中反轉殘差結構和變量利用了1*1卷積來構建最后層,以便于拓展到高維的特征空間,雖然對于提取豐富特征進行預測十分重要,但卻引入了二外的計算開銷與延時。為了在保留高維特征的前提下減小延時,將均值池化前的層移除并用1*1卷積來計算特征圖。特征生成層被移除后,先前用于瓶頸映射的層也不再需要了,這將為減少10ms的開銷,在提速15%的同時減小了30m的操作數。
同時在模型的前端,32個3*3的卷積通過h-swish非線性在保持精度的情況下壓縮到了16個卷積核,又減小了10m操作和3ms的開銷。
對于非線性激活函數,swish雖然很有效但在移動端運行開銷很大,研究人員從兩個方面著手解決這一問題。一方面利用了hard(硬)版本的激活函數:
這種非線性在保持精度的情況下帶了了很多優勢,首先ReLU6在眾多軟硬件框架中都可以實現,其次量化時避免了數值精度的損失,運行快。這一非線性改變將模型的延時增加了15%。但它帶來的網絡效應對于精度和延時具有正向促進,剩下的開銷可以通過融合非線性與先前層來消除。另一方面,研究發現非線性使用帶來的開銷會隨著網絡深度的加深而減小,所以研究人員將在后半部分較深的層中使用以減小開銷。研究人員提出了一大一小兩個模型,分別針對不同級別計算資源的硬件平臺。下表展示了兩種不同模型的架構。可以看到先前提到的h-wish集中在后半部分。
分類、檢測、分割驗證模型能力提升
為了驗證新模型的精度與效率,研究人員分別在圖像分類、目標檢測和實例分割任務上進行了測試,指標全面提升。首先來看ImageNet上的分類結果:
可以看到large版本的模型在精度、操作數上都得到了提升,特別是延時縮短了很多。研究人員還研究了網絡中的乘數因子與分辨率對精度和延時造成的影響:
此外還進行了消融性測試,分別分析了h-swish和各個部件對于模型精度延時的影響:
隨后在COCO數據集上基于V3實現的SSDLite進行了目標檢測任務的評測,可以看到map提升或者延時大幅下降了,100ms左右即可完成目標檢測:
最后還在Cityscape實例分割任務上進行了測試。研究人員還提出了新的輕型R-ASPP (reduced design of the Atrous Spatial Pyramid Pooling)模塊用于分割頭的架構。一個分支用了很大的池化核和大步長節省計算量,另一個分支只用了1*1卷積抽取稠密特征,并加入了底層特征來捕捉更多的細節信息。下圖顯示了減半輸出濾波器數量、改變分割頭、改變輸出步長情況下的實例分割結果,可以看到通過各種性能提升,可以在CPUs上實現400ms左右的分割。
目前github已經能搜到兩個v3版基于PyTorch代碼實現:
https://github.com/AnjieZheng/MobileNetV3-PyTorchhttps://github.com/leaderj1001/MobileNetV3-Pytorch
其中模型定義在model.py/mobilenet_v3.py中,感興趣的小伙伴可以嘗試下新版本的MobileNet香不香?配合論文學習,理論聯系實際學得快記得牢!
-
谷歌
+關注
關注
27文章
6161瀏覽量
105303 -
強化學習
+關注
關注
4文章
266瀏覽量
11247 -
ai技術
+關注
關注
1文章
1266瀏覽量
24287
原文標題:首發 | 精度、速度、效率、性能全面提升!揭秘谷歌最新一代移動端網絡架構MobileNet V3
文章出處:【微信號:thejiangmen,微信公眾號:將門創投】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論