【卷积核设计】Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs
文章目錄
- 一、背景
- 二、方法
- 三、RepKLNet:a Large-Kernel Architecture
- 3.1 結(jié)構(gòu)
- 3.2 盡可能的讓卷積核變大
- 3.3 圖像分類
- 3.4 語義分割
- 3.5 目標檢測
- 四、分析
- 五、限制
- 六、結(jié)論
論文鏈接:https://arxiv.org/pdf/2203.06717.pdf
代碼鏈接:https://github.com/DingXiaoH/RepLKNet-pytorch
本文收錄于 CVPR2022
一、背景
CNN 雖然在計算機視覺上處于長期的統(tǒng)治地位,但由于 transformer 方法的提出,這一現(xiàn)象發(fā)生了改變。比如 ViT,已經(jīng)在分類、特征學(xué)習(xí)、目標檢測、語義分割、圖像復(fù)原等方面都取得了超越 CNN 的效果。
有人認為 ViT 的效果離不開 MHSA (多頭自注意)的結(jié)構(gòu),也有人替換了 MHSA 后仍然能取得好的效果,所以到底是什么造成了 CNN 和 ViT 的差距呢?
作者聚焦到了個這問題:長距離空間信息間聯(lián)系的建立
在 ViT 中,MHSA 能夠同時抽取長距離和短距離的依賴關(guān)系,也就是能夠聚合大感受野的信息
在 CNN 中,基本沒有使用很大的卷積核(除了第一層)
所以作者提出質(zhì)疑:能否使用少量大卷積核來代替大量小卷積核?這樣能彌補兩者之間的差距嗎?
DW 卷積概念補充:不同于常規(guī)卷積操作,Depth-wise Convolution 的一個卷積核負責(zé)一個通道,一個通道只被一個卷積核卷積。
二、方法
1、作者提出了 RepLKNet,一個純 CNN 網(wǎng)絡(luò)。類似于 swin transformer 的結(jié)構(gòu),但做了些修改:
- 使用大的 depth-wise 卷積代替了 MHSA
- 主要對比較大的模型作為基準測試,因為 vit 過去被認為在大數(shù)據(jù)和模型方面超過了CNN
2、本文中,作者系統(tǒng)的探索了大卷積核的效果:
- 在 CNN 中使用的 depth-wise 卷積,卷積核大小從 3×33 \times 33×3 → 31×3131 \times 3131×31
- 這種簡單增加卷積核大小的操作是很有效的,也能很好的和 ViT 的機理契合
作者由此給出了如下總結(jié):
① 很大的卷積核在實際使用中也會很高效
大的卷積核一直被認為計算量很大,但 depth-wise 可以很好的克服這個問題。當本文作者將不同 stage 的卷積核大小從 [3, 3, 3, 3] 提高到 [31, 29, 27,13] 后,FLOPs 和 參數(shù)量分別提升了 18.6% 和 10.4%。
② 殘差連接是很重要的,尤其對于大卷積核的網(wǎng)絡(luò)
以 mobilenetv2 為例,作者使用 13x13 的卷積核代替了 3x3 的卷積核,結(jié)果如表 2 所示。
③ 使用小卷積核重參數(shù)化有助于解決參數(shù)優(yōu)化問題
論文將MobileNetV2中的 3x3 卷積核分別替換為 9x9 和 13x13,再采用結(jié)構(gòu)重參數(shù)幫助更好地訓(xùn)練。具體的做法如圖2所示,先將卷積核替換為更大的卷積核,再并行一個深度卷積層,經(jīng)過BN處理后將其結(jié)果相加作為輸出。訓(xùn)練完成后,合并并行的大小卷積層及其BN層,得到?jīng)]有小卷積層的模型。
④ 大卷積能夠提高下游任務(wù)的效果多于 ImageNet
表 3 中,mobilinetv2 的卷積核從 3x3 提高到 9x9 后,ImageNet 的準確率提高了 1.33%,Cityscapes 的 mIoU 提高了 3.99%。表 5 中,不同 stage 的卷積核大小從 [3, 3, 3, 3] 提高到 [31, 29, 27,13] 后,ImageNet 的準確率僅僅提高了 0.96%,ADE20K 的 mIoU 提高了 3.12%。
什么原因?qū)е碌哪?#xff1f;
作者認為:
-
大的卷積核能夠有效提高有效感受野,能夠獲取更多的上下文信息,這些信息對下游的任務(wù)很重要。
-
大的卷積核能夠?qū)W到更多的形狀信息。我們已知,ImageNet 中的圖像能夠被正確的分類,是因為網(wǎng)絡(luò)能夠?qū)W習(xí)到相關(guān)的紋理信息和形狀信息,但對于人類來說,辨別不同目標會更關(guān)注形狀信息。所以,如果一個模型能夠捕獲更強的形狀偏置信息,則對下游任務(wù)更加友好。也有研究[86]證明,ViT 在形狀偏置的提取上有更強的能力,CNN 更能提取紋理偏置,而提高卷積核大小能很好的提升 CNN 捕捉形狀偏置的能力。
⑤ 大核(如 13x13)在小特征圖(如 7x7)上仍然適用
- 為了驗證這個結(jié)論,作者在 mobilenetv2 的最后一層將深度可分離卷積大小提升到了 7x7 或 13x13,表 4 展示了相關(guān)結(jié)果。
當卷積核大小越來越大,CNN 的平移不變性會變得不嚴格,如圖 3 所示,兩個相鄰位置的輸出僅僅會共享部分卷積核權(quán)重(因為卷積核很大),也就是不同的映射轉(zhuǎn)換,這個其實也符合 ViT 的特征——在網(wǎng)絡(luò)獲得更大的容量之前放松對稱先驗。
此外,作者還發(fā)現(xiàn), 2D 相對位置坐標可以看成大小為 (2H?1)×(2W?1)(2H-1) \times (2W-1)(2H?1)×(2W?1) 的 depth-wise 卷積,H 和 W 分別的特征圖的高和寬。所以,大的卷積核不但能夠幫助學(xué)習(xí)相對位置,而且可以編碼位置信息。
三、RepKLNet:a Large-Kernel Architecture
由于 CNN 在小體量模型上還是優(yōu)于 transformer 的,所以本文主要聚焦于大模型(復(fù)雜度和 ResNet-152 或 Swin-B 相似),來驗證大尺度卷積核能否彌補 CNN 和 ViT 的差距。
3.1 結(jié)構(gòu)
如圖 4 所示:
1、Stem
因為作者為了提高下游密集預(yù)測的任務(wù),所以需要捕捉更多的細節(jié)信息。
3x3 conv (2↓下采樣) → 3x3 DW(捕捉 low-level 信息) → 1x1 conv → 3x3 DW(下采樣)
2、Stages
每個 stage 都包含了多個 RepLK Blocks,這些 Blocks 使用了 shortcuts 和 DW 大尺度核。
在每個 DW 前后都使用 1x1 conv 是本文的常規(guī)操作,且每個 DW 大卷積都使用 5x5 的核來進行重參數(shù)化。
雖然大尺度的卷積核能夠?qū)崿F(xiàn)更好的感受野感知并聚合更多的空間特征,但模型的容量其實和模型的深度也有很大的相關(guān)性。所以,為了引入更多的非線性,和實現(xiàn)通道間的信息交互,作者使用 1x1 conv 來實現(xiàn)網(wǎng)絡(luò)加深。
此外,FFN 在 transformer 中應(yīng)用廣泛,所以,作者實現(xiàn)了一個 CNN-style 的類似于 FFN 的模塊,叫做 ConvFFNBlock。該模型組成方式:BN、2 個 1x1 conv、GELU、殘差連接。
3、Transition Blocks
沒兩個 stage 之間,都放置了 Transition Blocks。先通過 1x1 conv 來進行通道增加,然后使用 3x3 DW 實現(xiàn) 2↓ 下采樣。
所以,每個 stage 有三個結(jié)構(gòu)超參數(shù):
- B: RepLK Blocks 個數(shù)
- C:channel dimension
- K:kernel size
所以,RepLKNet 的結(jié)構(gòu)參數(shù)如下:
[B1,B2,B3,B4],[C1,C2,C3,C4],[K1,K2,K3,K4][B1, B2, B3, B4],[C1, C2, C3, C4],[K1, K2, K3, K4][B1,B2,B3,B4],[C1,C2,C3,C4],[K1,K2,K3,K4]
3.2 盡可能的讓卷積核變大
為了探索不同大小的卷積核帶來的不同效果,作者給定兩組參數(shù):
B=[2, 2, 18, 2], C=[128, 256, 512, 1024],然后改變卷積核大小 K 來實現(xiàn)效果的探索。
作者做了三組大卷積核實驗,K 分別為:
- [13, 13, 13, 13]
- [25, 25, 25, 13]
- [31, 29, 27, 13]
還有兩組小卷積核實現(xiàn),K 分別為:
- [3, 3, 3, 3]
- [7, 7, 7, 7]
表 5 展示了不同大小卷積核取得的結(jié)果,在 ImageNet 上,將卷積核從 3 提升到 13 時,能有效的提升準確率,但再提升了時候就沒有提升了。
在 ADE20K 上,從 [13, 13, 13, 13] 提升到 [31, 29, 27, 13] 后,mIoU 提升了 0.82,參數(shù)增高了 5.3%, FLOPs 增高了3.5%。
3.3 圖像分類
3.4 語義分割
3.5 目標檢測
四、分析
1、 大尺度卷積核 CNN 比小尺度卷積核的更深的 CNN 有效感受野更大
我們已知卷積什么網(wǎng)絡(luò)可以通過多層的累積來實現(xiàn)大感受野感知。那為什么有數(shù)十上百層卷積的小卷積核網(wǎng)絡(luò)效果仍然次于大卷積核網(wǎng)絡(luò)呢。
-
① 已知,有效感受野 ERF 是和 O(K(L)O(K \sqrt(L)O(K(?L) 成正比的,K 是卷積核大小,L 是深度。也就是說,ERF 和卷積核大小呈線性關(guān)系,和深度呈開方關(guān)系。
-
② 深度的增加,會使得反向傳播優(yōu)化越來越困難,雖然 ResNet 基本解決了這個問題,能夠訓(xùn)練上百層的網(wǎng)絡(luò)。但[89]提出,ResNet 的行為類似于淺層網(wǎng)絡(luò)的集合,也就是說,即使深度顯著增加,ResNet 帶來的 ERF 提升也非常有限,[52] 中也有相似的證論。也就是說,大的均價和只需要很少的層就可以實現(xiàn)大的 ERF,同時能夠避免深度增大帶來的優(yōu)化問題。
例如,[89]表明ResNets的行為類似于淺層網(wǎng)絡(luò)的集合,這意味著ResNets的erf可能仍然非常有限
即使深度急劇增加。這種現(xiàn)象在之前的作品中也有經(jīng)驗觀察到,如[52]。綜上所述,大型內(nèi)核設(shè)計需要更少的層來獲得更大的erf,同時也避免了深度增加帶來的優(yōu)化問題
2、大尺度模型更類似于人類對形狀偏置的感知
[86] 認為 vision transformer 更類似于人類的視覺系統(tǒng),也就是更依賴于目標的形狀來進行判斷,CNN 更依賴于紋理。
作者使用了相應(yīng)的 toolbox 來獲得 shape bias,圖 5展示了 RepLKNet 有比 Swin 更高的 shape bias。
由于 RepLKNet 和 Swin 有類似的結(jié)構(gòu),所以作者認為 RepLKNet 更高是由于其有效的大感受野,而非 self-attention 結(jié)構(gòu)。
3、密集卷積和膨脹卷積的對比
膨脹卷積是有效的提高感受野但參數(shù)增加少的方法,然而,表11顯示,盡管深度膨脹卷積可能具有與深度密集卷積相同的最大RF,但其表示容量要低得多,因為它在數(shù)學(xué)上與稀疏大卷積等效。文獻(如[92,98])進一步表明,膨脹卷積會遇到網(wǎng)格化問題。作者認為通過混合使用不同的卷積,可能可以克服卷積擴張的缺點。
五、限制
如表 6 所示,雖然大卷積核能夠提高 CNN 在分類和其下游任務(wù)的效果,但隨著數(shù)據(jù)量和模型的增大,RepLKNets 又比 Swin 的效果低了。
目前還不太清楚這是由于超參數(shù)并非最優(yōu)的或其他的缺點導(dǎo)致的,還在研究中。
六、結(jié)論
使用少量大卷積核而非大量小卷積核,能夠有效的提升有效感受野,提高 CNN 的效果。所以作者建議研究更好的有效感受野來提升效果。并且,大卷積核既然能夠取得類似好的成績,那么也可以被用來理解 self-attention 的內(nèi)在機理。
總結(jié)
以上是生活随笔為你收集整理的【卷积核设计】Scaling Up Your Kernels to 31x31: Revisiting Large Kernel Design in CNNs的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【TensorRT】将 PyTorch
- 下一篇: 央视纪录片:华为研发“摔不坏”的昆仑玻璃