最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

ViT論文逐段精讀【論文精讀】

2023-01-19 19:07 作者:夢到死鎖的銀行家  | 我要投稿
  • vit中的預處理

輸入圖片大小為224*224*3(用X表示),每個patch的大小為16*16,所以patch個數(shù)為(224/16)^2=196,每一個圖像塊的維度就是16*16*3=768

Linear Projection線性投射層就是全連接層(用E表示),該維度是768*768,前面的768是不變的,是算出來的16*16*3=768,后面的768是可以變化的

X*E得到的還是196*768(196個token,每個token維度都是768),之后在拼接上1個cls token(1*768),再添加位置信息(是sum而不是concat),所以最后輸入到Transformer Encoder的還是197*768

  • transformer block
  • Layer Norm(不是Batch Norm)
  • Mutil-Head Attention

輸入的序列是197*768,如果只是一個attention,那么q,k,v都是197*768;而vit使用了multi-head attention(12個head,有12個對應(yīng)的k,q,v),所以k,q,v是197*64,最終再將12個head的輸出拼接出來,所以多頭注意力輸出的結(jié)果仍是197*768。

然后經(jīng)過Layer Norm,然后再經(jīng)過MLP將維度相對應(yīng)的方法,一般是放大四倍,比如197*768 -> 197*3072,然后再縮小投射回去變成197*768輸出。

  • transformer block總結(jié)

經(jīng)過transformer block之后,輸入和輸出的序列大小仍是197*768,所以可以不停的疊加transformer block,L層的Transformer block就是Transformer Encoder

  • 關(guān)于為什么使用cls token而不使用GAP

resnet經(jīng)過一系列池化卷積,得到14*14大小的特征圖,然后使用GAP(globally average-pooling),再展平最后進行分類

transformer的encoder輸入和輸出都是n個元素:1、可以直接在這n個輸出做一個global average pooling,然后得到一個最后的特征;2、也可以再前面添加class token,用class token做輸出,然后做分類。

這兩種方式其實都可以,作者是為了保持和原始的transformer保持一致,使用了class token

  • positional embedding的消融實驗

有1d,2d的以及relative相對的位置編碼。其中1d就是1~9這種形式;2d的就是11,12,13...33這種形式,更具有structure信息;相對的就是offset(有點不理解)

但是消融實驗的結(jié)果同樣也是,使用哪種方式效果都差不多,所以文章使用了1d的方式(和原始的transformer保持一致)。

  • 第一個公式理解

xp1~xpn都是圖像塊,一共有n個patch。每個patch先去和linear projection全連接層做轉(zhuǎn)換,得到patch embedding,然后在前面拼接class embedding,然后再加上位置編碼信息Epos,得到的z0就是transformer的輸入

  • 第二、三公式理解

就是做L個循環(huán),MSA和MLP交替循環(huán)使用,但是會先做LN處理,除此之外還有殘差連接。zl就是transformer block得到的結(jié)果。

  • 第三個公式的理解

將class token對應(yīng)的輸出,也就是zl0(上標0代表第0個位置), 當作整體圖像的一個特征,去做最后的分類任務(wù)。

  • 分析
  • Inductive bias

就是說transformer沒有cnn那么多的先驗知識

  • Hybrid Architecture(混合模型)

transformer的全局建模比較強,但是需要很多數(shù)據(jù)訓練;而cnn比較data efficient,不需要很多的訓練數(shù)據(jù),所以提出一個Hybrid Architecture混合的網(wǎng)絡(luò)(比如前面是cnn,后面是transformer,先使用resnet將特征圖縮放到14*14,拉直就是196個元素,后續(xù)操作一樣,也就是對圖片的預處理方式不同)

  • 更大resolution情況下的fine-tune

針對vision transformer預訓練模型,在輸入比預訓練更高resolution的圖像時進行微調(diào)會比較好。比如,輸入更高的resolution圖像,保持patch_size和預訓練時相同,則patch的數(shù)量會變多。雖然vit可以處理任意長度序列,但是預訓練的positional embedding可能會沒有用。

所以可以進行fine-tune,比如預訓練時位置信息是1~9,而實際輸入圖像是1~25,則可以使用2d插值(interpolation)。但如果序列變得很長,直接這樣插值會導致最后結(jié)果掉點。所以這里的插值其實是臨時的一個解決方案。

  • 數(shù)據(jù)集以及模型的變體

patch size和序列長度是成反比的

  • 實驗結(jié)果

下圖中的表是模型已經(jīng)在大規(guī)模數(shù)據(jù)集上做了預訓練了,然后再在表中的數(shù)據(jù)集上進行fine-tune得到的表現(xiàn)。

總結(jié):vitii效果更好,但是好的不是很明顯;vit需要訓練的天數(shù)更短,相對來說很短很短

Figure 3中,灰色BiT代表各種大小的resnet(比如resnet50、resnet152):在中小型數(shù)據(jù)集上,vit效果遠不如resnet,因為vit沒有使用像cnn那種先驗知識(歸納偏置,inductive bias);在ImageNet-21k數(shù)據(jù)集上,resnet和vit效果差不多;當使用特別大數(shù)據(jù)集時,vit效果要好于resnet。

總結(jié):大數(shù)據(jù)集時使用vit效果更好,小數(shù)據(jù)集使用cnn效果更高


Figure 4中


ViT論文逐段精讀【論文精讀】的評論 (共 條)

分享到微博請遵守國家法律
海门市| 大悟县| 黑水县| 洛阳市| 株洲市| 永丰县| 会同县| 册亨县| 内黄县| 吉林省| 宕昌县| 富川| 台东市| 灵丘县| 同江市| 灯塔市| 裕民县| 阜新| 明星| 宣恩县| 白银市| 新竹县| 嘉善县| 横山县| 上思县| 远安县| 衡山县| 郓城县| 保康县| 南充市| 洱源县| 灵丘县| 山丹县| 中宁县| 寿宁县| 哈尔滨市| 库车县| 青岛市| 新乐市| 南投县| 嘉禾县|