博客專欄

EEPW首頁 > 博客 > “文藝復興” ConvNet卷土重來,壓過Transformer!FAIR重新設計純卷積新架構

“文藝復興” ConvNet卷土重來,壓過Transformer!FAIR重新設計純卷積新架構

發(fā)布人:計算機視覺工坊 時間:2022-01-16 來源:工程師 發(fā)布文章

以下文章來源于極市平臺 ,作者CV開發(fā)者都愛看的

“文藝復興”,ConvNet卷土重來,壓過Transformer。本文是FAIR的Zhuang Liu(DenseNet的作者)與Saining Xie(ResNeXt的作者)關于ConvNet的最新探索,以ResNet為出發(fā)點,逐步引入近來ViT架構的一些設計理念而得到的純ConvNet新架構ConvNeXt,取得了優(yōu)于SwinT的性能,讓ConvNet再次性能煥發(fā)。 

1.jpg

論文鏈接:https://arxiv.org/pdf/2201.03545.pdf

代碼鏈接:https://github.com/facebookresearch/ConvNeXt

Abstract

ViT伴隨著視覺的“20年代”咆哮而來,迅速的碾壓了ConvNet成為主流的研究方向。然而,當應用于廣義CV任務(如目標檢測、語義分割)時,常規(guī)的ViT面臨著極大挑戰(zhàn)。因此,分層Transformer(如Swin Transformer)重新引入了ConvNet先驗信息,使得Transformer成實際可行的骨干網(wǎng)絡并在不同視覺任務上取得了非凡的性能。然而,這種混合方法的有效性仍然很大程度上歸根于Transformer的內(nèi)在優(yōu)越性,而非卷積固有歸納偏置。

本文對該設計空間進行了重新審視并測試了ConvNet所能達到的極限。我們將標準卷積朝ViT的設計方向進行逐步“現(xiàn)代化”調(diào)整,并發(fā)現(xiàn)了幾種影響性能的關鍵成分。由于該探索是純ConvNet架構,故將其稱之為ConvNeXt。完全標準ConvNet模塊構建的ConvNeXt取得了優(yōu)于Transformer的精度87.8%,在COCO檢測與ADE20K分割任務上超越了SwinTransformer,同時保持了ConvNet的簡單性與高效性。

2.jpg

Modernizing ConvNet:Roadmap

接下來,我們將提供從ResNet到ConvNeXt的演變軌跡。我們考慮了兩種不同F(xiàn)LOPs尺寸的模型:ResNet50/Swin-T(FLOPs約)與ResNet200/Swin-B(FLOPs約),為簡單起見,這里僅呈現(xiàn)ResNet50/Swin-T復雜度模型的結(jié)果。

我們以ResNet50作為出發(fā)點,首先采用類似ViT的訓練技術對其重訓練并得到ResNet50的改進結(jié)果(這將作為本文的基線);然后我們研究了一系列設計準則,總結(jié)如下:

Macro Design

ResNeXt

Inverted Bottleneck

Large Kernel Size

Various Layer-wise Micro Design.

3.jpg

從上圖可以看到網(wǎng)絡架構每一次進化所能取得的性能(ConvNeXt-T取得了82%,超越了Swin-T的81.3%),由于模型復雜度與最終性能相關,故FLOPs進行了一定程度的控制。

Training Techniques

除了網(wǎng)絡架構的設計外,訓練方式也會影響最終的性能。ViT不僅帶來了新的模塊與架構設計,同時還引入了不同的訓練技術,如AdamW優(yōu)化。因此,探索的第一步就是采用ViT的訓練機制訓練基線模型ResNet-50/200。

4.jpg

本文采用了DeiT與SwinTransformer的訓練方案,可參見上表。訓練周期從原始的90epoch擴展到了300epoch;優(yōu)化器為AdamW,數(shù)據(jù)增廣包含Mixup、Cutmix、RandAugment、RandomErasing;正則化技術包含Stochastic Depth與Label Smoothing。增強的訓練技術將ResNet50的性能從76.1%提升到了78.8%,這說明:Transformer與ConvNet的性能差距很大比例源自訓練技術的升級。

Macro Design

我們現(xiàn)在開始對SwinTransformer的宏觀架構設計,它參考ConvNet采用了多階段設計思想,每個階段具有不同的特征分辨率。它具有兩個有意思的設計考量:(1) Stage Compute Ratio; (2)Stem Cell架構。

Changing Stage Compute Ratio. 原始ResNet的計算分布是經(jīng)驗性成果?!皉es4”的重計算設計是為了與下游任務(如目標檢測)相兼容;而Swin-T參考了類似的設計準則但將計算比例微調(diào)為,更大的SwinTransformer的比例則為。參考該設計理念,我們將ResNet50每個階段的塊數(shù)從調(diào)整為。此時模型的性能從78.8%提升到79.4%。

Changing Stem to "Patchify". 一般來講,Stem設計主要關心:在網(wǎng)絡起始部分如何對圖像進行處理。由于自然圖像的信息冗余性,常見的Stem通過對輸入圖像下采樣聚合到適當?shù)奶卣鞒叽?。ResNet中的Stem包含stride等于2的卷積+MaxPool,它將輸入圖像進行4倍下采樣;而ViT則采用了"Patchify"策略,它對應了大卷積核(如14、16)、非重疊卷積;SwinTransformer采用了類似的"Patchify",但塊尺寸為4以兼容多階段設計架構。我們將ResNet中的Stem替換為的"Patchify"層。此時,模型的性能從79.4%提升到了79.5%。

ResNeXt-ify

在這里,我們嘗試采用了ResNeXt的設計理念(采用更多的組擴展寬度),其核心成分為組卷積。具體來說,ResNeXt在Bottleneck中為采用組卷積。這種設計方式可以大幅減少FLOPs,故通過提升網(wǎng)絡寬度補償容量損失。

在本文中,我們采用depthwise卷積,同時將網(wǎng)絡的寬度進行了提升,此時它與Swin-T具有相同的通道數(shù)。此時,模型的性能提升到了80.5%,而FLOPs則提升到了53.G。

Inverted Bottleneck

Transformer模塊的一個重要設計:它構建了Inverted Bottleneck,如MLP的隱層維度是輸入維度的4倍。有意思的是:Transformer的這種設計與ConvNet中的Inverted Bottleneck(最早源自MobileNetV2)設計相一致。

5.jpg

在這里,我們探索了上圖的幾種不同設計,它將網(wǎng)絡的FLOPs下降到了4.6G。有意思的是,這種設計將模型的性能從80.5%提升到了80.6%。對ResNet200的性能提升則更大,從81.9%提升到了82.6%。

Large Kernel Sizes

在這部分,我們聚焦于大卷積核的行為表現(xiàn)。ViT的最重要區(qū)分是其非局部自注意力,它使得每一層均具有全局感受野。盡管SwinTransformer采用了局部窗口機制,但其感受野仍至少為,遠大于ConvNet的。因此,我們將ConvNet中使用大卷積核卷積進行回顧。

Moving up depthwise conv layer. 為探索大核,先決條件是depthwise卷積的位置上移(見Figure3c)。這種設計理念等同于Transformer中的MHSA先于MLP。此時,模型的性能臨時下降到了79.9%,而FLOPs也下降到了4.1G。

Increasing the kernel size. 基于上述準備,我們采用了更大的卷積核,如。此時,模型的性能從79.9%!提升到了80.6%(),而模型的FLOPs幾乎不變。

Micro Design

接下來,我們將從微觀角度(即OP層面)探索幾種架構差異,主要聚焦于激活函數(shù)與Normalization層的選擇。

Replacing ReLU wit GELU. NLP與視覺架構的一個差異體現(xiàn)在激活函數(shù)的實用。ConvNet大多采用ReLU,而ViT大多采用GELU。我們發(fā)現(xiàn):ConvNet中的ReLU可以替換為GELU,同時性能不變(80.6%)。

Fewer Activation Functions. Transformer與ResNet模塊的一個小區(qū)別:Transformer模塊使用了更少的激活函數(shù)。類似的,我們對ConvNeXt模塊進行下圖所示的改進,模型性能從80.6%提升到了81.3%(此時,它具有與Swin-T相當?shù)男阅?。

6.jpg

Fewer Normalization Layers Transformer通常具有更少的Normalization層,因此我們移除兩個BN層僅保留  卷積之前的一個BN。模型的性能提升到了81.4%,超越了Swin-T。

Substituting BN with LN 盡管BN是ConvNet的重要成分,具有加速收斂降低過擬合的作用;但BN對模型性能也存在有害影響。Transformer中的LN對不同的應用場景均具有比較好的性能。直接在原始ResNet中將BN替換為LN會導致性能下降,而組合了上述技術后再將BN替換為LN則能帶來性能的提升:81.5%。

Separate Downsamling Layers 在ResNet中,每個階段先采用stride=2的卷積進行下采樣;而SwinTransformer則采用了分離式下采樣層。我們探索了類似的策略:采用stride=2的卷積進行下采樣,但這種方式導致了“不收斂”。進一步研究表明:在下采樣處添加Normalization層有助于穩(wěn)定訓練。此時,模型的性能提升到了82.0%,大幅超越了Swin-T的81.3%。

Closing remarks. 到此為止,我們完成了ConvNet的進化之路,得到了超越SwinTransformer的純ConvNet架構ConvNeXt。需要注意的是,上述設計并沒有新穎之處,均得到了研究,但并未進行匯總集成。ConvNeXt具有與SwinTransformer相當?shù)膮?shù)量、吞吐量、內(nèi)存占用,更高的性能,且不需要依賴特定的模塊(比如移位窗口注意力、相對位置偏置)。

Exmpirical Evaluations on ImageNet

基于前述ConvNeXt架構,我們構建了ConvNeXt-T/S/B/L以對標Swin-T/S/B/L。此外,我們還構建了一個更大的ConvNeXt-XL以進一步測試ConvNeXt的縮放性。不同變種模型的區(qū)別在于通道數(shù)、模塊數(shù),詳細信息如下:

ConvNeXt-T: C=,B=

ConvNeXt-S: C=,B=

ConvNeXt-B: C=,B=

ConvNeXt-L: C=,B=

ConvNeXt-XL: C=,B=

7.jpg

上表給出了ImageNet上的性能對比,從中可以看到:

ConvNeXt具有比ConvNet(如RegNet、EfficientNet)更佳的精度-計算均衡以及吞吐量;

ConvNeXt同樣具有比SwinTransformer更佳的性能,且無需特殊操作模塊;

ConvNeXt@384比Swin-B性能高0.6%且推理速度快12.5%;

僅需ImageNet訓練,ConvNeXt-XL的性能即可達到85.5%;當采用ImageNet-22K預訓練時,模型性能進一步提升到了87.8%。

8.jpg

既然ConvNeXt這么好,其設計理念能否應用到ViT中呢?結(jié)果見上表,從中可以看到:兩者具有相當?shù)男阅埽@意味著:ConvNeXt的設計理念用于非分層模塊時仍具有競爭力。

Empirical Evalution on Downstream Tasks

9.jpg

為進一步驗證ConvNeXt在下游任務的表現(xiàn),我們基于Mask R-CNN與Cascade Mask R-CNN在COCO檢測方面的性能,結(jié)果見上表,從中可以看到:ConvNeXt取得了與SwinTransformer相當,甚至更優(yōu)的性能。當采用更大的骨干且ImageNet22K預訓練時,ConvNeXt的性能更佳。

10.jpg

上表給出了ADE20K數(shù)據(jù)上的性能對比,從中可以看到:在不同容量大小下,ConvNeXt均可取得極具競爭力的結(jié)果,進一步驗證了ConvNeXt的有效性。

11.jpg

上表還給出了Swin與ConvNeXt在吞吐量方面的對比,很明顯:ConvNeXt具有比Swin更高的吞吐量、更高的精度。

本文僅做學術分享,如有侵權,請聯(lián)系刪文。

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



關鍵詞: AI

相關推薦

技術專區(qū)

關閉