搜尋意圖: 如果你在找「視覺變換器 是什麼」或「視覺變換器 和相近概念差在哪」,先看這頁的短定義、完整說明與延伸比較。
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 的思路嗎?
Q2(判斷題): 資料很少時,ViT 一定比較好嗎?
常見問題
ViT 為什麼要切圖塊?
因為它要把影像轉成類似 token 序列的形式。
它一定比 CNN 強嗎?
不一定,資料量和任務型態會影響結果。
位置編碼重要嗎?
很重要,不然模型不知道每個圖塊原來的位置。