2022-01-04

論文閱讀:《AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》

論文地址:https://arxiv.org/abs/2010.11929??

代碼地址:https://github.com/google-research/vision_transformer

? ? ? ? ? ? ? ? ??https://github.com/lucidrains/vit-pytorch

論文翻譯:https://blog.csdn.net/weixin_40671425/article/details/121457772

面向任務(wù):有監(jiān)督目標(biāo)檢測(cè)

Motivation:使用self-attention機(jī)制完全替代CNN進(jìn)行目標(biāo)檢測(cè)任務(wù)。

Contribution:1.本文的作者盡可能地將NLP領(lǐng)域的transformer不作修改地搬到CV領(lǐng)域來(lái)。2.為了實(shí)現(xiàn)將self-attention機(jī)制完全替代cnn進(jìn)行目標(biāo)檢測(cè)任務(wù)這一目標(biāo),本文作者設(shè)計(jì)了一種將三維的圖像轉(zhuǎn)化為序列化的數(shù)據(jù)的方式。3.沒(méi)有使用faster-rcnn或者其他類似的backbone網(wǎng)絡(luò)進(jìn)行預(yù)處理。4.使用方便,可以達(dá)到開箱即用。5.本文通過(guò)大量的大規(guī)模實(shí)驗(yàn)證明了Visual Transformer模型的能力優(yōu)于SOTA CNN模型。6.本文利用不同尺度的數(shù)據(jù)集和模型,設(shè)計(jì)了benchmark,與ResNet和混合模型進(jìn)行比較評(píng)價(jià)。

Method:模型的架構(gòu)分為3步,Patching Embedding, Position & Learnable Embedding 還有 Transformer Encoder。

Transformer很強(qiáng), 但視覺(jué)任務(wù)中的應(yīng)用很有限。Transformer提出后在NLP領(lǐng)域中取得了極好的效果, 其全Attention的結(jié)構(gòu), 不僅增強(qiáng)了特征提取能力, 還保持了并行計(jì)算的特點(diǎn), 可以又快又好的完成NLP領(lǐng)域內(nèi)幾乎所有任務(wù), 極大地推動(dòng)自然語(yǔ)言處理的發(fā)展。但在其在計(jì)算機(jī)視覺(jué)領(lǐng)域的應(yīng)用還非常有限。 在此之前只有目標(biāo)檢測(cè)(Object detection)中的DETR大規(guī)模使用了Transformer, 其他領(lǐng)域很少, 而純Transformer結(jié)構(gòu)的網(wǎng)絡(luò)則是沒(méi)有。

ViT結(jié)構(gòu)

我們知道CNN具有平移不變形,但是transformer基于self-attentation可以獲得long-range信息(更大的感受野),但是CNN需要更多深層的Conv-layers來(lái)不斷增大感受野。相當(dāng)于卷積模型來(lái)比,transformer在減少計(jì)算資源的同時(shí)獲得了非常出色的結(jié)果。當(dāng)對(duì)中等規(guī)模數(shù)據(jù)集(例如ImageNet)進(jìn)行訓(xùn)練的時(shí)候,此模型所產(chǎn)生的適合的精度要比同等規(guī)模的ResNet低幾個(gè)百分點(diǎn)。數(shù)據(jù)量越大,模型越友好。很多圖像特征提取器將CNN與專門注意力機(jī)制結(jié)合在一起,但是未能在硬件加速器擴(kuò)展。transformer缺乏CNN固有的一些感應(yīng)偏差,例如平移不變性和局部性,因此在訓(xùn)練不足的數(shù)量時(shí)候,很難有好的效果。

我們證明了,對(duì)CNN的依賴不是必要的,在圖象識(shí)別任務(wù)中,在圖像塊(image patches)的序列上應(yīng)用純粹的Transformer模型也可以表現(xiàn)得很好。當(dāng)使用大量數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練,再遷移到多個(gè)中小型圖象識(shí)別基準(zhǔn)庫(kù)后,ViT得到了優(yōu)異的結(jié)果,相比于最先進(jìn)(SOTA)的卷積網(wǎng)絡(luò),而訓(xùn)練所需要的計(jì)算資源更少。

歸納偏置(Inductive bias):vit比cnn有更少的特定于圖像的歸納偏置。在cnn中,局部性、二維鄰域結(jié)構(gòu)和平移不變性貫穿整個(gè)模型的每一層。在ViT中,只有MLP層是局部和平移等變的,而Self-attention是全局的。二維鄰域結(jié)構(gòu)使用地非常少:在模型開始時(shí),將圖像切割成小塊,并在微調(diào)時(shí)對(duì)不同分辨率的圖像進(jìn)行位置嵌入調(diào)整。除此之外,初始化時(shí)的位置嵌入不包含塊的二維位置信息,所有塊之間的空間關(guān)系都需要從頭學(xué)習(xí)。

混合結(jié)構(gòu)(Hybrid Architecture):輸入序列可以由CNN的feature map組成,從而替代原始圖像塊。在這個(gè)混合模型中,將patch embedding 應(yīng)用于從CNN feature map中提取的patches。作為一種特殊情況,patches的尺寸可以是1x1,即簡(jiǎn)單地將feature map平坦化,并映射到Transformer的尺寸即可得到輸入序列。如上所述添加分類輸入嵌入和位置嵌入。

Transformer結(jié)構(gòu)

步驟一(input)

輸入圖像大小尺寸為(H\times W\times C),首先我們將圖片進(jìn)行切分,按照patch_size進(jìn)行切分,這樣我們就得到了(P,P)大小的一個(gè)個(gè)圖塊, 這里的圖塊數(shù)量為N=HW/P^2。聯(lián)想到transformer,這里的N就可以理解是序列長(zhǎng)度,其中序列中每個(gè)element的維度dim稱之為patch embedding。在我們進(jìn)行圖片分類的時(shí)候我們一般在序列前加入一個(gè)element,我們稱此element為element_{class} ,這樣我們得到序列長(zhǎng)度為N+1,在訓(xùn)練的時(shí)候我們可以通過(guò)此element進(jìn)行圖片分類。最后再加上位置矩陣(注意這里是add不是concate)構(gòu)成我們的輸入矩陣z0

步驟二(forward)

transformer編碼器主要由兩個(gè)components構(gòu)成分別是MSA(multi-head self-attention)和MLP(multi layer perceptron)組成。

前向傳播的計(jì)算公式

第一個(gè)公式:這里的x_{class} 表示的類別element,x_{p}^n 表示的是輸入的每個(gè)patch,E代表的對(duì)應(yīng)的權(quán)重,N表示的patch的數(shù)量,E_{pos} 代表的是position的信息。第二個(gè)公式:這里的LN表示的是Layer Normalization

MSA的公式

這里的qkv矩陣之前已經(jīng)說(shuō)過(guò)了,如通過(guò)輸入z與U_{qkv} 權(quán)重得到而來(lái),我們?cè)谕ㄟ^(guò)公式A=softmax(qk^T/\sqrt{D_{h} }  )得到我們的Attention權(quán)重。最終利用v矩陣與attention權(quán)重相乘得到SA(z)=Av。我們得到如下公式:

MLP其實(shí)就是多層感知機(jī),這里很容易理解,其包含具有GELU非線性的兩全連接層。根據(jù)公式(2)(3)可以看到ViT模型結(jié)構(gòu)也采用了殘差機(jī)制。

特征提?。?br>

a.對(duì)輸入Patches進(jìn)行LN標(biāo)準(zhǔn)化處理,用于加快網(wǎng)絡(luò)收斂;

b.MSA(多頭注意力機(jī)制),類似CNN中使用多個(gè)濾波器,有助于網(wǎng)絡(luò)捕捉更豐富特征;

c.MLP(多層感知器),全連接+GELU激活函數(shù)+Dropout;

d.殘差連接,防止梯度消失;

一些訓(xùn)練細(xì)節(jié):

訓(xùn)練的時(shí)候先在大的數(shù)據(jù)集上進(jìn)行預(yù)訓(xùn)練,然后用下游任務(wù)的小數(shù)據(jù)集fine-tune。fine-tune的時(shí)候用高分辨率的圖像往往性能更好。當(dāng)圖像分辨率增大后,是維持每個(gè)patch的大小不變,生成更多的patch,還是增大patch的size,維持patch的數(shù)量不變呢?作者選擇了前者。對(duì)于transformer來(lái)說(shuō),它可以處理任意長(zhǎng)度的序列(只要顯存夠),所以這反面是不會(huì)有影響的,但是position embedding會(huì)受到影響(可能失效),為了匹配維度,作者根據(jù)patch的位置對(duì)position embedding進(jìn)行了2D插值,這是ViT中唯一的歸納偏置(inductive bias)。

跟SOTA對(duì)比:

在各個(gè)數(shù)據(jù)集上的性能對(duì)比胳膊

在JFT上預(yù)訓(xùn)練的ViT-L/16性能比BiT-L(也是在JFT上進(jìn)行預(yù)訓(xùn)練)更好,且所需的計(jì)算資源更少。模型更大一點(diǎn)的ViT-H/14性能進(jìn)一步提升,尤其是在更具挑戰(zhàn)性的任務(wù)上,如ImageNet、CIFAR-100和VTAB,且所需的計(jì)算資源依舊遠(yuǎn)小于之前SOTA。在I21K上預(yù)訓(xùn)練得到的ViT-L/16性能也不錯(cuò),需要的計(jì)算資源更少,在8TPU上訓(xùn)練30天即可。

?數(shù)據(jù)集的大小對(duì)性能的影響:

左圖中,在小數(shù)據(jù)集(ImageNet)上,盡管使用了很強(qiáng)的正則化操作(weight decay,dropout,label smooth),大模型(ViT-L)性能還是不如小模型(ViT-B),應(yīng)該是過(guò)擬合了,也不如BiT(ResNet)。在大數(shù)據(jù)集(JFT-300M)上,大模型性能更好。

右圖中,在9M,30M,90M,300M的JFT數(shù)據(jù)集上做實(shí)驗(yàn),且不進(jìn)行正則化,但是采用early-stopping方法,以探索模型本身的屬性。對(duì)比ViT-B/32和ResNetx1(二者參數(shù)量差不多),在小數(shù)據(jù)集上,ViT-B/32性能不如ResNet,但在90M+的數(shù)據(jù)集上,ViT-B/32性能更好,對(duì)比ViT-L/16和ResNet也是一樣。作者得出的結(jié)論是,在小數(shù)據(jù)集上,卷積的歸納偏置是是非常有用的,但在大數(shù)據(jù)集上,直接學(xué)relevant pattern就夠了。

計(jì)算資源與性能的折中:

Hybrid表示先用ResNet提取patch的特征,而不是直接把patch送入網(wǎng)絡(luò)。跟ResNet相比,ViT性價(jià)比更高,相同性能,ViT所需要的計(jì)算資源更少。跟Hybrid模型相比,在計(jì)算資源有限的情況下,Hybrid模型性能更優(yōu),但隨著計(jì)算資源的最佳,性能的gap逐漸縮小為0。這讓人有些意外,因?yàn)橹庇X(jué)上,ResNet提取的特征對(duì)ViT應(yīng)該是有幫助的。

應(yīng)用ViT進(jìn)行圖像分類的處理過(guò)程


代碼結(jié)構(gòu):

ViT的實(shí)現(xiàn)以及初始化

每個(gè)transformer包含Attention模塊和FeedForward(FFN)模塊


重點(diǎn)相關(guān)論文

1.Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, ?ukasz Kaiser, and Illia Polosukhin. Attention is all you need. In NIPS, 2017.

Transformer 的提出,祖師爺

2.Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. BERT: Pre-training of deep bidirectional transformers for language understanding. In NAACL, 2019.

BERT 模型,這篇論文中大量的設(shè)計(jì)來(lái)自BERT,如xclass標(biāo)志位,自監(jiān)督預(yù)訓(xùn)練等

3.Jean-Baptiste Cordonnier, Andreas Loukas, and Martin Jaggi. On the relationship between selfattention and convolutional layers. In ICLR, 2020.

像素級(jí),小塊級(jí)別的attention,和vit很一致

4.Mark Chen, Alec Radford, Rewon Child, Jeff Wu, and Heewoo Jun. Generative pretraining from pixels. In ICML, 2020a.

像素級(jí)別,使用Transformer的圖像生成模型

參考資料:https://bbs.huaweicloud.com/blogs/detail/280939

? ? ? ? ? ? ? ? ??http://www.itdecent.cn/p/20660b896f07

? ? ? ? ? ? ? ? ??https://zhuanlan.zhihu.com/p/343812157

? ? ? ? ? ? ? ? ??https://blog.csdn.net/zhuixun_/article/details/115920130

? ? ? ? ? ? ? ? ??https://blog.csdn.net/cdknight_happy/article/details/121031678

? ? ? ? ? ? ? ? ??https://zhuanlan.zhihu.com/p/398983122

? ? ? ? ? ? ? ? ??https://blog.csdn.net/cg129054036/article/details/121644780

? ? ? ? ? ? ? ? ??https://zhuanlan.zhihu.com/p/359071701

? ? ? ? ? ? ? ? ??https://zhuanlan.zhihu.com/p/422144659

? ? ? ? ? ? ? ? ??ViT三部曲

? ? ? ? ? ? ? ? ??https://blog.csdn.net/qq_44055705/article/details/113825863

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容