魔改ResNet反超Transformer再掀架構之爭!作者說「沒一處創新」

fans news 發佈 2022-01-16T14:55:23+00:00

過去一年,Transformer頻頻跨界視覺領域,大有搶CNN飯碗之勢。但就在此時,一篇《2020年代的卷積網絡》橫空出世,帶來全新純卷積模型ConvNeXt,一下又熱鬧起來——

夢晨 發自 凹非寺

量子位 | 公眾號 QbitAI

過去一年,Transformer頻頻跨界視覺領域,大有搶CNN飯碗之勢。

先是圖像分類上被谷歌ViT突破,後來目標檢測和圖像分割又被微軟Swin Transformer拿下。

隨著投身視覺Transformer研究的學者越來越多,三大任務榜單皆被Transformer或兩種架構結合的模型占據頭部。

但就在此時,一篇《2020年代的卷積網絡》橫空出世,帶來全新純卷積模型ConvNeXt,一下又熱鬧起來——

全世界CV圈再次掀起模型架構之爭,LeCun等一眾頂級學者都下場評論的那種。

論文指出,ConvNeXt性能反超同等規模的Swin Transformer,在ImageNet-1k上超過後者0.7%。

COCO、ADE20K上,ConvNeXt也做到同等規模更好或相當水平。

面對這篇由Facebook與UC伯克利聯手打造的論文,深度學習三巨頭之一的LeCun直言:

卷積模型與視覺Transformer間的爭論愈演愈烈了!

Github上,ConvNeXt連續多天排在趨勢榜第一。

在國內,如此垂直的學術問題甚至一度登上知乎全站熱榜。

在國外,不少高校學者和谷歌、Arm等大廠工程師都來參與討論,甚至捕捉到一些經典論文作者——

ViT作者EfficientNet系列作者都來展示自己的最新研究成果,想要一比高下。

再說回LeCun,這次他還真不是來給自家成果站台的,而是提出模型架構之間相互借鑑是未來的方向。

你以為我接下來要說「Conv is all you need」了嗎?不是!

原來LeCun自己最喜歡的架構類似DETR,第一層是卷積,後面與更多Transformer風格的層相結合。

雖然這次的ConvNeXt不是他說的這種,但也從Transformer身上借鑑了大量技巧,LeCun覺得其成功之處就在於此。

這次論文的通訊作者謝賽寧也對這些討論作出了回應。

他說這並不是一篇想要比拼精度刷榜單的論文,更多的是想探索卷積模型的設計空間。

在設計過程中他們團隊非常克制,儘量保持了模型的簡潔。

在我看來,所有模型架構都應該是朋友,只有過度複雜才是共同的敵人(如果你認同奧卡姆剃刀原則的話)。

到底誰是最強架構拋開不談,參與討論的一眾大佬們對這篇論文本身都有一個共同感受:

圖表精美,結構清晰,實驗充分,值得一讀!

特別是其中有一張精美插圖,可以說是全文的精華,也是作者自己提供的「一圖看懂」。

圖中清晰呈現了一步步把ResNet-50從78.8%精度提升到82.0%的全步驟,及所用到的方法。

下面就先來介紹一下這篇論文,了解一下ConvNeXt所用的方法和來龍去脈。

之後再來看架構之爭,相信會有不一樣的視角~

給CNN披上Transformer的皮

先看摘要,其中有關鍵的一句話闡明了這篇論文的研究初衷。

……本文旨在重新審視CNN的設計空間,用現代方法在ResNet基礎上做優化,測試純卷積模型的性能極限……

團隊認為雖然Transformer在視覺上大獲成功,但全局注意力機制的複雜度是與輸入圖像尺寸的平方呈正比的。

對ImageNet圖像分類任務的224×224、384×384解析度來說還算可以接受,需要高解析度圖像的實際應用場景下就不太理想。

Swin Transformer靠重新引入卷積網絡中的滑動窗口等諸多特性彌補了這個問題,但也讓Transformer變得更像CNN了

Swin Transformer的成功讓他們重新認識到卷積的重要性。

據此,這篇論文的研究思路便是:

如果讓卷積模型也借鑑Transformer架構中的各種方法,但始終不引入注意力模塊,能取得什麼效果?

論文最後所呈現出來的,是把標準ResNet一步步改造得更像Transformer的路線圖。

也就是上面提到的那張廣受好評的圖。

條形圖中,有顏色的部分代表Swint-T與ResNet-50在各種條件下的模型精度比較。

灰色部分是更大規模的Swin-B與ResNet-200之間的比較,帶陰影的地方說明這個方法最後未被採用。

為了公平對比,模型的計算量在整個過程中也大致保持與Swin Transformer同水平。

研究團隊把改動之處總結成五個部分:

宏觀設計、引入ResNeXt、反轉瓶頸層、增大卷積核、微觀設計

不過在詳細解釋每個部分之前,先要介紹一下訓練方法上的改進。

0、訓練方法

視覺Transformer不僅帶來一套新的模塊和架構設計,也採用了與傳統CNN不同的訓練方法。

論文中採用的是與DeiT和Swin Transformer相似的訓練方法。

先把epoch從ResNet的90增加到300,同時改用AdamW優化器

數據增強方面引入了Mixup、Cutmix、RandAugment和Random Erasing。

正則化方面使用了隨機深度(Stochastic Depth)和標籤平滑(Label Smoothing)

採用這些方法後,torchvision版ResNet-50的性能提升了2.7%,從76.1%升到78.8%

(使用ImageNet-1k上224x244解析度圖像訓練的top 1精度,下同)

這一結果證明,傳統卷積模型與視覺Transformer之間的性能差異也有一部分來自訓練方法。

接下來進入對模型本身5大項改動的詳細介紹。

1、宏觀設計

這部分主要有兩項改動,參考的也是Swin Transformer。

首先是block數量的比例分配,原版ResNet-50的4個階段中是按(3, 4, 6, 3)分配。

Swin Transformer借鑑了多階段的,每個階段輸出不同解析度的y思想,但比例改成了1:1:3:1。

ConvNeXt跟隨這個比例按(3,3,9,3)分配,結果是模型精度提高了0.6%,到達79.4%

不過根據此前Facebook團隊的兩項研究,團隊認為更優的比例也可能存在,有待繼續探索。

這部分的第二項改動是在stem層。

傳統ResNet-50的做法是一個步長為2的7x7的卷積加上最大池化,相當於對輸入圖像做了4倍的下採樣。

從ViT開始會先把輸入圖像切成一個個patch,對每個patch的操作不再重疊。

Swin Transformer的patch尺寸是4x4,所以ConvNeXt也設置成步長為4的4x4非重疊卷積。

這項改動給模型精度再度帶來0.1%的提升,現在到了79.5%

2、引入ResNeXt

ResNeXt是本篇論文通訊作者謝賽寧在Facebook何愷明組實習時的一作論文,發表在CVPR 2017。

與原版ResNet相比,ResNeXt在精度與計算量之間的權衡做得更好,所以ConvNeXt打算把這個優點繼承過來。

ResNeXt的核心思想是分組卷積,同時為彌補模型容量上的損失增加了網絡寬度。

這一次的ConvNeXt直接讓分組數與輸入通道數相等,設為96。

這樣每個卷積核處理一個通道,只在空間維度上做信息混合,獲得與自注意力機制類似的效果。

這項改動把模型精度再提高1%,來到80.5%

3、反轉瓶頸層

這種方法在MobileNetV2中首次提出,隨後也在更多輕量化CNN模型中流行開來。

有意思的是,Transformer中採用了相似的設計,所以ConvNeXt也做了嘗試。

這樣反轉以後,雖然depthwise卷積層的FLOPs增加了,但下採樣殘差塊作用下,整個網絡的FLOPs反而減少。

模型精度也稍稍提高了0.1%,來到80.6%

另外在以ResNet-200為基礎的更大模型中,提升效果也更明顯,從81.9%漲到82.6%。

4、增大卷積核

VGG開始,3x3卷積核成為黃金標準,小卷積核在硬體中也得到了充分地適配。

Swin Transformer引入了類似卷積核的局部窗口機制,但大小至少有7x7。

據此,ConvNeXt打算再次對不同卷積核大小的效果重新做探索。

但是,反轉瓶頸層之後放大了卷積層的維度,直接增大卷積核會讓參數量顯著增加。

所以在這之前,還要再做一步操作,在反轉瓶頸層的基礎上把depthwise卷積層提前(b到c)。

這一步操作暫時將模型精度下降到了79.9%

之後對卷積核大小的試驗從3x3到11x11都有嘗試,在7x7時模型精度重回80.6%

再往上增加效果則不明顯,在ResNet-200上同樣如此,最後卷積核大小就定在7x7。

5、微觀設計

接下來是層一級上的微觀設計,重點放在了激活函數和歸一化上。

激活函數上,卷積模型主要使用的是簡單高效的ReLU。

GELU比ReLU更平滑,被BERT、GPT-3等NLP模型以及ViT採用。

在ConvNeXt的探索中,使用GELU沒有給模型精度帶來提高,但也是一種可行方案。

激活函數的數量上,每個Tranformer塊中僅MLP塊中存在激活函數。

而CNN的普遍做法是每個卷積層後面都附加一個激活函數。

ConvNeXt嘗試只保留了兩個1x1層之間的GELU激活函數,與Transformer做法保持一致。

這種方法讓模型精度漲了0.7%,終於達到81.3% ,與Swin-T同一水平。

歸一化層的數量同樣做了減少,精度再漲0.1%至81.4%,超過了Swin-T。

下一步是用LN(層歸一化)替換BN(批次歸一化),這在原版ResNet中會讓精度下降。

但有了上面各種改動做基礎,ConvNeXt上這個操作讓模型精度漲了0.1%,現在達到81.5%。

最後一步是分離下採樣層。

在ResNet上,下採樣由殘差塊執行,Swin Transformer則是使用了單獨的下採樣層。

ConvNeXt也嘗試了類似的策略,使用步長為2的2x2卷積執行下採樣操作。

結果卻造成了訓練不穩定。

好在後來找到解決辦法,在每個下採樣層前面、stem前面和最後的全局平均池化前面都加上LN。

以上所有改動匯總起來,ConvNeXt單個塊的結構終於定型。

最終得到的ConvNeXt-T小模型,精度達到82.0%,優於Swin-T的81.3%。

更大模型的對比上ConvNeXt也略高,但優勢縮小。

比較有意思的是,團隊總結道:

所有這些方法裡,沒有一項是這篇論文獨創的,它們分布在過去十年間的多項研究里。

ConvNeXt只是把這些方法都集中到一起研究,最終卻發現了能在ImageNet-1k上勝過Transformer的純卷積模型。

從FLOPs、參數量、吞吐量和內存使用量上看,每種規模的ConvNeXt都和Swin Transformer保持大致相當。

ConvNeXt的優勢還在於,不需要增加額外的移動窗口注意力、相對位置偏置等特殊結構。

保持了模型的簡潔性,也意味著更容易部署。

最終,團隊希望通過這篇論文挑戰一些已被廣泛接受和默認的觀點。

也是為了促使研究者們重新思考卷積在計算機視覺中的重要性

對於ConvNeXt重新掀起的這場視覺模型架構之爭,有更多來自學界和工業界的人提出了不同觀點。

回到架構之爭

UC伯克利教授馬毅表示,對這種表面上的比拼不太認同。

結合他的下一條微博,馬毅教授更希望大家多去關注理論基礎。

知乎上有一位匿名網友提出,這篇文章對工業界來說價值更大。

此前Transformer效果雖好,但實踐上很難部署,大家一直期待著看到卷積方法的最終實力。

其實這也正是ConvNeXt這項研究的初衷。

從論文作者謝賽寧對另一處討論的回覆中可以看出,研究團隊認為ImageNet結果並不是重點。

他們更想強調和讓大家關注的是卷積模型在目標檢測等下游任務中的表現。

對於下游任務,ConvNeXt在COCO和ADE20K上做了驗證,與SwinTransformer比也有相當或更好的表現。

後續討論中還發生一件趣事。

有人提問LeCun,你們部門不應該隨著公司改名叫Meta了麼,怎麼論文署名還是FAIR?

LeCun開了個小玩笑,說這代表Fundamental AI Research(基礎AI研究)

也是很幽默了~

作者團隊

前面已提到的謝賽寧是FAIR研究員,本科就讀於上海交通大學ACM班,博士畢業於UC聖迭戈分校。

謝賽寧讀博士時曾在FAIR實習,期間與何愷明合作完成ResNeXt,是該論文一作。

不久前廣受關注的何愷明一作論文MAE他也有參與。

本篇ConvNeXt他是通訊作者,巧合的是,這次的一作也是博士期間來實習的。

一作劉壯,博士就讀於UC伯克利,清華姚班畢業生。

DenseNet作者,曾獲CVPR 2017最佳論文獎。

論文地址
https://arxiv.org/abs/2201.03545

Github地址:
https://github.com/facebookresearch/ConvNeXt

參考連結:
[1]https://twitter.com/ylecun/status/1481194969830498308

[2]https://www.zhihu.com/question/510965760/answer/2306192441

— 完 —

量子位 QbitAI · 頭條號簽約

關注我們,第一時間獲知前沿科技動態

關鍵字: