這是一篇來自谷歌大腦的paper。這篇paper的主要成果是用Transformer[1]取代CNN,并證明了CNN不是必需的,甚至在大規(guī)模數(shù)據(jù)集預訓練的基礎上在一些benchmarks做到了SOTA,并且訓練時使用的資源更少。
圖像分塊
要將圖片分塊是因為Transformer是用于NLP領域的,在NLP里面,Transformer的輸入是一個序列,每個元素是一個word embedding。因此將Transformer用于圖像時也要找出word的概念,于是就有了這篇paper的title:AN IMAGE IS WORTH 16X16 WORDS,將一張圖片看成是16*16個“單詞”。
inductive biases
在機器學習中,人們對算法做了各種的假設,這些假設就是inductive biases(歸納偏置),例如卷積神經(jīng)網(wǎng)絡就有很強的inductive biases。文中做了一個實驗,在中等大小數(shù)據(jù)集訓練時,精度會略遜色于ResNets。但是這個結(jié)果也是應該預料到的,因為Transformer缺少了CNN固有的一些inductive biases,比如平移不變性和局部性。所以當沒有足夠的數(shù)據(jù)用于訓練時,你懂的。但是恰恰Transformer就強在這一點,由于Transformer運算效率更高,而且模型性能并沒有因為數(shù)據(jù)量的增大而飽和,至少目前是這樣的,就是說模型性能的上限很高,所以Transformer很適合訓練大型的數(shù)據(jù)集。
ViT
在ViT中,模型只有Encoder的,沒有Decoder,因為只是用于識別任務,不需要Decoder。
首先按照慣例,先把圖像的patch映射成一個embedding,即圖中的linear projection層。然后加上position embedding,這里的position是1D的,因為按照作者的說法是在2D上并沒有性能上的提升。最后還要加上一個learnable classification token放在序列的前面,classification由MLP完成。
Hybrid Architecture。模型也可以是CNN和Transformer的混合,即Transformer的輸入不是原圖像的patch,而是經(jīng)過CNN得到的feature map的patch。
實驗結(jié)果
不同大小的ViT的參數(shù)量。
可以看到在預訓練數(shù)據(jù)集很小的情況下ViT的效果并不好,但是好在隨著預訓練數(shù)據(jù)集越大時ViT的效果越好,最終超過ResNet。
BiT[2]是谷歌用JFT-300M(谷歌內(nèi)部非公開數(shù)據(jù)集)訓練的ResNet模型。Noisy Student[3]是谷歌提出借助半監(jiān)督大大提升了imagenet性能的算法。可以看到,在JFT-300M預訓練的情況下,ViT比ResNet好上不少,并且開銷更小。
總結(jié)
ViT的成功我認為是以下幾點:
1、self-attention比CNN更容易捕捉long-range的信息;
2、大量的數(shù)據(jù),在視覺中CNN是人類實踐中很成功的inductive biases,顯然大量的數(shù)據(jù)是能戰(zhàn)勝inductive biases的;
3、計算效率高,因為self-attention可以看作是矩陣運算,所以效率很高,容易訓練大型的模型。
原文標題:視覺新范式Transformer之ViT
文章出處:【微信公眾號:深度學習實戰(zhàn)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
責任編輯:haq
-
機器視覺
+關注
關注
162文章
4389瀏覽量
120446 -
機器學習
+關注
關注
66文章
8425瀏覽量
132773 -
Transforme
+關注
關注
0文章
12瀏覽量
8795
原文標題:視覺新范式Transformer之ViT
文章出處:【微信號:gh_a204797f977b,微信公眾號:深度學習實戰(zhàn)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論