機器之心報道
編輯:陳萍、小舟
來自 FAIR 、UC 伯克利的研究者重新檢查了設計空間並測試了純 ConvNet 所能達到的極限,表明卷積神經網路的效能不亞於視覺 Transformer。
視覺識別的快速發展始於 Vision transformer (ViT) 的引入,其很快取代了傳統卷積神經網路 (ConvNet),成為最先進的影象分類模型。另一方面, ViT 模型在包括目標檢測、語義分割等一系列計算機視覺任務中存在很多挑戰。因此,有研究者提出分層 Transformer(如 Swin Transformer),他們重新引入 ConvNet 先驗,這樣使得 Transformer 作為通用視覺主幹實際上可行,並在各種視覺任務上表現出卓越的效能。
然而,這種混合方法的有效性在很大程度上仍歸功於 Transformer 的內在優勢,而不是卷積固有的歸納偏置。在這項工作中,來自 FAIR 、UC 伯克利的研究者重新檢查了設計空間並測試了純 ConvNet 所能達到的極限。研究者逐漸將標準 ResNet「升級(modernize」為視覺 Transformer 的設計,並在此過程中發現了導致效能差異的幾個關鍵元件。
- 論文地址:https://arxiv.org/pdf/2201.03545.pdf
- 程式碼地址:https://github.com/facebookresearch/ConvNeXt
研究者將這一系列純 ConvNet 模型,命名為 ConvNeXt。ConvNeXt 完全由標準 ConvNet 模組構建,在準確性和可擴充套件性方面 ConvNeXt 取得了與 Transformer 具有競爭力的結果,達到 87.8% ImageNet top-1 準確率,在 COCO 檢測和 ADE20K 分割方面優於 Swin Transformer,同時保持標準 ConvNet 的簡單性和有效性。
值得一提的是,該論文一作為劉壯(Zhuang Liu),是大名鼎鼎 DenseNet 的共同一作,憑藉論文《Densely Connected Convolutional Networks》,摘得 CVPR 2017 最佳論文獎。作者謝賽寧是ResNeXt的一作。
升級卷積神經網路
該研究梳理了從 ResNet 到類似於 Transformer 的卷積神經網路的發展軌跡。該研究根據 FLOPs 考慮兩種模型大小,一種是 ResNet-50 / Swin-T 機制,其 FLOPs 約為 4.5×10^9,另一種是 ResNet-200 / Swin-B 機制,其 FLOPs 約為 15.0×10^9。為簡單起見,該研究使用 ResNet-50 / Swin-T 複雜度模型展示實驗結果。
為了探究 Swin Transformer 的設計和標準卷積神經網路的簡單性,該研究從 ResNet-50 模型出發,首先使用用於訓練視覺 Transformer 的類似訓練方法對其進行訓練,與原始 ResNet-50 相比的結果表明效能獲得了很大的提升,並將改進後的結果作為基線。
然後該研究制定了一系列設計決策,總結為 1) 宏觀設計,2) ResNeXt,3) 反轉瓶頸,4) 卷積核大小,以及 5) 各種逐層微設計。下圖 2 展示了「升級網路」每一步的實現過程和結果,所有模型都是在 ImageNet-1K 上進行訓練和評估的。由於網路複雜度和最終效能密切相關,因此該研究在探索過程中粗略控制了 FLOPs。
訓練方法
除了網路架構的設計,訓練過程也會影響最終效能。視覺 Transformer 不僅帶來了一些新的架構設計決策和模組,而且還為視覺領域引入了多種訓練方法(例如 AdamW 最佳化器)。這主要與最佳化策略和相關的超引數設定有關。
因此,該研究第一步使用視覺 Transformer 訓練程式訓練基線模型(ResNet50/200)。2021 年 Ross Wightman 等人的論文《 An improved training procedure in timm 》展示了一組顯著提高 ResNet-50 模型效能的訓練方法。而在本篇論文中,研究者使用了一種類似於 DeiT 和 Swin Transformer 的訓練方法。訓練從 ResNet 原始的 90 個 epoch 擴充套件到了 300 個 epoch。
該研究使用了 AdamW 最佳化器、Mixup、Cutmix、RandAugment、隨機擦除(Random Erasing)等資料增強技術,以及隨機深度和標籤平滑(Label Smoothing)等正則化方案。這種改進的訓練方案將 ResNet-50 模型的效能從 76.1% 提高到了 78.8%(+2.7%),這意味著傳統 ConvNet 和視覺 Transformer 之間很大一部分效能差異可能是訓練技巧導致的。
宏觀設計
該研究第二步分析了當前 Swin Transformer 的宏觀網路設計。Swin Transformer 使用類似於卷積神經網路的多階段設計,每個階段具有不同的特徵圖解析度。其中兩個重要的設計考量是階段計算比和主幹架構。
一方面,ResNet 中跨階段計算分佈的原始設計很大程度上是受實驗影響的。另一方面,Swin-T 遵循相同的原則,但階段計算比略有不同。該研究將每個階段的塊數從 ResNet-50 中的 (3, 4, 6, 3) 調整為 (3, 3, 9, s3),使得 FLOPs 與 Swin-T 對齊。這將模型準確率從 78.8% 提高到了 79.4%。
通常,主幹架構重點關注網路如何處理輸入影象。由於自然影象中固有的冗餘性,普通架構在標準 ConvNet 和視覺 Transformer 中積極地將輸入影象下采樣到適當的特徵圖大小。標準 ResNet 中包含一個步長為 2 的 7×7 卷積層和一個最大池,這讓輸入影象可進行 4 倍下采樣。而視覺 Transformer 使用了「patchify」策略,Swin Transformer 雖然使用類似的「patchify」層,但使用更小的 patch 大小來適應架構的多階段設計。該研究將 ResNet 主幹架構替換為使用 4×4、步長為 4 的卷積層實現的 patchify 層,準確率從 79.4% 提升為 79.5%。這表明 ResNet 的主幹架構可以用更簡單的 patchify 層替代。
ResNeXt-ify
第三步該研究嘗試採用 ResNeXt [82] 的思路,ResNeXt 比普通的 ResNet 具有更好的 FLOPs / 準確率權衡。核心元件是分組卷積,其中卷積濾波器被分成不同的組。ResNeXt 的指導原則是「使用更多的組,擴大寬度」。更準確地說,ResNeXt 對瓶頸塊中的 3×3 卷積層採用分組卷積。由於顯著降低了 FLOPs,因此這擴充套件了網路寬度以補償容量損失。
該研究使用分組卷積的一種特殊情況——深度卷積(depthwise convolution),其中組數等於通道數。深度卷積已被 MobileNet [32] 和 Xception [9] 使用。研究者注意到,深度卷積類似於自注意力中的加權求和操作,在每個通道的基礎上進行操作,即僅在空間維度上混合資訊。深度卷積的使用有效地降低了網路的 FLOPs。按照 ResNeXt 中提出的策略,該研究將網路寬度增加到與 Swin-T 的通道數相同(從 64 增加到 96)。隨著 FLOPs (5.3G) 的增加,網路效能達到了 80.5%。
反轉瓶頸
Transformer 中一個重要的設計是建立了反轉瓶頸,即 MLP 塊的隱藏維度比輸入維度寬四倍,如下圖 4 所示。有趣的是,Transformer 的這種設計與卷積神經網路中使用的擴充套件比為 4 的反轉瓶頸設計有關聯。
因此該研究第四步探索了反轉瓶頸的設計。如下圖 3 所示,儘管深度卷積層的 FLOPs 增加了,但由於下采樣殘差塊的 shortcut 1×1 卷積層的 FLOPs 顯著減少,整個網路的 FLOPs 減少到 4.6G。有趣的是,這會讓效能從 80.5% 稍稍提高至 80.6%。在 ResNet-200 / Swin-B 方案中,這一步帶來了更多的效能提升——從 81.9% 提升到 82.6%,同時也減少了 FLOPs。
卷積核大小
第五步該研究探索了大型卷積核的作用。視覺 Transformer 最顯著的特性是其非區域性自注意力,每一層都具有全域性感受野。雖然已有卷積神經網路使用了大卷積核,但黃金標準(VGGNet [62] )是堆疊小卷積核(3×3)的卷積層。儘管 Swin Transformer 重新將區域性視窗引入到自注意力塊中,但視窗大小至少為 7×7,明顯大於 3×3 的 ResNe(X)t 卷積核大小。因此該研究重新審視了在卷積神經網路中使用大卷積核的作用。
向上移動深度卷積層。要探索大卷積核,一個先決條件是向上移動深度卷積層的位置(如圖 3(c) 所示)。類似地,Transformer 中也將 MSA 塊放置在 MLP 層之前。由於已經設定一個反轉瓶頸塊,複雜、低效的模組(MSA、大卷積核)通道變少,而高效、密集的 1×1 層將完成繁重的工作。因此這個中間步驟將 FLOPs 減少到 4.1G,導致效能暫時下降到 79.9%。
增大卷積核。經過上述準備工作,採用更大的卷積核是具有顯著優勢的。該研究嘗試了幾種卷積核大小:3、5、7、9、11。網路的效能從 79.9% (3×3) 提高為 80.6% (7×7),而網路的 FLOPs 大致保持不變。
此外,研究者觀察到較大的卷積核的好處是在 7×7 處會達到飽和點,並在大容量模型中驗證了這種行為。當卷積核大小超過 7×7 時,ResNet-200 機制模型沒有表現出進一步的增益。因此該研究在每個塊中都使用了 7×7 深度卷積。
至此,宏觀尺度網路架構的升級調整已經完成。
微觀設計
下一步研究者探究了一些微觀尺度上的架構差異——這裡的大部分探索都是在層級完成的,重點是啟用函式和歸一化層的具體選擇。
用 GELU 替代 ReLU。隨著時間的推移,研究者已經開發了許多啟用函式,但 ReLU 由於其簡單性和有效性,仍然在 ConvNet 中廣泛使用。ReLU 也被用作原始 Transformer 中的啟用函式。GELU 可以被認為是 ReLU 的更平滑變體,被用於最先進的 Transformer,包括 Google 的 BERT 和 OpenAI 的 GPT-2 ,以及 ViT 等。該研究發現 ReLU 在 ConvNet 中也可以用 GELU 代替,準確率保持不變(80.6%)。
更少的啟用函式。Transformer 和 ResNet 塊之間的一個小區別是 Transformer 的啟用函式較少。如圖 4 所示,該研究從殘差塊中消除了所有 GELU 層,除了在兩個 1×1 層之間的 GELU 層,這是複製了 Transformer 塊的風格。這個過程將結果提高了 0.7% 到 81.3%,實際上與 Swin-T 效能相當。
更少的歸一化層。Transformer 塊通常也具有較少的歸一化層。在這裡,該研究刪除了兩個 BatchNorm (BN) 層,在 conv 1 × 1 層之前只留下一個 BN 層。這進一步將效能提升至 81.4%,已經超過了 Swin-T 的結果。請注意,該研究的每個塊的歸一化層比 Transformer 還要少,研究人員發現在塊的開頭新增一個額外的 BN 層並不能提高效能。
用 LN 代替 BN。BatchNorm(BN)是 ConvNet 中的重要組成部分,因為它提高了收斂性並減少了過擬合。然而,BN 也有許多錯綜複雜的東西,可能會對模型的效能產生不利影響 。研究者曾多次嘗試開發替代方案,但 BN 仍然是大多數視覺任務的首選方法。在原始 ResNet 中直接用 LN 代替 BN 效能欠佳。隨著網路架構和訓練技術的改進,該研究重新審視使用 LN 代替 BN 的影響,得出 ConvNet 模型在使用 LN 訓練時沒有任何困難;實際上,效能會改進一些,獲得了 81.5% 的準確率。
分離式(Separate)下采樣層。在 ResNet 中,空間下采樣是透過每個 stage 開始時的殘差塊來實現的,使用 stride =2 的 3×3 卷積。在 Swin Transformer 中,在各個 stage 之間添加了一個分離式下采樣層。該研究探索了一種類似的策略,在該策略中,研究者使用 stride =2 的 2×2 卷積層進行空間下采樣。令人驚訝的是,這種改變會導致不同的訓練結果。進一步調查表明,在空間解析度發生變化的地方新增歸一化層有助於穩定訓練。該研究可以將準確率提高到 82.0%,大大超過 Swin-T 的 81.3%。該研究採用分離式下采樣層,得到了最終模型 ConvNeXt。ResNet、Swin 和 ConvNeXt 塊結構的比較如圖 4 所示。
ResNet-50、Swin-T 和 ConvNeXt-T 的詳細架構規範的比較如表 9 所示。
實驗
ImageNet 實驗評估
該研究構建了不同的 ConvNeXt 變體,ConvNeXtT/S/B/L,與 Swin-T/S/B/L 具有相似的複雜性,可進行對標實驗評估。此外,該研究還構建了一個更大的 ConvNeXt-XL 來進一步測試 ConvNeXt 的可擴充套件性。不同變體模型的區別在於通道數、模組數,詳細資訊如下:
Results ImageNet-1K:下表是 ConvNeXt 與 Transformer 變體 DeiT、Swin Transformer,以及 RegNets 和 EfficientNets 的結果比較。
由結果可得:ConvNeXt 在準確率 - 計算權衡以及推理吞吐量方面取得了與 ConvNet 基線(RegNet 和 EfficientNet )具有競爭力的結果;ConvNeXt 的效能也全面優於具有類似複雜性的 Swin Transformer;與 Swin Transformers 相比,ConvNeXts 在沒有諸如移位視窗或相對位置偏置等專門模組的情況下也具有更高的吞吐量。
ImageNet-22K:下表(表頭參考上表)中展示了從 ImageNet-22K 預訓練中微調的模型的結果。這些實驗很重要,因為人們普遍認為視覺 Transformer 具有較少的歸納偏置,因此在大規模預訓練時可以比 ConvNet 表現更好。該研究表明,在使用大型資料集進行預訓練時,正確設計的 ConvNet 並不遜於視覺 Transformer——ConvNeXt 的效能仍然與類似大小的 Swin Transformer 相當或更好,吞吐量略高。此外,該研究提出的 ConvNeXt-XL 模型實現了 87.8% 的準確率——在 384^2 處比 ConvNeXt-L 有了相當大的改進,證明了 ConvNeXt 是可擴充套件的架構。
Isotropic ConvNeXt 與 ViT 對比:在消融實驗中,研究者使用與 ViT-S/B/L (384/768/1024) 相同的特徵尺寸構建 isotropic ConvNeXt-S/B/L。深度設定為 18/18/36 以匹配引數和 FLOP 的數量,塊結構保持不變(圖 4)。ImageNet-1K 在 224^2 解析度下的結果如表 2 所示。結果顯示 ConvNeXt 的效能與 ViT 相當,這表明 ConvNeXt 塊設計在用於非分層模型時仍具有競爭力。
下游任務評估
在 COCO 上的目標檢測和分割研究:該研究以 ConvNeXt 為主幹,在 COCO 資料集上微調 Mask R-CNN 和 Cascade Mask R-CNN 。表 3 比較了 Swin Transformer、ConvNeXt 和傳統 ConvNet(如 ResNeXt)在目標檢測和例項分割上的結果。結果表明在不同的模型複雜性中,ConvNeXt 的效能與 Swin Transformer 相當或更好。
基於 ADE20K 的語義分割:在表 4 中,該研究報告了具有多尺度測試的驗證 mIoU。ConvNeXt 模型可以在不同的模型容量上實現具有競爭力的效能,進一步驗證了 ConvNeXt 設計的有效性。