視覺變換器(Vision Transformer)是什麼?

Vision Transformer (ViT) 是一種將 Transformer 架構應用於圖像識別的深度學習模型,它將圖像分割成小塊,並將其視為序列進行處理。|本頁含完整原理、應用場景、iPAS 考試重點與 3 個常見問答。

英文
Vision Transformer
主題標籤
深度學習、電腦視覺、神經網路
考點定位
非 iPAS 核心術語
最後更新
2026/07/29
視覺變換器(Vision Transformer)是什麼? 深度學習電腦視覺
術語快查

搜尋意圖: 如果你在找「視覺變換器 是什麼」或「視覺變換器 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。

TL;DR: Vision Transformer (ViT) 是一種將 Transformer 架構應用於圖像識別的深度學習模型,它將圖像分割成小塊,並將其視為序列進行處理。

實用情境: 適合用在閱讀 AI 文章、產品文件或和同事討論時,先用一頁快速對齊概念。

下一步: 先讀完定義,再往下看延伸比較與對應工具,把概念轉成實際應用。

你有沒有想過,圖片不一定要先用卷積掃,也能像句子一樣被拆成一塊一塊來看? 你可以把視覺變換器想成「把圖片切成小塊,再交給 Transformer 處理」 每個圖塊都像一個 token,模型再用注意力看它們彼此的關係 這種做法讓影像也能直接借用 Transformer 的優勢

容易混淆

視覺變換器 vs 卷積神經網路 ViT 把圖片當成序列看 CNN 會從局部卷積開始掃 最關鍵的區別:序列化處理和局部卷積

視覺變換器 vs 轉換器架構 ViT 是轉換器的影像版本 轉換器是更一般的架構家族 最關鍵的區別:應用場景不同

視覺變換器 vs 圖像分類 ViT 是模型架構 圖像分類是任務 最關鍵的區別:工具和工作

記住這句就好

把圖片切成塊,再讓注意力把整張圖連起來。

實際案例

大規模分類 在大量圖片資料上,ViT 常能學到很強的全局關係,特別是資料夠多時

醫療影像 把高解析度切成圖塊後做分類或輔助判讀,能利用全局與局部資訊

算法與應用

| 切塊 | 把圖片分成固定小區塊 | 像把句子切成 token | | 位置編碼 | 告訴模型圖塊原本在哪 | 避免順序丟失 | | 自注意力 | 讓圖塊彼此互看 | 抓全局關係 | | 資料需求 | 通常需要較多資料 | 不然容易學不穩 |

中英對照與常見說法

說法 出現場合
視覺變換器、視覺轉換器 中文譯名,兩種都有人用
视觉 Transformer 簡體資料多半保留英文原字
Vision Transformer 英文原名
ViT 標準縮寫

它把影像當成什麼

ViT 的核心想法是把影像切成小方塊,當成一串「單字」餵給 Transformer

第一步,把影像切成固定大小的區塊(patch),常見是 16×16 像素。一張 224×224 的圖會切成 14×14 = 196 個區塊。

第二步,每個區塊攤平後過一個線性層,轉成一個向量,這就是 patch embedding。

第三步,加上位置編碼。Transformer 本身對順序沒有概念,不加位置編碼的話打亂區塊順序結果會一樣。

第四步,在最前面接一個特殊的 [CLS] token,串起來送進標準的 Transformer 編碼器。

第五步,取 [CLS] 位置的輸出接分類頭。

論文標題那句「An Image is Worth 16x16 Words」講的就是第一步。

跟 CNN 的取捨

CNN ViT
內建假設 局部性與平移不變性 幾乎沒有,全靠資料學
小資料集 表現穩定 容易過擬合,通常輸給 CNN
大資料集預訓練 提升有限 提升明顯,這是它翻身的關鍵
感受野 逐層擴大 第一層就是全域
計算複雜度 隨影像大小線性 自注意力隨區塊數平方成長

歸納偏置(inductive bias) 是理解兩者差異的關鍵詞。CNN 天生假設「相鄰像素相關」與「物件移動了還是同一個物件」,這些假設在資料少的時候是幫助。ViT 沒有這些假設,資料少時學不到,資料多時反而不受假設限制,能學到 CNN 學不到的長距離關係。

這也是為什麼 ViT 原始論文強調要在超大資料集上預訓練才會贏。後續的 DeiT 用蒸餾與強資料增強,讓 ViT 在一般規模資料集上也能訓練起來;Swin Transformer 則引入層級式結構與滑動視窗注意力,把複雜度降回線性,同時把局部性的假設加回來,成為偵測與分割任務的常用骨幹。

情境判斷

Q1(直覺題): 你想把圖片當序列來處理,這就是 ViT 的思路嗎?

對,這正是它和 CNN 最直觀的差別。

Q2(判斷題): 資料很少時,ViT 一定比較好嗎?

不一定,資料少時 CNN 常反而更穩。

常見問題

ViT 為什麼要切圖塊?

因為它要把影像轉成類似 token 序列的形式。

它一定比 CNN 強嗎?

不一定,資料量和任務型態會影響結果。

位置編碼重要嗎?

很重要,不然模型不知道每個圖塊原來的位置。