來自 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 [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 所示。
該研究構建了不同的 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 設計的有效性。
使用NVIDIA Riva快速構建企業級TTS語音合成助手
NVIDIA Riva 是一個使用 GPU 加速,能用於快速部署高性能會話式 AI 服務的 SDK,可用於快速開發語音 AI 的應用程序。Riva 的設計旨在幫助您輕鬆、快速地訪問會話 AI 功能,開箱即用,通過一些簡單的命令和 API 操作就可以快速構建高級別的 TTS 語音合成服務。
2022年1月12日19:30-21:00,本次線上分享主要介紹:啟動 NVIDIA Riva 客戶端快速實現文字轉語音功能使用 Python 快速搭建基於 Riva 的 TTS 語音合成服務應用

©THE END
轉載請聯繫本公眾號獲得授權
投稿或尋求報道:content@jiqizhixin.com