性能超越谷歌!依圖團隊提出新一代移動端網絡架構MobileNeXt
【新智元導讀】AIoT的時代即將來臨,移動端智能應用呈爆發式增長,但是大型神經網絡在移動端的性能制約了AI在移動端的推廣。最近,依圖團隊發表在ECCV的一篇論文,提出了新一代移動端神經網絡架構MobileNeXt,大大優於谷歌的MobileNet、何愷明團隊提出的ResNet等使用倒殘差結構的模型,爲移動端算力帶來了新的突破。
《三體》中羅輯沉睡了兩個世紀後,在位於地下一千多米的城市中醒來;《流浪地球》中,行星推進器下500米的地下城。
在那裏是一樣的人間煙火,只不過人們生活的場景從地上轉移到了地下。
未來,隨着人類棲息空間的不斷延展和拓寬,現存的城市管理體系註定會失效,必將需要一個高度複雜的智能系統來維護,而打造智慧城市,要完成交通、供水、供電、供氣、通訊、環保等等基礎設施的數字化建設,但是很少有城市關注到。
而上海的「一網統管」系統做到了,小到每一個路燈、井蓋、消防栓,大到26000多公里的地下管網,都被連接了起來,讓城市的精細化管理成爲可能。
這個「一網統管」得益於依圖自主研發的人工智能芯片,人工智能算力在城市管理中規模化落地的可能性被大大釋放,爲此還得到了央視《新聞聯播》“十三五”成就巡禮專題的點贊。
一直以來,依圖都在智能基礎設施的建設方面狠下功夫,在基礎的算法和芯片方面不斷突破新的邊界。
移動端神經網絡新架構MobileNeXt,超越谷歌MobileNet和何愷明團隊ResNet
基礎網絡結構是各種算法的基礎,直接影響模型最終的性能,這方面高質量的研究很稀缺。
依圖研發團隊近期在 ECCV 2020 發表了新論文,通過分析當前主流移動端網絡的倒殘差模塊的優勢與劣勢,提出了一種改良版本MobileNeXt,大大提升了移動端神經網絡的性能。
論文:
https://arxiv.org/abs/2007.02269
代碼:
https://github.com/yitu-opensource/MobileNeXt
在不使用SE等性能提升模塊的條件下,相比於主流的MobileNetV2,MobileNeXt在相同計算量下可達到1.7%的分類精度提升。
此外,新提出的沙漏模塊可用於改良神經網絡自動化搜索的搜索空間,在使用相同搜索算法的情況下,加入沙漏模塊的搜索空間可以在CIFAR10的數據集上取得更高效的模型架構,大大優於谷歌的MobileNet、何愷明團隊提出的ResNet等使用倒殘差結構的模型。
圖一:ImageNet 測試結果
倒殘差和線性瓶頸,讓移動端神經網絡徹底「通車」
谷歌在2017年提出了專門爲移動端優化的輕量級CNN網絡,該研究最大的亮點是提出了深度可分離卷積(depthwise separable convolution)。
傳統卷積
傳統卷積分兩步,每個卷積核與每個特徵圖按位相乘,然後再相加,此時,計算量爲,其中爲特徵圖尺寸,爲卷積核尺寸,M爲輸入通道數,N爲輸出通道數。
深度可分離卷積
而谷歌提出的深度可分離卷積,將普通卷積拆分成了一個深度卷積depthwise和一個逐點卷積pointwise。
首先按通道進行按位相乘,通道數沒有改變;然後將第一步的結果,使用1*1的卷積核進行傳統的卷積,此時通道數可以進行改變。使用了深度可分離卷積,其計算量變爲+11。
深度可分離卷積的計算量下降了,也是MobileNet V1能夠實現加速的主要原因。
MobileNet V1的速度雖然提高了,但是低維信息映射到高維的維度較低,經過ReLU後再映射回低維時損失比較大,所以谷歌在V1的基礎上,又引入了倒殘差(Inverted Residuals)和線性瓶頸(Linear Bottlenecks)兩個模塊,使得MobileNetV2降低時延的同時精度也有所提升。
MobileNetV2 提出的倒殘差模塊現在已經成爲移動端網絡的基礎構建模塊。
倒殘差模塊中間粗兩頭細,擴張-卷積-壓縮,提取更高維信息
線性瓶頸模塊,將最後的ReLU替換成線性激活函數,進一步降低信息損失
通過在高維度使用深度可分離卷積,倒殘差網絡可以有效降低計算開銷,保證模型性能。
同時,瓶頸結構的連接方式可以有效降低點操作的數量、減少所需要的內存訪問,進而進一步減小硬件上的讀取延時,提升硬件執行效率。
倒殘差梯度回傳易「走丟」,沙漏型瓶頸結構讓梯度不「抖動」
倒殘差結構的不足
然而,MobileNetV2集中於瓶頸結構的網絡連接方式可能會造成優化過程中的梯度回傳抖動,進而影響模型收斂趨勢,導致模型性能降低。
現有研究表明:(1) 更寬的網絡可以緩解梯度混淆問題並有助於提升模型性能;(2)逆殘差模塊中的短連接可能會影響梯度回傳。
爲了解決MobileNetV2中瓶頸結構導致的優化問題,依圖團隊重新思考了由ResNet提出的傳統瓶頸結構的鏈接方式,這種連接方式把梯度主要集中在較高維度的網絡層,可以減少梯度抖動、加速網絡收斂。
於是便有了一種新的網絡設計模塊--沙漏型瓶頸結構,既能保留高維度網絡加速收斂和訓練的優勢,又能利用深度卷積帶來的計算開銷收益,減少高維特徵圖的內存訪問需求,提高硬件執行效率。
圖二:a.瓶頸結構,b.倒殘差結構,c.新的沙漏型瓶頸結構
依圖團隊把跳躍鏈接放置在高維度神經網絡層,並使用深度卷積來降低計算開銷,然後使用兩連續層1x1卷積來進一步降低計算開銷的效果。
圖三:Sandglass Block的具體原理設計
可以看到,Sandglass Block可以保證更多的信息從bottom層傳遞給top層,進而有助於梯度回傳;執行了兩次深度卷積以編碼更多的空間信息。
基於上面的分析,我們來看依圖研發團隊都做了哪些設計優化。
降維和升維的位置
在原始的倒殘差模塊中先進行升維再進行降維。
基於前述分析,爲確保高維度特徵的短連接,依圖團隊對兩個1x1卷積的順序進行了調整。假設
表示輸入張量,
表示輸出張量(注:此時尚未考慮深度卷積),那麼該模塊的計算可以寫成如下形式,
見圖三b中的中間兩個1x1卷積。
高維度短連接
依圖團隊並未在瓶頸層間構建短連接,而是在更高維特徵之間構建短連接(見圖三b)。更寬的短連接有助於更多信息從輸入F傳遞給輸出G,從而有更多的梯度回傳。
與此同時,由於高維度的跳躍鏈接會導致更多的點加操作、需求更多的內存讀取訪問,直接連接高維度跳躍鏈接會降低硬件執行效率。
一種新穎的殘差跳躍連接可以解決這一問題:即只使用一部分信息通道進行跳躍鏈接。這一操作可直接減少點加操作和特徵圖大小,進而直接提升硬件執行效率。
實驗結果顯示,僅使用一半的信息通道進行跳躍鏈接不會造成精度損失。
引入更豐富的空間信息
我們知道,1x1卷積有助於編碼通道間的信息,但難以獲取空間信息,而深度卷積可以。因此依圖團隊沿着倒殘差模塊的思路引入了深度卷積來編碼空間信息。
但跟倒殘差模塊不同的是深度卷積的位置。
倒殘差模塊的深度卷積在兩個1x1卷積之間,而1x1卷積會降低空域信息編碼,因此依圖團隊將深度卷積置於兩個1x1卷積之外(見圖三b中的兩個3x3深度卷積),這樣就能確保深度卷積在高維空間得到處理並獲得更豐富的特徵表達。
(該模塊可以採用如上公式進行描述)
激活函數的位置
線性瓶頸層有助於避免特徵出現零化現象導致的信息損失,因此在降維的1x1卷積後不再添加激活函數。同時最後一個深度卷積後也不添加激活函數,激活函數只添加在第一個深度卷積與最後一個1x1卷積之後。
基於上述考慮,得到了該文所設計的新穎的倒殘差瓶頸模塊,結構如下表所示。
圖四:新的殘差瓶頸模塊的具體連接方式
基於上述所示沙漏瓶頸模塊,依圖團隊提出了一種新的移動端網絡架構MobileNeXt。
圖五:依圖團隊提出的新的移動端網絡架構
依圖一直是穩紮穩打型的選手,做研究也很務實、不追求多和雜,梯度抖動就解決抖動的問題,損失大就想辦法降低損失,追求的是實用和落地,而不是去刷各種比賽的榜單。
既然是基於移動端的網絡,依圖團隊在Google Pixel手機上進行了測試,看MobileNeXt跟MobileNet V2相比,性能有多少提升。
在PyTorch環境下,可以看到MobileNeXt在不同大小的模型下,精度均優於MobileNetV2,而且模型越小,這種優勢越明顯。
圖六:與MobileNetV2 對比的實驗結果
當與後訓練量化方法結合時,MobileNeXt也有很大優勢。(後訓練量化可以簡單看做模型壓縮)
圖七:當與量化方法結合的時候,MobileNeXt的優勢會更加明顯
硬件執行效率方面,僅使用部分新系統進行跳躍鏈接可有效提高硬件執行效率。值得注意的是,在進行殘差信息通道實驗的時候,沒有使用任何額外的監督信息(比如知識蒸餾)。
圖八:使用不同信息通道數目對模型精度的影響
目標檢測方面,相比MobileNetV2, 使用MobileNeXt的基礎架構,可帶來0.9mAP的收益。
圖九:在PascalVOC 2017 數據集上的實驗驗證
神經網絡搜索方面,爲驗證信息處沙漏模型的高效性,依圖團隊使用新提出的沙漏模型對神經網絡搜索的搜索空間進行了擴充。在使用相同搜索算法的情況下,基於擴充空間的搜索結果可以得到0.13% 的精度提升,同時減少25% 的參數量。
圖十:使用相同搜索算法時基於擴充空間的搜索結果
透過現象看本質,是研發團隊成功設計沙漏型瓶頸模塊及MobileNeXt的根本所在,可以看到,基礎領域的進展最終靠的還是自身紮實的基本功。
從這個層面講,依圖早已不再是傳統意義上的CV公司,而是憑藉基礎算法的優勢和芯片的加持,逐漸成長爲新一代的AI算力廠商。
未來,不光移動端,雲端和邊緣端的廠商也將從依圖的軟硬件協同算法創新中獲益,節約自主開發的算力成本,更好地驅動整體業務。
從看、聽再到本質的理解,機器的智能在不斷進化中逐漸邁向更高的維度,我們看到,依圖正在努力將智能化的理論不斷付諸實踐,成爲AI落地的引路人。
參考鏈接:
https://arxiv.org/abs/2007.02269
https://github.com/yitu-opensource/MobileNeXt
https://www.cnblogs.com/dengshunge/p/11334640.html
https://bbs.cvmart.net/articles/2861