打破常规,逆残差模块超强改进,新一代移动端模型MobileNeXt来了!精度速度双超MobileNetV2
原文鏈接:打破常規(guī),逆殘差模塊超強改進,新一代移動端模型MobileNeXt來了!精度速度雙超MobileNetV2
導(dǎo)語:該文是依圖科技&新加坡國立大學(xué)顏水成大佬團隊提出的一種對標MobileNetV2的網(wǎng)絡(luò)架構(gòu)MobileNeXt。它針對MobileNetV2的核心模塊逆殘差模塊存在的問題進行了深度分析,提出了一種新穎的SandGlass模塊,并用于組建了該文的MobileNeXt架構(gòu),SandGlass是一種通用的模塊,它可以輕易的嵌入到現(xiàn)有網(wǎng)絡(luò)架構(gòu)中并提升模型性能。該文應(yīng)該是近年來為數(shù)不多的優(yōu)秀終端模型了,推薦指數(shù)五顆星。
paper: https://arxiv.org/abs/2007.02269
code: https://github.com/zhoudaquan/rethinking_bottleneck_design(未開源)
Abstract
截止目前,逆殘差模塊已成為手機端網(wǎng)絡(luò)架構(gòu)設(shè)計的主流架構(gòu)。它通過引入兩個主要的設(shè)計規(guī)則(1.逆殘差學(xué)習;2.線性瓶頸層)對經(jīng)典的殘差瓶頸模塊進行了改變。
該文作者對這種設(shè)計模式改變的必要性進行了重思考,發(fā)現(xiàn):這種設(shè)計模塊可能導(dǎo)致信息損失與梯度混淆。鑒于此,作者提出對該結(jié)構(gòu)進行鏡像并提出一種新穎的瓶頸模塊,稱之為SandGlass Block,它在更高維度進行恒等映射與空間變換,因此可以有效的緩解信息損失與梯度混淆。
作者通過實驗證實:所提模塊比已有的逆殘差模塊更有效。在ImageNet分類任務(wù)中,通過簡單的模塊替換(即采用SandGlass 替換MobileNetV2中的InvertedResidualBlock),即可取得了1.7%的性能提升,且不會導(dǎo)致額外的參數(shù)量與計算量提升;在VOC2007測試集上,可以按到目標檢測指標的0.9%mAP的提升。
與此同時,作者將所提模塊嵌入到NAS方法(DARTS)搜索空間中,可以取得了0.13%的性能提升且參數(shù)量降低25%。
Method
下圖給出了目前CNN網(wǎng)絡(luò)架構(gòu)常用的兩種主流模塊與本文所提的模塊:
- Bottleneck,見下圖a,它包含兩個1x1卷積(分別進行降維與升維)與一個3x3卷積(用于空間信息變換),它是一種heavy-weight模塊;
- Inverted Residual Block,見下圖b,它包含兩個1x1卷積(分別進行升維與降維)與一個3x3深度卷積(用于空間信息變換),它是一種light-weight模塊。
- SandGlass,見上圖c,整體形勢上它與Bottlneck比較類似,但它引入了深度卷積降低計算量,更多描述見下文。
SandGlass
已有研究表明:(1) 更寬的網(wǎng)絡(luò)有利于緩解梯度混淆問題并有助于提升模型性能;(2)逆殘差模塊中的短連接可能會影響梯度回傳。
考慮到上述逆殘差模塊的局限性,作者對其設(shè)計規(guī)則進行重思考并提出了SandGlass模塊緩解上述問題。該模塊的設(shè)計主要源自如下幾點分析:
- 保持更多的信息從bottom傳遞給top層,進而有助于梯度回傳;
- 深度卷積是一種輕量型單元,可以執(zhí)行兩次深度卷積以編碼更多的空間信息。
基于上述分析,作者從以下幾個方面進行了模塊的精心設(shè)計(最終設(shè)計的模塊見上圖)。
- Position of Expansion and Reduction. 在原始的逆殘差模塊中先進行升維再進行降維?;谇笆龇治?#xff0c;為確保高維度特征的短連接,作者對兩個1x1卷積的順序進行了調(diào)整。假設(shè)F∈RDf×Df×MF \in R^{D_f \times D_f \times M}F∈RDf?×Df?×M表示輸入張量,G∈RDf×Df×MG \in R^{D_f \times D_f \times M}G∈RDf?×Df?×M表示輸出張量(注:此時尚未考慮深度卷積),那么該模塊的可以寫成如下形式,見上圖b中的中間兩個1x1卷積。
G=?e(?r(F))+FG = \phi_e (\phi_r(F)) + F G=?e?(?r?(F))+F
- High-dimensional Shortcut. 作者并未在瓶頸層間構(gòu)建短連接,而是在更高維特征之間構(gòu)建短連接,見上圖b。更寬的短連接有助于更多的信息從輸入F傳遞給輸出G,從而有更多的梯度回傳。
- Learning expressive spatial features. 1x1卷積有助于編碼通道間的信息,但難以獲取空間信息,因此,在這里作者沿著逆殘差模塊的思路引入深度卷積編碼空間信息。不同于逆殘差模塊在兩個1x1卷積之間引入深度卷積,作者認為1x1卷積導(dǎo)致了減少的空域信息編碼,因此將深度卷積置于兩個1x1卷積之外,見上圖b中的兩個3x3深度卷積。該模塊可以采用如下公式進行描述:
G^=?1,p?1,d(F)G=?1,d?2,p(G^)+F\hat{G} = \phi_{1,p}\phi_{1,d}(F) \\ G = \phi_{1,d} \phi_{2,p}(\hat{G}) + F G^=?1,p??1,d?(F)G=?1,d??2,p?(G^)+F
其中?i,p,?i,d\phi_{i,p}, \phi_{i,d}?i,p?,?i,d?分別表示1x1卷積與深度卷積。從而確保了深度卷積在高維空間處理并得到更豐富的特征表達。
- Activation Layer. 已有研究表明:線性瓶頸層有助于避免特征出現(xiàn)零化現(xiàn)象,進而導(dǎo)致信息損失。基于此,作者在用于降維的1x1卷積后不添加激活函數(shù)。同時最后一個深度卷積后也不添加激活函數(shù),激活函數(shù)今天加第一個深度卷積與最后一個1x1卷積之后。
- Block Structure. 基于上述考慮,我們得到了該文所設(shè)計的新穎的殘差瓶頸模塊,結(jié)構(gòu)如下表與上圖b所示。注:當輸入與輸出通道數(shù)不相同時不進行短連接操作。
MobileNeXt Architecture
前面已經(jīng)對該文所提到的SandGlass模塊進行了詳細介紹說明,那么接下來就是如何利用上述模塊構(gòu)建網(wǎng)路架構(gòu)了。作者將上述模塊構(gòu)建的網(wǎng)絡(luò)架構(gòu)稱之為MobileNeXt(是為了對標MobileNet嗎?哈哈)。MobileNeXt的詳細配置信息見下表。注:SandGlass中的擴展比例與MobileNetV2中的相同,均為6.
Identity tensor multiplier
已有研究表明:殘差模塊中的短連接有助于梯度跨層傳播。但是,作者通過實驗發(fā)現(xiàn):沒有必要保持全局恒等tensor與殘差分支組合。為使得該網(wǎng)絡(luò)更適合于手機端,作者引入了一個新的超參數(shù):identity tensor multiplier,表示為α∈[0,1]\alpha \in [0,1]α∈[0,1]。為簡單起見,我們假設(shè)?\phi?表示殘差分支的變換函數(shù),那么添加該超參數(shù)后的模塊可以重寫為:
G1:αM=?(F)1:αM+F1:αMGαM:m=?(F)αM:MG_{1:\alpha M} = \phi(F)_{1: \alpha M} + F_{1:\alpha M} \\ G_{\alpha M : m} = \phi(F)_{\alpha M : M} G1:αM?=?(F)1:αM?+F1:αM?GαM:m?=?(F)αM:M?
這里引入的超參數(shù)α\alphaα有兩個作用:
- 通過降低該超參數(shù),每個模塊中的add數(shù)量可以進一步降低,因為add操作會占用不少耗時。用戶可以選擇更少的α\alphaα以得到更好的推理速度且性能幾乎無影響;
- 可以降低內(nèi)存訪問時間。影響模型推理的一個重要因素是:內(nèi)存訪問消耗(Memory acces cost, MAC)。降低該超參數(shù)有助于減少cache占用,進而加速推理。更多分析見實驗部分。
Experiments
為說明所提方案的有效性,作者在ImageNet與VOC數(shù)據(jù)集上進行了實驗分析。在模型訓(xùn)練過程中,優(yōu)化器為SGD(momentum=0.9,weight_decay=4×10?54\times 10^{-5}4×10?5),初始學(xué)習率為0.05,cosine方式衰減,BatchSize=256,4個GPU。如無特殊說明,模型總計訓(xùn)練200epoch。
Comparsions with MobileNetV2
下表給出了所提方法與MobileNetV2在不同參數(shù)量下的性能對比??梢钥吹?#xff1a;(1) 所提方法在參數(shù)量和精度方面均優(yōu)于MobileNetV2;(2) 模型越小,所提方法優(yōu)勢越明顯。
下表給出了所提方法在添加后訓(xùn)練量化后的性能對比??梢钥吹?#xff1a;后訓(xùn)練量化對于MobileNet的精度影響非常大,而所提方法經(jīng)量化后性能差異進一步拉大。產(chǎn)生這種現(xiàn)象的原因有兩點:(1) 相比MobileNetV2,所提方法將短連接有瓶頸區(qū)域移到了高維區(qū)域,經(jīng)由量化,跟過的信息得以保留;(2) 采用更多的深度卷積有助于保留更多的空域信息,而空域信息有助于分類性能提升。
為更好的說明所提模塊有效性,作者將MobileNetV2的卷積數(shù)提升到與SandGlass相同。實驗結(jié)果見下表。盡管添加了額外的深度卷積有確實提升了模型性能,但仍比所提方法的性能低1%,而且MobileNetV2添加額外的深度卷積還導(dǎo)致了參數(shù)量與計算量的增加。
此外,作者還給出了所提方法與其他SOTA方法的性能對比,見下表。注:為更好的說明所提方法的優(yōu)越性,作者還額外引入了SE模塊。
下表給出了超參數(shù)α\alphaα不同配置時的模型性能對比,注:硬件平臺為Google Pixel 4XL手機,Pytorch導(dǎo)出模型??梢钥吹诫S著該超分數(shù)的醬燒,推理速度有提升,且性能無顯著下降。此外,作者還提到,在Pixel 4XL平臺,TF-Lite推理框架下,MobileNeXt的推理速度為66ms,MobileNetV2的推理速度為68ms(可能這里的模型進行了量化,作者原文并未細說)。
Object Detection
為探索所提方案的遷移性能,作者在目標檢測任務(wù)上進行了更多的實驗分析,結(jié)果見下表。相比MobileNetV2,所提方法作為Backbone時的性能可以提升0.09mAP。
Combine with NAS
為更好說明所提方案的有效性,作者還將其與NAS相結(jié)合,將該模塊為作為NAS網(wǎng)絡(luò)的搜索空間。相關(guān)結(jié)果見下表。關(guān)于NAS所得網(wǎng)路架構(gòu)建議查看原文的supp部分內(nèi)容。
好了,全文核心內(nèi)容到此結(jié)束。對此感興趣的小伙伴建議去看原文,雖然這里已經(jīng)將文章核心介紹清楚了,但實驗部分的分析還是建議查看原文。
Conclusion
該文對逆殘差模塊中的設(shè)計規(guī)則與缺陷進行了深度分析,并基于分析結(jié)果提出一種新穎的稱之為SandGlass的模塊。它打破了傳統(tǒng)殘差模塊的設(shè)計思想并著重說明了高維度特征進行短連接的重要。最后作者通過實驗在分類、檢測以及NAS方面論證了所提方案的有效性。
關(guān)注極市平臺公眾號(ID:extrememart),獲取計算機視覺前沿資訊/技術(shù)干貨/招聘面經(jīng)等
總結(jié)
以上是生活随笔為你收集整理的打破常规,逆残差模块超强改进,新一代移动端模型MobileNeXt来了!精度速度双超MobileNetV2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ECCV2020 收录论文汇总(持续更新
- 下一篇: 2020年计算机视觉综述论文汇总!涵盖1