社群計算機視覺課程文件

ConvNext——一個為2020年代設計的ConvNet (2022)

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

ConvNext——一個為2020年代設計的ConvNet (2022)

簡介

最近,視覺Transformer (ViT) 的突破迅速取代了純CNN模型,成為影像識別領域新的最先進技術。有趣的是,研究發現CNN可以借鑑視覺Transformer設計中的很大一部分選擇。ConvNext透過結合受ViT啟發的多種技術,顯著改進了純卷積模型,並在準確性和可擴充套件性方面取得了與ViT相媲美的結果。

關鍵改進

ConvNeXT論文的作者從一個普通的ResNet (ResNet-50) 開始構建模型,然後逐步現代化和改進架構,以模仿視覺Transformer的層次結構。關鍵改進包括:

  • 訓練技術
  • 宏觀設計
  • ResNeXt化
  • 倒置瓶頸
  • 大核尺寸
  • 微觀設計

我們將逐一介紹這些關鍵改進。這些設計本身並非新穎。然而,你可以學習研究人員如何系統地調整和修改設計以改進現有模型。為了展示每項改進的有效性,我們將比較模型在ImageNet-1K上修改前後的準確性。

Block Comparison

訓練技術

研究人員首先發現,雖然架構設計選擇至關重要,但訓練過程的質量對效能結果也起著關鍵作用。受DeiT和Swin Transformers的啟發,ConvNext密切借鑑了它們的訓練技術。其中一些顯著的變化是:

  • 週期:將原始的90個週期延長到300個週期。
  • 最佳化器:使用AdamW最佳化器代替Adam最佳化器,兩者在處理權重衰減方面有所不同。
  • Mixup(生成隨機影像對的加權組合)、Cutmix(剪下影像的一部分並用另一張影像的補丁替換)、RandAugment(應用一系列隨機增強,如旋轉、平移和剪下)和Random Erasing(隨機選擇影像中的一個矩形區域並用隨機值擦除其畫素)以增加訓練資料。
  • 正則化:使用Stochastic Depth和Label Smoothing作為正則化技術。

修改這些訓練過程使ResNet-50的準確率從76.1%提高到78.8%。

宏觀設計

宏觀設計指的是系統或模型中的高層次結構決策和考慮,例如層的排列、計算負載在不同階段的分佈以及整體結構。透過研究Swin Transformers的宏觀網路,作者發現了兩個對ConvNext效能有益的值得注意的設計考慮。

階段計算比

階段計算比是指神經網路模型各階段之間計算負載的分佈。ResNet-50有四個主要階段,分別有(3, 4, 6, 3)個塊,這意味著它的計算比為3:4:6:3。為了遵循Swin Transformer的1:1:3:1計算比,研究人員將ResNet每個階段的塊數從(3, 4, 6, 3)調整為(3, 3, 9, 3)。改變階段計算比使模型準確率從78.8%提高到79.4%。

將起始層更改為分塊(Patchify)

通常,在ResNet架構的起始部分,輸入會送入一個步長為2的7×7卷積層(stem),然後是一個最大池化層,用於將影像下采樣4倍。然而,作者發現用一個核大小為4×4、步長為4的卷積層來替換stem更有效,它能透過非重疊的4x4塊進行高效卷積。分塊(Patchify)實現了相同的下采樣4倍的目的,同時減少了層數。這個分塊步驟使模型準確率從79.4%略微提高到79.5%。

ResNeXt化

ConvNext也借鑑了上一節中解釋的ResNeXt思想。與標準ResNet相比,ResNeXt在浮點運算次數(FLOPs)和準確率之間表現出更好的權衡。透過使用深度可分離卷積和1×1卷積,我們將實現空間和通道混合的分離——這也是視覺Transformer的特點。使用深度可分離卷積會減少FLOPs和準確率。然而,透過將通道數從64增加到96,準確率高於原始的ResNet-50,同時保持相似的FLOPs數量。這一修改使模型準確率從79.5%提高到80.5%。

倒置瓶頸

Transformer塊的一個共同思想是使用倒置瓶頸,其中隱藏層比輸入維度大得多。這個思想也已被MobileNetV2在計算機視覺領域使用並推廣。ConvNext採用了這個思想,輸入層有96個通道,並將隱藏層增加到384個通道。透過使用這種技術,它使模型準確率從80.5%提高到80.6%。

Inverted Bottleneck Comparison

大核尺寸

視覺Transformer卓越效能的一個關鍵因素是其非區域性自注意力機制,它允許影像特徵具有更寬廣的感受野。在Swin Transformers中,注意力塊視窗大小至少設定為7×7,超過了ResNext的3x3核大小。然而,在調整核大小之前,需要重新定位深度可分離卷積層,如下圖所示。這種重新定位使得1x1層能夠有效地處理計算任務,而深度可分離卷積層則充當更非區域性的感受器。透過這種方式,網路可以利用更大核尺寸卷積的優勢。實現7x7核大小保持了80.6%的準確率,但降低了模型的整體FLOPs效率。

Moving up the Depth Conv Layer

微觀設計

除了上述修改,作者還對模型進行了一些微觀設計更改。微觀設計指的是低層次的結構決策,例如啟用函式的選擇和層細節。一些顯著的微觀變化是:

  • 啟用函式:用GELU(高斯誤差線性單元)替換ReLU啟用函式,並從殘差塊中移除所有GELU層,除了兩個1×1層之間的一個。
  • 歸一化:透過移除兩個BatchNorm層並用LayerNorm替換BatchNorm,從而減少歸一化層,只在1×1卷積層之前保留一個LayerNorm層。
  • 下采樣層:在ResNet階段之間新增一個單獨的下采樣層。這些最終修改使ConvNext的準確率從80.6%提高到82.0%。最終的ConvNext模型超過了Swin Transformer 81.3%的準確率。

模型程式碼

你可以訪問這個HuggingFace文件,瞭解如何將ConvNext管道整合到你的程式碼中。

參考文獻

論文“A ConvNet for the 2020s”於2022年由Facebook AI Research的一個研究團隊提出ConvNext架構,該團隊包括Zhuang Liu、Hanzi Mao、Chao-Yuan Wu、Christoph Feichtenhofer、Trevor Darrell和Saining Xie。論文可以在這裡找到,GitHub倉庫可以在這裡找到。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.