博客專欄

EEPW首頁(yè) > 博客 > “文藝復(fù)興” ConvNet卷土重來(lái),壓過(guò)Transformer!FAIR重新設(shè)計(jì)純卷積新架構(gòu)

“文藝復(fù)興” ConvNet卷土重來(lái),壓過(guò)Transformer!FAIR重新設(shè)計(jì)純卷積新架構(gòu)

發(fā)布人:計(jì)算機(jī)視覺(jué)工坊 時(shí)間:2022-01-16 來(lái)源:工程師 發(fā)布文章

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

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

1.jpg

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

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

Abstract

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

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

2.jpg

Modernizing ConvNet:Roadmap

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

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

Macro Design

ResNeXt

Inverted Bottleneck

Large Kernel Size

Various Layer-wise Micro Design.

3.jpg

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

Training Techniques

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

4.jpg

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

Macro Design

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

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

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

ResNeXt-ify

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

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

Inverted Bottleneck

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

5.jpg

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

Large Kernel Sizes

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

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

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

Micro Design

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

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

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

6.jpg

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

Substituting BN with LN 盡管BN是ConvNet的重要成分,具有加速收斂降低過(guò)擬合的作用;但BN對(duì)模型性能也存在有害影響。Transformer中的LN對(duì)不同的應(yīng)用場(chǎng)景均具有比較好的性能。直接在原始ResNet中將BN替換為L(zhǎng)N會(huì)導(dǎo)致性能下降,而組合了上述技術(shù)后再將BN替換為L(zhǎng)N則能帶來(lái)性能的提升:81.5%。

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

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

Exmpirical Evaluations on ImageNet

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

ConvNeXt-T: C=,B=

ConvNeXt-S: C=,B=

ConvNeXt-B: C=,B=

ConvNeXt-L: C=,B=

ConvNeXt-XL: C=,B=

7.jpg

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

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

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

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

僅需ImageNet訓(xùn)練,ConvNeXt-XL的性能即可達(dá)到85.5%;當(dāng)采用ImageNet-22K預(yù)訓(xùn)練時(shí),模型性能進(jìn)一步提升到了87.8%。

8.jpg

既然ConvNeXt這么好,其設(shè)計(jì)理念能否應(yīng)用到ViT中呢?結(jié)果見(jiàn)上表,從中可以看到:兩者具有相當(dāng)?shù)男阅?,這意味著:ConvNeXt的設(shè)計(jì)理念用于非分層模塊時(shí)仍具有競(jìng)爭(zhēng)力。

Empirical Evalution on Downstream Tasks

9.jpg

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

10.jpg

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

11.jpg

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

本文僅做學(xué)術(shù)分享,如有侵權(quán),請(qǐng)聯(lián)系刪文。

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



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉