谷歌卷積+注意力新模型:CoAtNet,準(zhǔn)確率高達(dá)89.77%,一舉超過ResNet最強變體!

極市導(dǎo)讀
雖然Transformer在CV任務(wù)上有非常強的學(xué)習(xí)建模能力,但是由于缺少了像CNN那樣的歸納偏置,所以相比于CNN,Transformer的泛化能力就比較差。因此,本文的作者提出了CoAtNet(Convlutio+Attention)將卷積層和注意層相結(jié)合起來,使得模型具有更強的學(xué)習(xí)能力和泛化能力。 >>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿
【寫在前面】
近段時間,Transformer在計算機視覺領(lǐng)域取得了非常好的成績,在有額外數(shù)據(jù)(e.g., JFT)用于預(yù)訓(xùn)練的情況下,視覺Transformer的結(jié)構(gòu)更是能夠超過了CNN的SOTA性能。但是在只使用ImageNet的情況下,ViT結(jié)構(gòu)的性能距離CNN還是有一定的差距的。這可能是由于Transformer沒有像CNN那樣強的歸納偏置(inductive bias),因此,本文的作者提出了CoAtNet(Co nvlutio+At tention)將卷積層和注意層相結(jié)合起來,使得模型具有更強的學(xué)習(xí)能力和泛化能力。
Noting:其實這篇論文跟VOLO的出發(fā)點上還是有一點相似的,他們都是引入了CNN那種對局部信息的感知,通過這種inductive bias,使得模型在CV任務(wù)上具有更好的性能。
1. 論文和代碼地址
CoAtNet: Marrying Convolution and Attention for All Data Sizes
論文地址:https://arxiv.org/abs/2106.04803
官網(wǎng)代碼:未開源
核心代碼:后面會找個時間復(fù)現(xiàn)一下論文,然后更新在:https://github.com/xmu-xiaoma666/External-Attention-pytorch上
2. Motivation
雖然Transformer在CV任務(wù)上有非常強的學(xué)習(xí)建模能力,但是由于缺少了像CNN那樣的歸納偏置,所以相比于CNN,Transformer的泛化能力就比較差。因此,如果只有Transformer進(jìn)行全局信息的建模,在沒有預(yù)訓(xùn)練(JFT-300M)的情況下,Transformer在性能上很難超過CNN(VOLO在沒有預(yù)訓(xùn)練的情況下,一定程度上也是因為VOLO的Outlook Attention對特征信息進(jìn)行了局部感知,相當(dāng)于引入了歸納偏置)。既然CNN有更強的泛化能力,Transformer具有更強的學(xué)習(xí)能力,作者就想到,為什么不能將Transformer和CNN進(jìn)行一個結(jié)合呢?因此,這篇論文探究了,具體怎么將CNN與Transformer做結(jié)合,才能使得模型具有更強的學(xué)習(xí)能力和泛化能力。
3. 方法
3.1. Convolution和Self-Attention的融合
3.1.1. Convolution
在卷積類型的選擇上,作者采用的是MBConv(MBConv的結(jié)構(gòu)見下圖,關(guān)于MBConv的詳細(xì)介紹可見[1])。簡單的來說MBConv就是有兩個特點:1)采用了Depthwise Convlution,因此相比于傳統(tǒng)卷積,Depthwise Conv的參數(shù)能夠大大減少;2)采用了“倒瓶頸”的結(jié)構(gòu),也就是說在卷積過程中,特征經(jīng)歷了升維和降維兩個步驟,這樣做的目的應(yīng)該是為了提高模型的學(xué)習(xí)能力。

(圖來自:https://zhuanlan.zhihu.com/p/258386372)
卷積起到是一個對局部信息建模的功能,可以表示成下面的公式:

3.1.2. Self-Attention
Self-Attention[2]的計算主要分為三步,第一步是將query和每個key進(jìn)行相似度計算得到權(quán)重,常用的相似度函數(shù)有點積,拼接,感知機等;第二步是使用一個softmax函數(shù)對這些權(quán)重進(jìn)行歸一化;最后將權(quán)重和相應(yīng)的鍵值value進(jìn)行加權(quán)求和得到最后的結(jié)果。

Self-Attention是進(jìn)行全局信息的建模,因為Self-Attention在每一個位置進(jìn)行特征映射是平等了考慮了所有位置的特征,可以表示成下面的公式:

3.1.3. Conv和Self-Attention的性質(zhì)分析
1)Conv的卷積核是靜態(tài)的,是與輸入的特征無關(guān)的;Self-Attention的權(quán)重是根據(jù)QKV動態(tài)計算得到的,所以Self-Attention的動態(tài)自適應(yīng)加權(quán)的。
2)對卷積來說,它只關(guān)心每個位置周圍的特征,因此卷積具有平移不變性(translation equivalence),這也是卷積具有良好泛化能力的原因。但是ViT使用的是絕對位置編碼,因此Self-Attention不具備這個性質(zhì)。
3)Conv的感知范圍受卷積核大小的限制,而大范圍的感知能力有利于模型獲得更多的上下文信息。因此全局感知也是Self-Attention用在CV任務(wù)中的一個重要motivation。

3.1.4. 融合
上面分析了Conv和Self-Attention幾個性質(zhì),為了將Conv和Self-Attention的優(yōu)點結(jié)合,可以將靜態(tài)的全局全局和和自適應(yīng)注意力矩陣相加,因此就可以表示呈下面的公式:
先求和,再Softmax:

先Softmax,再求和:

3.2. 垂直結(jié)構(gòu)設(shè)計
由于Self-Attention是和輸入數(shù)據(jù)的size呈平方關(guān)系,所以如果直接將raw image進(jìn)行計算,會導(dǎo)致計算非常慢。因此作者提出了三種方案
3.2.1. 被Pass的方案
1)將與輸入數(shù)據(jù)的size呈平方關(guān)系的Self-Attention換成線性的Attention
pass原因:Performance不好
2)加強局部注意力,將全局感知限制為局部感知
pass原因:在TPU上計算非常慢;限制了模型的學(xué)習(xí)能力。
3.2.2. 被接受的方案
進(jìn)行一些向下采樣,并在特征圖達(dá)到合適的大小后采用全局相對關(guān)注。
對于這個方案,也有兩種實現(xiàn)方式:
1)像ViT那樣,直接用16x16的步長,一次縮小為16倍;
2)采用multi-stage的方式,一次一次Pooling。
3.2.3. Multi-Stage的變種方案
因為前面我們分析了Self-Attention和Convolution各有各的優(yōu)點,因此在每個Stage中采用什么結(jié)構(gòu)成為了本文研究的重點,對此,作者提出了四種方案:1)
C-C-C-C;2)C-C-C-T;3)C-C-T-T ;4)C-T-T-T。其中C代表Convolution,T代表Transformer。
為了比較這幾種方案哪個比較好,作者提出兩個衡量點:1)泛化能力(genralization),2)學(xué)習(xí)能力(model capacity)。
泛化能力:當(dāng)訓(xùn)練損失相同時,測試集的準(zhǔn)確率越高,泛化能力越強。泛化能力用來衡量模型對于沒見過數(shù)據(jù)的判斷準(zhǔn)確度。
學(xué)習(xí)能力:當(dāng)學(xué)習(xí)數(shù)據(jù)是龐大、冗余的,學(xué)習(xí)能力強的模型能夠獲得更好的性能。學(xué)習(xí)能力用來衡量擬合大數(shù)據(jù)集的能力。

上面這張圖展示了在ImageNet-1K(小數(shù)據(jù)集),JFT(大數(shù)據(jù)集)上的訓(xùn)練損失和驗證準(zhǔn)確率。根據(jù)對genralization和model capacity的定義,我們可以得出這樣的結(jié)論:
在genralization capability 上,各個變種genralization capability 的排序如下:

對于model capacity,各個變種model capacity 的排序如下:

基于以上結(jié)果,為了探究C-C-T-T 和 C-T-T-T,哪一個比較好,作者又做了一個transferability test。在JFT上預(yù)訓(xùn)練后,在ImageNet-1K上再訓(xùn)練了30個epoch。結(jié)果如下:

可以看出C-C-T-T的效果比較好,因此作者選用了C-C-T-T作為CoAtNet的結(jié)構(gòu)。
4. 實驗
4.1. 不同CoAtNet的變種

分為幾個stage,每個stage的大小都變成了原來的1/2,通道維度都變大了。
4.2. ImageNet-1K的結(jié)果

從上面的表格中可以看出CoAt的結(jié)果不同比各種ViT的性能更強,并且在不預(yù)訓(xùn)練的情況下,CoAtNet-3的性能也跟NFNet-F5一樣

上圖可以看出,在不預(yù)訓(xùn)練的情況下,CoAtNet能夠明顯優(yōu)于其他ViT的變種。

在使用ImageNet-21K的情況下,CoAtNet變體實現(xiàn)了88.56%的top-1精度,相比于其他CNN和ViT結(jié)構(gòu)也有明顯的優(yōu)勢。
4.3. JFT的結(jié)果

在JFT大數(shù)據(jù)集上,JFT的性能也是能夠明顯優(yōu)于其他模型,展現(xiàn)了CoAtNet強大的泛化能力和模型容量。
5. 總結(jié)
目前ViT傾向于引入CNN的假設(shè)偏置來提高模型的學(xué)習(xí)和泛化能力,最近的VOLO這篇文章也是引入了局部感知模塊,獲得更加細(xì)粒度的信息。無論是VOLO還是CoAtNet都將分類任務(wù)的性能刷到了一個新的高度。
參考文獻(xiàn)
[1]. Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zhmoginov, and Liang-Chieh Chen. Mobilenetv2: Inverted residuals and linear bottlenecks. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 4510–4520, 2018.
[2]. Vaswani, Ashish, et al. "Attention is all you need." arXiv preprint arXiv:1706.03762 (2017).
本文亮點總結(jié)
如果覺得有用,就請分享到朋友圈吧!
公眾號后臺回復(fù)“84”獲取第84期直播PPT~

# 極市原創(chuàng)作者激勵計劃 #

