博客專欄

EEPW首頁 > 博客 > ConvNeXt:新一代卷積網(wǎng)絡(luò),還不是ViT的時代(代碼開源)

ConvNeXt:新一代卷積網(wǎng)絡(luò),還不是ViT的時代(代碼開源)

發(fā)布人:CV研究院 時間:2022-03-19 來源:工程師 發(fā)布文章

圖片

源代碼:https://github.com/facebookresearch/ConvNeXt

計算機視覺研究院專欄

作者:Edison_G

自從ViT提出之后,在過去的一年里(2021年),Transformer在深度學(xué)習(xí)領(lǐng)域大殺四方,很多純卷積的網(wǎng)絡(luò)也不斷的革新。基于transformer的模型在計算機視覺各個領(lǐng)域全面超越CNN模型。然而,這很大程度上都歸功于Local Vision Transformer模型,Swin Transformer是其中重要代表。原生的ViT模型其計算量與圖像大小的平方成正比,而Local Vision Transformer模型由于采用local attention(eg. window attention),其計算量大幅度降低。然后,不能忘記最經(jīng)典的CNN,今天就分析transformer的優(yōu)勢,也借鑒了一些新的卷積網(wǎng)絡(luò)的點,基于ResNet50和ResNet200逐步提升精度。



01

圖片

前言

圖片

ConvNets在計算機視覺中的完全主導(dǎo)地位并非巧合:在許多應(yīng)用場景中,“滑動窗口”策略是視覺處理所固有的,尤其是在處理高分辨率圖像。ConvNets有幾個內(nèi)置的歸納偏置,使它們非常適合各種計算機視覺應(yīng)用。最重要的一個是平移等方差,這是目標檢測等任務(wù)的理想屬性。由于當以滑動窗口方式使用時,計算是共享的,因此ConvNets本質(zhì)上也是高效的。幾十年來,這一直是ConvNets的默認使用,通常用于有限的目標類別,例如digits、人臉和行人。

圖片

與在過去十年中逐漸改進的ConvNet不同,Vision Transformers的采用是一個進步。在最近的文獻中,在比較兩者時通常采用系統(tǒng)級比較(例如Swin Transformer與ResNet)。Transformer的優(yōu)勢在于其multi-head self-attention中優(yōu)異的scaling behavior。ConvNets和Transformer都有相似的inductive biases,但是不同的是,在訓(xùn)練過程中和結(jié)構(gòu)設(shè)計上,存在著差異性。作者嘗試去找出這些影響因素,去測試一下pure ConvNets能達到一個怎么樣的性能。

今天分享中,研究了ConvNetsTransformer之間的架構(gòu)區(qū)別,并在比較網(wǎng)絡(luò)性能時嘗試識別混雜變量。 研究旨在彌合ConvNet的前ViT和后ViT時代之間的差距,并測試純ConvNet所能達到的極限。


02

圖片

背景

圖片

在高層次上,研究者的探索旨在調(diào)查和遵循Swin Transformer的不同設(shè)計級別,同時保持網(wǎng)絡(luò)作為標準ConvNet的簡單性。研究者探索路線圖如下。

圖片

起點是ResNet-50模型。首先使用用于訓(xùn)練視覺Transformer的類似訓(xùn)練技術(shù)對其進行訓(xùn)練,并與原始ResNet-50相比獲得了很大改進的結(jié)果。這將是我們的基線。然后研究了一系列設(shè)計決策,總結(jié)為:1) macro design,2) ResNeXt,3) inverted bottleneck,4)large kernel size,5) various layer-wise micro designs。在上圖中,展示了“network modernization”的每一步我們能夠?qū)崿F(xiàn)的過程和結(jié)果。由于網(wǎng)絡(luò)復(fù)雜性與最終性能密切相關(guān),因此在探索過程中對FLOPs進行了粗略的控制,盡管在中間步驟中,F(xiàn)LOPs可能高于或低于參考模型。所有模型都在ImageNet-1K上進行訓(xùn)練和評估。

03

圖片

新研究

圖片

  • Training Techniques

作者做了以下訓(xùn)練調(diào)整:

  1. 從90 epoches到300 epoches

  2. 使用AdamW優(yōu)化器

  3. Mixup, Cutmix, RandAugment, Random Erasing數(shù)據(jù)增強

  4. 使用Stochastic Depth和Label Smoothing

  5. 使用EMA減少模型過擬合

結(jié)果分類準確率由76.1%上升到78.8%,這一個步驟提升了2.7%的精度。具體訓(xùn)練config如下:

圖片

  • Macro Design

Swin Transfomer和CNN一樣也采用金字塔結(jié)構(gòu):包含4個stage,每個stage輸出不同尺度的特征。這里考慮Swin Transformer和ResNet在宏觀設(shè)計上的區(qū)別,作者分析了Swin Transformer網(wǎng)絡(luò)設(shè)計,發(fā)現(xiàn)使用了multi-stage design,每一個stage有不同的特征圖分辨率。有兩個值得思考的設(shè)計: stage compute ratiostem cell structure。

改變stage compute ratio。作者認為ResNet的 heavy “res4” stage主要是用于下游任務(wù),其detector head是基于14x14的特征圖。而Swin-T, 它的比例是1:1:3:1。因此,作者調(diào)整了一下ResNet原先的分布,從(3,4,6,3)到(3,3,9,3)。這一步精度從78.8%到79.4%。不過這里要注意的一點是,調(diào)整后其實blocks數(shù)量增加了,模型的FLOPs從原來的4G增加至4.5G,基本和Swin-T一致了,所以這個性能的提升很大程度上歸功于FLOPs的增加。關(guān)于各個stage的計算量分配,并沒有一個理論上的參考,不過RegNet和EfficientNetV2論文中都指出,后面的stages應(yīng)該占用更多的計算量。 

ResNet的stem cell使用stride=2的7x7卷積,然后接一個max pool,會使得圖像下采樣4倍。而在Transformer當中,使用了aggressive “patchify”; Swin-T使用了4x4的patch size。因此,作者使用4x4, stride=4的卷積。兩種stem最后均是得到1/4大小的特征,所以這里可以直接用Swin的stem來替換ResNet的stem,這個變動對模型效果影響較小:從79.4%提升至79.5%,這個步驟提升了0.1%的精度。

  • ResNeXt-ify

在這一部分中,研究者嘗試采用ResNeXt的思想,它比普通的ResNet具有更好的FLOPs/accuracy權(quán)衡。核心組件是分組卷積,其中卷積濾波器被分成不同的組。在較高的層面上,ResNeXt的指導(dǎo)原則是“使用更多的組,擴大寬度”。更準確地說,ResNeXt對bottleneck塊中的3×3卷積層采用分組卷積。由于這顯著減少了FLOP,因此網(wǎng)絡(luò)寬度被擴大以補償容量損失。

在例子中,使用depthwise convolution,這是分組卷積的一種特殊情況,其中組數(shù)等于通道數(shù)。depthwise convolution已被MobileNet 和Xception推廣。我們注意到,depthwise convolution類似于self-attention中的加權(quán)求和操作,它在每個通道的基礎(chǔ)上進行操作,即僅在空間維度上混合信息。depthwise conv和1 × 1convs 的組合導(dǎo)致空間和通道混合的分離,這是視覺轉(zhuǎn)換器共享的屬性,其中每個操作要么混合空間維度或通道維度的信息,但不能同時混合兩者。depthwise convolution的使用有效地降低了網(wǎng)絡(luò)FLOPs,并且正如預(yù)期的那樣。按照ResNeXt中提出的策略,將網(wǎng)絡(luò)寬度增加到與Swin-T相同的通道數(shù)(從64到96)。這使網(wǎng)絡(luò)性能提高到80.5%,增加了FLOPs (5.3G)。

  • Inverted Bottleneck

Transformer block的一個重要設(shè)計是創(chuàng)建了inverted bottleneck。如下圖所示:

圖片

在depthwise conv的基礎(chǔ)上借鑒MobileNet的inverted bottleneck設(shè)計,將block由下圖(a)變?yōu)?b)。因為depthwise不會使channel之間的信息交互,因此一般depthwise conv之后都會接1x1的pointwise conv。這一頓操作下來準確率只漲了0.1%到80.6%。

圖片

  • Large Kernel Sizes

Transformer中,non-local self-attention能夠獲得全局的感受野。因此研究者使用了large kernel-sized convolutions。為了使用large kernel,就要改變一下depthwise conv layer。

研究者認為更大的感受野是ViT性能更好的可能原因之一,作者嘗試增大卷積的kernel,使模型獲得更大的感受野。首先在pointwise conv的使用上,作者為了獲得更大的感受野,將depthwise conv提前到1x1 conv之前,之后用384個1x1x96的conv將模型寬度提升4倍,在用96個1x1x96的conv恢復(fù)模型寬度。反映在上圖中就是由(b)變?yōu)?c)。由于3x3的conv數(shù)量減少,模型FLOPs由5.3G減少到4G,相應(yīng)地性能暫時下降到79.9%。

然后作者嘗試增大depthwise conv的卷積核大小,證明7x7大小的卷積核效果達到最佳。

  • Micro Design

  1. 使用GELU替換ReLU,精度沒有變化

  2. 更少的activate functions,研究者發(fā)現(xiàn)Transformers很少激活函數(shù)。刪除了residual block中的所有GELU層,除了兩個1×1層之間的。精度提升了到了81.3%

  3. 使用更少的normalization layers。僅僅在1x1之間使用BN,精度提升到了81.4%。研究者還發(fā)現(xiàn),在每個Block的開始添加一個額外的BN層,精度不會提升

  4. 研究者使用LN替換BN,精度提升了0.1%

  5. 分離降采樣層。且在特征圖大小變化的時候,添加一個normalization layers,有助于穩(wěn)定訓(xùn)練。精度提升到了82.0%

04

圖片

實驗&總結(jié)

圖片

Classification accuracy on ImageNet-1K

圖片

Comparing isotropic ConvNeXt and ViT

圖片

圖片

研究者提出,迄今為止討論的設(shè)計方案都不是新穎的,但都能夠提升性能。所以,借鑒transformer的設(shè)計思想和一些ConvNet的tricks,一樣可以達到SOTA。這是一篇調(diào)參提升精度的實驗性論文,比較有實際的工程意義。

引用:

[1] https://blog.csdn.net/wuchaohuo724/article/details/122550816[2] https://zhuanlan.zhihu.com/p/455913104[3] https://zhuanlan.zhihu.com/p/458016349


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



關(guān)鍵詞: AI

相關(guān)推薦

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

關(guān)閉