論文提出引入少數超大卷積核層來有效地擴大有效感受域,拉近了CNN網絡與ViT網絡之間的差距,特別是下游任務中的性能。整篇論文闡述十分詳細,而且也優化了實際運行的表現,值得讀一讀、試一試
來源:曉飛的算法工程筆記 公衆號
論文: Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs
Introduction
在圖像分類、特徵學習等前置任務(pretext task)以及目標檢測、語義分割等下游任務(downstream task)上,卷積網絡的性能不斷被ViTs(vision transformer)網絡超越。人們普遍認爲ViTs的性能主要得益於MHSA(multi-head self-attention)機制,併爲此進行了很多研究,從不同的角度對比MHSA與卷積之間的優劣。
解釋VisTs與CNNs的性能差異不是這篇論文的目的,相對於研究MHSA和卷積的差異,論文則關注於ViTs與CNNs在構建長距離位置關係(long-range spatial connections)的範式上的差異。在ViTs中,MHSA通常使用較大的感受域(\(\ge 7\times 7\)),每個輸出都能包含較大範圍的信息。而在CNNs中,目前的做法都是通過堆疊較小(\(3\times 3\))的卷積來增大感受域,每個輸出所包含信息的範圍較小。
基於上面發現的感受域差異,論文嘗試通過引入少量大核卷積層來彌補ViTs和CNNs之間的性能差異。藉此提出了RepLKNet網絡,通過重參數化的大卷積來建立空間關係。RepLKNet網絡基於Swin Transformer主幹進行改造,將MHSA替換爲大的深度卷積,性能比ViTs網絡更好。另外,論文通過圖1的可視化發現,引入大卷積核相對於堆疊小卷積能顯著提升有效感受域(ERFs),甚至可以跟ViTs一樣能夠關注形狀特徵。
Guidelines of Applying Large Convolutions
直接使用大卷積會導致性能和速度大幅下降,論文通過實驗總結了5條高效使用大卷積核的準則,每條準則還附帶了一個備註。
Guideline 1: large depth-wise convolutions can be efficient in practice.
大卷積的計算成本很高,參數量和計算量與卷積核大小成二次方關係,而深度卷積恰好可以彌補這一缺點。將各stage的卷積核從\([3,3,3,3]\)標準卷積改爲\([31,29,27,13]\)深度卷積,僅帶來了18.6%的計算量增加和10.4%的參數量增加。
但由於計算量和內存訪問數的比值較低,\(3\times 3\)深度卷積在並行設備上的計算效率較低。不過當卷積核變大時,單個特徵值被使用的次數增加,深度卷積的計算密度則會相應提高。根據Roofline模型,計算密度隨着卷積核的增大而增大,計算延遲應該不會像計算量那樣增加那麼多。
-
Remark 1
如表1所示,目前的深度學習框架對深度卷積的實現較爲低效。爲此,論文嘗試了不同的方法來優化CUDA內核,最後選擇了block-wise(inverse) implicit gemm算法並集成到了MegEngine框架中。相對於Pytorch,深度卷積帶來的計算延遲從49.5%降低到了12.3%,幾乎與計算量成正比。
具體的相關分析和實現,可以去看看這篇文章《憑什麼 31x31 大小卷積核的耗時可以和 9x9 卷積差不多?》(https://zhuanlan.zhihu.com/p/479182218)。
Guideline 2: identity shortcut is vital especially for networks with very large kernels.
爲了驗證短路連接對大卷積核的重要性,論文以MobileNetV2作爲基準,替換其中的深度卷積核大小來進行有無短路連接的對比。如表2所示,在有短路連接的情況下,大卷積核能帶來0.77%的性能提升。而沒短路連接的情況下,大卷積核的準確率降低至53.98%。
-
Remark 2
這個準則同樣也適用於ViTs中。近期有研究發現,如果移除短路連接,ViTs中的注意力會隨着深度的增加而雙倍地減少,最後出現注意力過度平滑的問題。儘管大卷積核性能下降的原因可能跟ViT不一樣,但同樣也有難以捕捉局部特徵的現象。爲此,論文認爲如參考文獻《Residual networks behave like ensembles of relatively shallow
networks》所說的,短路連接能夠使得模型顯式地變爲多個不同感受域大小的模型的組合(小感受域與大感受域不斷直接累加),從而能夠在更大的感受域中得到提升並且不會丟失捕捉小尺度特徵的能力。
Guideline 3: re-parameterizing with small kernels helps to make up the optimization issue.
論文將MobileNetV2中的\(3\times 3\)卷積核分別替換爲\(9\times 9\)和\(13\times 13\),再採用結構重參數幫助更好地訓練。具體的做法如圖2所示,先將\(3\times 3\)卷積核替換爲更大的卷積核,再並行一個\(3\times 3\)深度卷積層,經過BN處理後將其結果相加作爲輸出。訓練完成後,合併並行的大小卷積層及其BN層,得到沒有小卷積層的模型。整體思路跟RepVGG類似,有興趣的可以去看看公衆號之前的文章《RepVGG:VGG,永遠的神! | 2021新文》
結構重參數的對比如表3所示,卷積核從9增大到13導致了準確率的下降,使用結構重參數則可用解決這個問題。在語義分割任務中,結構重參數也同樣可以解決增大卷積核導致性能下降的問題。
-
Remark 3
ViTs在小數據集上會有優化問題,通常需要添加前置卷積層來解決。比如在每個self-attention前面添加一個\(3\times 3\)深度卷積層,這跟論文提出的並行\(3\times 3\)卷積的做法類似。添加的卷積層能爲ViT網絡預先引入平移不變性和局部特徵,使其在小數據集上更容易優化。論文在RepLKNet上也發現了類似的現象,當預訓練數據集增大到7300萬時,不再需要結構重參數化來輔助優化。
Guideline 4: large convolutions boost downstream tasks much more than ImageNet classification.
如前面表3所示,相對於分類任務,卷積核增大爲分割任務帶來的收益更多。而表5的結果也有類似的現象,大卷積核在ADE20K數據集上的提升更爲明顯。這表明,即使預訓練模型有相似的ImageNet性能,但其在下游任務中的性能可能差距較大。
-
Remark 4
論文認爲導致這一現象的原因主要有兩點:
- 大卷積核能顯著增加有效感受域(ERF),可包含更多的上下文信息,這對下游任務十分關鍵。
- 大卷積能引導網絡傾向於學習更多形狀特徵。圖像分類僅需要上下文或形狀信息,而目標識別則非常需要形狀信息。所以,傾向於更多形狀特徵的模型顯然更適合下游任務。ViTs之所以在下游任務中表現強勁,也是得益於其強大的形狀特徵提取能力。相反,ImageNet預訓練的傳統卷積網絡則傾向於上下文信息。
Guideline 5: large kernel (e.g., 13×13) is useful even on small feature maps (e.g., 7×7).
爲了驗證大卷積在小特徵圖上的有效性,將MobileNetV2最後的stage(特徵圖大小爲7x7)的深度卷積分別擴大至7x7和13x13進行對比,實驗結構附帶了準則3建議的結構重參數。結果如表4所示,儘管特徵圖已經很小了,增大卷積核依然可以帶來性能提升。
-
Remark 5
當小特徵圖上的卷積核變大時,卷積的平移不變性不再嚴格成立。如圖3所示,兩個相鄰的輸出關聯了不同的卷積核權值。這剛好符合ViTs的理念,通過放寬對稱的先驗要求(如輸出要用相同的卷積權值得到)來獲得更大的識別能力。有趣的是,transformer中使用的2D相對位置編碼(其它特徵相對於當前特徵的位置)也可認爲是一個卷積核大小爲\((2H-1)\times(2W-1)\)的深度卷積,其中\(H\)和\(W\)分別爲特徵圖的高和寬。所以,大卷積核不僅能夠幫助學習特徵間的相對位置信息,由於要添加較多padding,還編碼了絕對位置信息(參考論文《On translation invariance in cnns: Convolutional layers can exploit
absolute spatial location》)。
RepLKNet: a Large-Kernel Architecture
基於上面的準則,論文提出了RepLKNet,一個大卷積核的純CNN架構。目前,SOTA小網絡仍然以CNN爲主,所以論文主要在大模型方面與ViT進行比較。
Architecture Specification
RepLKNet的結構如圖4所示,各模塊細節如下:
- Stem:由於RepLKNet的主要應用是下游任務,所以需要在網絡前期捕捉更多的細節。在開始的stride=2 3x3卷積下采樣之後接一個3x3深度卷積來提取低維特徵,之後接一個1x1卷積和3x3深度卷積用於下采樣。
- Stages 1-4:每個stage包含多個RepLK Block,block裏面包含了準則1建議的深度卷積和準則2建議的短路連接。根據準則3,每個深度卷積並行一個5x5深度卷積用於結構重參數。除了感受域和空間特徵提取能力,模型的特徵表達能力還和特徵的維度有關。爲了增加非線性和通道間的信息交流,在深度卷積前用1x1卷積增加特徵維度。參考transformers和MLPs網絡使用的Feed-Forward Network(FFN),論文提出CNN風格的ConvFFN,包含短路連接、兩個1x1卷積核GELU。在應用時,ConvFFN的中間特徵一般爲輸入的4倍。參照ViT和Swin,將ConvFFN放置在每個RepLK Block後面。
- Transition Blocks:放在stage之間,先用1x1卷積擴大特徵維度,再通過兩個3x3深度卷積來進行2倍下采樣。
總的來說,每個stage有3個超參數:ReLK Block數\(B\)、維度數\(C\)以及卷積核大小\(K\),所以一個RepLKNet的結構可表達爲\([B_1, B_2, B_3, B_4]\), \([C_1, C_2, C_3, C_4]\), \([K_1, K_2, K_3, K_4]\)。
Making Large Kernels Even Larger
論文固定\(B=[2,2,18,2]\)以及\(C=[128,256,512,1024]\),簡單調整\(K\)提出了5個不同大小的網絡,稱爲RepLKNet-3/7/13/25/31。在沒有特殊調整訓練配置情況下,各模型的參數和性能如表5所示。
另外,論文還對訓練配置進行細調以便於與SOTA模型對比,該模型稱爲RepLKNet-31B。在此基礎上,調整超參數\(C=[192,384,768,1536]\)得到RepLKNet-31L。進一步調整超參數\(C=[256,512,1024,2048]\)得到RepLKNet-31XL,該網絡的RepLK Blocks的中間特徵爲輸入的1.5倍。
Discussion
Large-Kernel CNNs have Larger ERF than Deep Small-Kernel Models
一般來說,堆疊的小卷積最終也能達到跟單個大卷積一樣的感受域大小,但爲什麼傳統網絡的性能要低於大卷積核網絡呢?論文認爲,儘管能達到同樣大小的感受域,單層大卷積核要比多層小卷積更有效,主要有兩點:
- 根據有效感受域特性,其大小與\(\mathcal{O}(K\sqrt{L})\)成比例關係。可以看到,有效感受域與卷積核大小成線性關係,而與深度成次線性關係。
- 深度的增加會帶來訓練問題。儘管ResNet似乎已經解決了這個問題,但近期有研究表明,ResNet的有效感受域並沒有隨着深度增加而顯著增加。
所以大卷積核的設計僅需要更少的層就可以達到預定的有效感受域,同時避免了深度增加帶來的優化問題。
論文也對ResNet和RepLKNet的有效感受域進行可視化和統計,發現RepLkNet整體有效感受域要大於ResNet。
Large-kernel Models are More Similar to Human in Shape Bias
有研究發現ViT更接近人體視覺,基於目標的形狀進行預測,而CNN則更多地依賴局部上下文。論文借用https://github.com/bethgelab/model-vs-human的工具來計算模型的形狀特徵的偏向性,得到圖5的結果,結果越低越好。從結果來看,大卷積核的RepLKNet更注重形狀特徵,當卷積覈減少時,RepLKNet-3則變爲更注重上下文特徵。
Dense Convolutions vs. Dilated Convolutions
空洞卷積是一個常用的擴大卷積範圍的方法,所以論文對空洞深度卷積和普通深度卷積進行了對比。如表11所示,儘管最大感受域可能一樣,但空洞深度卷積的表達能力要弱很多,準確率下降非常明顯。這也是符合預期的,雖然空洞卷積的感受域較大,但其計算用的特徵非常少。
Experiment
ImageNet圖像分類性能對比。
Cityscapes語義分割性能對比。
ADE20K語義分割性能對比。
MSCOCO目標檢測性能對比。
Conclusion
論文提出引入少數超大卷積核層來有效地擴大有效感受域,拉近了CNN網絡與ViT網絡之間的差距,特別是下游任務中的性能。整篇論文闡述十分詳細,而且也優化了實際運行的表現,值得讀一讀、試一試。
如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公衆號【曉飛的算法工程筆記】