# Vision Transformer:AN IMAGE IS WORTH 16X16 WORDS : TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE Alexey Dosovitskiy、Lucas Beyer、Alexander Kolesnikov、Dirk Weissenborn、Xiaohua Zhai、Thomas Unterthiner、Mostafa Dehghani、Matthias Minderer、Georg Heigold、Sylvain Gelly、Jakob Uszkoreit、Neil Houlsby(Google Research, Brain Team), (ICLR 2021) https://arxiv.org/abs/2010.11929 ## 1. 摘要 Vision Transformer(ViT)將影像切成固定大小的 patch,把影像視作序列 token 處理,餵入標準 Transformer encoder。論文證明在大規模資料(例如 ImageNet-21k、JFT-300M)進行監督式預訓練,再遷移到中小型視覺資料集時,ViT能達到或超越SOTA CNN,同時預訓練計算成本更低。 ## 2. 研究目的 * 檢驗純 Transformer 結構在影像分類任務上的可行性,盡量不引入 CNN 的歸納偏置 * 比較 ViT 在不同資料規模(ImageNet、ImageNet-21k、JFT-300M)下的效果與可遷移性。 * 析效能、計算量權衡,含ViT、ResNet(BiT)與 Hybrid(CNN特徵 + ViT)之比較。 ## 3. 研究方法 ### 3.1. ViT 模型設計  >圖1. 模型概述。我們將影像切分為固定大小的圖塊(patch),對每個圖塊進行線性嵌入(linear embedding),再加入位置嵌入(position embeddings),把得到的向量序列輸入至標準的 Transformer 編碼器。為了進行分類,我們採用標準做法:在序列中加入一個可學習的「分類標記」(classification token)。Transformer 編碼器的示意圖靈感來自 Vaswani 等人(2017)。 Vision Transformer(ViT)將影像切成固定大小的 patch,把影像視作序列 token 處理,餵入標準 Transformer encoder(前層 LayerNorm、殘差連接、MSA + MLP with GELU)。 ViT 將影像 $x\in \mathbb{R}^{H\times W\times C}$ 切成 $P\times P$ 之 patch 並展平,序列長度為 $N=HW/P^2$,線性投影至維度 $D$ 的 patch embedding,加上 learnable 1D position embedding,並在序列前加上 [class] token。分類時取最終層 [class] 的表示 $z_L^0$ 接分類頭(預訓練用MLP,微調用線性層)。 ViT 刻意降低圖像特定歸納偏置,除 patch 切割與微調時的 positional interpolation 外,幾乎不引入其他 2D 結構性先驗 * 核心公式: $z^0=[x_\text{class};x_p^1E;\dots;x_p^NE]+E_\text{pos}$ $z'\ell=\mathrm{MSA}(\mathrm{LN}(z{\ell-1}))+z_{\ell-1}$$z_\ell=\mathrm{MLP}(\mathrm{LN}(z'\ell))+z'\ell$ $y=\mathrm{LN}(z_L^0)$ ($E\in \mathbb{R}^{(P^2C)\times D}$,$E_\text{pos}\in \mathbb{R}^{(N+1)\times D}$) * 參數說明: | 符號 / 名詞 | 意義 / 用途 | 形狀 / 數值範圍 | 備註 | | --------------------------------- | ------------------------- | ----------------------------------------- | ----------------------------------------------------- | | $x$ | 輸入影像張量 | $\mathbb{R}^{H\times W\times C}$ | 高×寬×通道數 | | $H,\,W,\,C$ | 影像高、寬、通道數 | 整數 | 例:224×224×3 | | $P$ | patch 邊長(像素) | 整數 | 每個 patch 為 $P\times P$;常見 $P=16,32$ | | $N$ | patch 數量 / 序列長度(不含 class) | $N=\frac{HW}{P^2}$ | 需整除;總序列長度含 class 為 $N+1$ | | $D$ | token/模型寬度(embedding 維度) | 整數 | 例:ViT-B $D{=}768$、ViT-L $D{=}1024$ | | $[{\rm class}]$ 或 $x_{\rm class}$ | 可學的分類 token | $\mathbb{R}^{D}$ | 置於序列最前,用於彙總整張圖語義 | | $z^0$ | 加上位置嵌入後的初始序列 | $\mathbb{R}^{(N+1)\times D}$ | $[x_{\rm class}; x_p^1E;\dots; x_p^NE] + E_{\rm pos}$ | | $L$ | 編碼器層數 | 整數 | 例:ViT-B $L{=}12$、ViT-L $L{=}24$ | | $W_Q,W_K,W_V,W_O$ | 注意力的投影矩陣 | $\mathbb{R}^{D\times D}$(分頭後再拼接) | 生成 Q/K/VMats 與輸出投影 ### 3.2. 模型規格與變體  >圖2. Vision Transformer 模型變體的詳細資訊。 * ViT-B/L/H: 以 BERT(Devlin 等人,2019)的設定作為 ViT 的配置基礎。「Base」與「Large」模型直接沿用自 BERT,並另外加入更大的「Huge」模型。例如:ViT-L/16 表示「Large」變體,輸入以 16×16 的圖塊切分。 * Hybrid: 把 CNN 中間層的特徵圖輸入 ViT,以 $1\times 1$ 或 patch 取樣作為 Transformer 輸入序列。 ### 3.3. 預訓練與微調 ViT 採用 Few-shot 線性探測全參數微調雙軌評估。 * 資料集: ImageNet(1.3M)、ImageNet-21k(14M/21k類)、JFT-300M(303M/18k類)。 * 最佳化: 預訓練多用Adam+高weight decay;微調用SGD+momentum。 * Resolution技巧: 預訓練低解析(如224),微調高解析(如384/512),並對positional embedding做2D插值。 ## 4. 實驗結果 #### > 不同規模預訓練與SOTA比較(代表性數字)  >圖3. 與主流影像分類基準的最新方法比較。我們回報三次微調(fine-tuning)重複實驗的準確率之平均值與標準差。於 JFT-300M 數據集上預訓練的 Vision Transformer 模型,在所有資料集上皆優於以 ResNet 為基線的模型,同時預訓練所需的計算資源明顯更少;在較小且公開的 ImageNet-21k 數據集上預訓練的 ViT 也有良好表現。*Touvron 等人(2020)報告了略微提升的 88.5% 成績。 在大資料預訓練後,ViT 在多項 benchmark 上超越或匹敵 SOTA CNN,且預訓練計算量更省。 * ViT-H/14(JFT-300M預訓練): ImageNet Top-1 88.55%、ReaL 90.72%、CIFAR-100 94.55%、VTAB(19 tasks)77.63%。 * ViT-L/16(ImageNet-21k預訓練): ImageNet 85.30% 等,資源更少仍具競爭力。 ViT-L/16(0.68k TPUv3-core-days)、ViT-H/14(2.5k)的計算成本顯著低於對比 SOTA(如 BiT-L 9.9k、Noisy Student 12.3k)。 #### > VTAB 分組表現  > 圖4. VTAB 表現在三類任務組(Natural 自然、Specialized 專門、Structured 結構化)的拆解。 Natural 與 Structured 任務上,ViT-H/14 優於 ResNet(BiT)等方法。Specialized 與 SOTA 接近。顯示 ViT 具備良好低樣本遷移能力。 #### > 過擬合與資料量需求  > 圖5. (左):遷移至 ImageNet。當在小型資料集上進行預訓練時,大型 ViT 模型的表現不如 BiT ResNet(圖中陰影區域);然而,在較大型資料集上預訓練時,ViT 模型的優勢便展現出來。同樣地,隨著資料集規模的增加,較大的 ViT 變體也會超越較小的變體。(右):在 ImageNet 上進行線性少樣本(few-shot)評估與預訓練規模的比較。當預訓練資料集較小時,ResNet 的表現更佳,但提升幅度較快達到瓶頸;相較之下,ViT 在更大規模的預訓練資料集下展現更佳表現。ViT-b 指的是將 ViT-B 的所有隱藏層維度縮減為一半的版本。 小資料(如9M subset)下,ViT 較 ResNet 更易過擬合。資料增大(30M、90M、300M)後,ViT 的 few-shot 與遷移表現持續攀升並反超ResNet。顯示「大規模資料取代強歸納偏置」的可行性。 #### >效能 vs. 計算量  > 圖6. 不同架構在「效能與預訓練計算量」上的比較,包括 Vision Transformers、ResNet,以及混合式模型。Vision Transformers 在相同的計算資源下通常優於 ResNet。混合式模型在小型模型的情況下可改善純 Transformer 的效能,但在大型模型中這種差距會消失。 在相近或更低的預訓練計算量下,ViT 整體優於 ResNet。Hybrid 在小算力區間略優,但隨模型放大與算力增加,差距消失。 #### > 模型內部觀察  >圖7. 從輸出標記到輸入空間的注意力代表性範例。 * Positional embedding: Positional embedding 自發學到2D結構(行/列相似性)。 * 注意力距離: 低層已有局部與全域head並存,深層平均距離增大。注意力熱區對準語義相關區域。 #### > 自監督初探  >圖8. (左):ViT-L/32 的初始線性嵌入(linear embedding)對 RGB 值的濾波器。(中):ViT-L/32 的位置嵌入相似度。方格顯示的是指定列與行的圖塊之位置嵌入,與所有其他圖塊位置嵌入之間的餘弦相似度。(右):隨著網路深度與注意力頭的不同,被關注區域的大小。每個點代表在某一層的 16 個注意力頭之一,針對多張影像計算的平均注意力距離。 Masked Patch Prediction 可使 ViT-B/16 在 ImageNet 從 ~77.9% → 79.9%,但仍落後大型監督式預訓練數個百分點。對比學習等方法留待未來。 ## 5. 結論 * 純 Transformer 可直接用於影像分類,只需最小修改(patch 序列化 + positional embedding + class token)。 * 關鍵在於大規模預訓練。當資料充足時,ViT 能超越 ResNet 等 CNN 家族,且在效能、計算量上更具優勢。 * 遷移學習與低樣本學習表現亮眼。 * 未來可拓展至偵測、分割等任務、強化自監督預訓練、持續模型規模擴展。現已有許多 CNN 框架納入類似 Transformer 的機制。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up