模型層 開放閱讀

ViT

Vision Transformer

概念 ID
vision-transformer
更新時間
2026-05-29
來源數量
待補

ViT

3 秒看懂

一句話: ViT 把一張圖片切成固定大小的小塊(patch),每個小塊當作一個”token”,直接餵給標準 Transformer 編碼器做視覺理解——不靠卷積,純靠注意力。

類比: 就像把一本書的每一頁撕成等大格子,每個格子是一個詞,然後用 NLP 那套方法去”讀圖”。

3 分鐘產業解釋

為什麼 ViT 重要?

在 ViT(2020)之前,計算機視覺的”主幹”幾乎被 CNN(卷積神經網路)壟斷了十年:AlexNet → VGG → ResNet → EfficientNet。ViT 證明了一件事情——拋棄歸納偏置(inductive bias),純靠海量資料 + 自注意力機制,Transformer 同樣能在視覺任務上做到 SOTA,甚至更優

這對產業意味著三件事:

  1. 架構統一化: NLP 和 CV 可以共享同一套 Transformer backbone,降低工程複雜度,為多模態大型模型(GPT-4V、Gemini 等)鋪路。
  2. 規模化定律(Scaling Law): ViT 的效能與模型規模、資料規模、計算量之間呈現可預測的冪律關係(類比 LLM 的 Chinchilla 定律),這使得算力投資可量化。
  3. 生態遷移: 預訓練-微調範式從 NLP 遷移到 CV,視覺基礎模型(Foundation Model for Vision)賽道由此開啟,催生了 DINO、MAE、SAM 等一系列里程碑工作。

關鍵數字(速覽)

維度資料
提出時間2020 年(Dosovitskiy et al.,ICLR 2021 正式發表)
提出機構Google Brain(核心作者 Dosovitskiy、Beyer、Kolesnikov 等)
基本思想影像 patch → 線性嵌入 → 位置編碼 → 標準 Transformer Encoder
典型 patch size16×16 或 14×14 畫素
引數量(ViT-B/16)~86M [原始論文]
引數量(ViT-L/16)~307M [原始論文]
引數量(ViT-H/14)~632M [原始論文]
原始預訓練資料JFT-300M(~3 億張圖片)[Google 內部資料集]

15 分鐘專家深入

核心創新:Patch Embedding + 純 Transformer Encoder

CNN 通過卷積核的區域性感受野逐層擴大來獲取全域性資訊,這個過程天然帶有平移等變性區域性性兩種歸納偏置。ViT 的核心論點是:當資料量足夠大時,這些歸納偏置反而是限制——模型自己從資料中學到的模式比人類預設的更優。

前向傳播全鏈路

輸入影像 (H × W × C)


Patch 分割 → (N 個 patch, 每個 P × P × C)
    │  N = (H/P) × (W/P)
    │  例如 224×224 影像、P=16 → N = 196 個 patch

線性投影嵌入 → (N × D)  [D = 隱藏維度]


拼接 [CLS] token → ((N+1) × D)
    │  [CLS] 是可學習的向量,用於全域性表徵

加上位置編碼 → ((N+1) × D)  [可學習的 1D 位置嵌入]


L 層 Transformer Encoder Block
    │  每層包含:
    │  ┌─ LayerNorm → Multi-Head Self-Attention → 殘差連線
    │  └─ LayerNorm → MLP (2 層 FFN, GELU 啟用) → 殘差連線


取 [CLS] token 的輸出 → 線性分類頭 → 預測

關鍵技術細節

1) Patch Embedding 的本質

將一個 P×P×C 的 patch 展平為長度為 P²C 的向量,再乘以一個可訓練的投影矩陣 E ∈ ℝ^{(P²C)×D}。這等價於一個 kernel size = P、stride = P、無重疊的卷積——這是 ViT 中唯一”卷積”的地方(實現層面)。

2) 位置編碼

原始 ViT 使用 可學習的 1D 位置嵌入(而非 2D 結構化位置編碼)。實驗表明,模型自己學到了隱式的 2D 空間結構——注意力圖視覺化中可以看到行/列方向的注意力模式 [原始論文 Figure 7]。

3) [CLS] Token vs Global Average Pooling

原始 ViT 用 [CLS] token 做分類。後續工作(如MAE)發現用 全域性平均池化(GAP) 替代 [CLS] token 效果相當甚至更優。

4) 注意力複雜度

Self-attention 的計算和記憶體複雜度為 O(N²D),其中 N = patch 數量。對於 224×224 / P=16,N=196,複雜度可控。但當解析度提升到 1024×1024 且 P=16 時,N=4096,計算量急劇膨脹——這是後續 Swin Transformer 等工作的改進動因。

5) 訓練穩定性

原始 ViT 訓練需要非常精細的學習率策略(linear warmup + cosine decay)和較大的 batch size(4096),否則容易發散。這是因為 Transformer 缺少 CNN 的 BatchNorm 歸一化慣性和區域性性約束。


技術原理

架構全景(ASCII)

┌─────────────────────────────────────────────────────┐
│                   Vision Transformer                  │
│                                                       │
│  Image (224×224×3)                                    │
│       │                                               │
│       ▼                                               │
│  ┌──────────────┐                                     │
│  │ Patch Embed   │  Conv2d(3, D, kernel=P, stride=P)  │
│  └──────┬───────┘  → (N=196, D=768) for ViT-B/16    │
│         │                                             │
│         ▼                                             │
│  ┌──────────────┐                                     │
│  │ Prepend [CLS] │  → (197, D=768)                    │
│  │ + Pos Embed   │  可學習引數 ∈ ℝ^{197×768}          │
│  └──────┬───────┘                                     │
│         │                                             │
│  ┌──────▼────────────────────────────────────────┐    │
│  │          Transformer Encoder × L              │    │
│  │                                                │    │
│  │  ┌──────────────────────────────────────────┐  │    │
│  │  │  LN → Multi-Head Self-Attention → + res  │  │    │
│  │  │  LN → MLP(GELU) → + res                 │  │    │
│  │  └──────────────────────────────────────────┘  │    │
│  │  × L 層 (B=12, L=24, H=32)                    │    │
│  └──────┬─────────────────────────────────────────┘    │
│         │                                             │
│         ▼                                             │
│  ┌──────────────┐                                     │
│  │ [CLS] 輸出    │                                     │
│  │ → Linear Head │ → 類別 logits                      │
│  └──────────────┘                                     │
└─────────────────────────────────────────────────────┘

規格表:原始 ViT 變體

變體層數 L隱藏維度 D注意力頭數MLP 隱層引數量Patch
ViT-B/1612768123072~86M16×16
ViT-L/16241024164096~307M16×16
ViT-H/14321280165120~632M14×14
ViT-L/16 @384241024164096~307M16×16

[來源:Dosovitskiy et al., “An Image is Worth 16x16 Words”, ICLR 2021]

Self-Attention 核心公式

Attention(Q, K, V) = softmax(QK^T / √d_k) · V

其中:
  Q = XW_Q, K = XW_K, V = XW_V
  W_Q, W_K, W_V ∈ ℝ^{D × d_k}
  d_k = D / h  (h = 注意力頭數)

Multi-Head Self-Attention (MHSA):

MultiHead(X) = Concat(head_1, ..., head_h) · W_O

其中 head_i = Attention(XW_Qi, XW_Ki, XW_Vi)
W_O ∈ ℝ^{D × D}

MLP Block:

MLP(x) = Linear(GELU(Linear(x)))
  第一層: D → 4D (ViT 中 MLP 隱層 = 4D)
  第二層: 4D → D

計算量估算

以 ViT-B/16 處理單張 224×224 影像為例 [估算]:

元件FLOPs 近似
Patch Embedding~0.14G
單層 MHSA~0.52G(N=197, D=768)
單層 MLP~0.93G(D→3072→D)
12 層合計~17.6G
分類頭可忽略

對比:ResNet-50 約 4G FLOPs;ViT-B/16 的單次推論計算量約為 ResNet-50 的 ~4.4 倍 [粗略估算]。


技術演進史

時間線
═══════════════════════════════════════════════════════════

2012  AlexNet        ← CNN 稱霸視覺

2015  ResNet         ← 殘差連線,深度 CNN 標杆

2017  Transformer    ← Vaswani et al., NLP 革命
  │                    "Attention Is All You Need"

2019  ┌─ iGPT (Chen et al.)  ← 最早將 GPT 引入影像(自迴歸)
  │   └─ Set Transformer      ← 集合上的注意力

2020  ★ ViT ★        ← Dosovitskiy et al. (Google Brain)
  │                    首次證明:純 Transformer + 足夠資料
  │                    → 在 ImageNet 上超越 CNN SOTA

2021 ─┬─ DeiT (Touvron et al.)  ← 僅用 ImageNet-1K 訓練 ViT
  │   │                           引入知識蒸餾 token
  │   ├─ Swin Transformer (Liu et al.) ← 視窗注意力,層級結構
  │   ├─ BEiT (Bao et al.)  ← 視覺 BERT,掩碼影像建模預訓練
  │   ├─ MLP-Mixer (Tolstikhin et al.) ← 用 MLP 替代注意力
  │   └─ PVT (Wang et al.)  ← 金字塔 ViT

2022 ─┬─ MAE (He et al.)  ← 掩碼自編碼器,75% 掩位元速率
  │   │                     ImageNet-1K 上達到 87.8% top-1
  │   ├─ EVA / EVA-02  ← 規模化視覺預訓練
  │   └─ SigLIP (Zhai et al.) ← ViT + CLIP 改進

2023 ─┬─ SAM (Kirillov et al.)  ← ViT-H 作為影像編碼器
  │   ├─ InternImage           ← 大規模視覺基礎模型
  │   └─ ViT-22B (Dehghani et al.) ← Google 最大 ViT

2024 ─┬─ DINOv2 大規模部署
  │   └─ ViT 成為多模態 LLM 的標準視覺編碼器
  │       (GPT-4V, LLaVA, InternVL 等)
═══════════════════════════════════════════════════════════

關鍵轉折點

  • DeiT (2021): 證明 ViT 不一定需要 JFT-300M 那樣的海量資料。通過資料增強(RandAugment、Mixup、CutMix)+ 知識蒸餾 + 更強的正則化(Stochastic Depth),在 ImageNet-1K(~1.28M 張圖)上也能訓練出有競爭力的 ViT。
  • Swin Transformer (2021): 引入層級結構和移位視窗注意力,將複雜度從 O(N²) 降到 O(N),在密集預測(檢測、分割)任務上全面超越原始 ViT。
  • MAE (2022): 隨機掩碼 75% 的 patch,用 ViT 編碼器-解碼器重建畫素,實現了高效的自監督預訓練。

技術路線對比

ViT vs CNN vs 混合方案

維度原始 ViTCNN (ResNet)Swin TransformerMAE (ViT)
歸納偏置幾乎無(僅 patch 劃分含區域性性)平移等變性 + 區域性性視窗區域性性 + 層級結構同 ViT
注意力範圍全域性(每層每個 token 看所有 token)區域性(卷積核大小)視窗內全域性 + 跨視窗(移位)全域性
序列長度N = (H/P)×(W/P),固定隨層逐級縮小分階段縮小(類似 CNN)同 ViT
複雜度O(N²D)O(K²·C²·H·W)O(N·w²·D),w = 視窗大小O(N²D),但僅處理未掩碼 token
小資料表現弱(需大數據或強正則)較強中等(預訓練後微調強)
密集預測適配需額外設計(如 ViTDet)天然金字塔天然金字塔需額外設計
預訓練效率非常高(75% 掩碼)
典型 ImageNet top-1~77-79%(B/16, IN-1K 直接訓練)~76-80%(R50-R152)~83-86%(Swin-B/L)~83-87%(MAE ViT-L/H)

注:具體準確率依賴訓練配置(資料增強、解析度、epoch 數等),此處為 [原始論文報告值 / 社群復現近似值],僅供參考量級。

自注意力 vs 卷積的核心區別

卷積(區域性、固定權重):
  ┌───┐
  │ K │  ← 固定大小核(如 3×3),權重不隨輸入變化
  └───┘  → 複雜度 O(K²·C·H·W),K 遠小於 H,W

自注意力(全域性、動態權重):
  每個 token 與所有 token 計算相似度
  → 權重由輸入內容動態決定
  → 複雜度 O(N²·D),N = token 數

上下游

上游(ViT 依賴什麼)

環節具體內容
算力硬體GPU/TPU 訓練叢集;ViT-B 通常用 8-64 塊 V100/A100 訓練數天 [估算]
訓練資料ImageNet-1K(~1.28M)、ImageNet-21K(~14M)、JFT-300M(~300M)等
架構PyTorch(主流)、JAX/Flax(Google 原始實現)、HuggingFace Transformers
正則化技術Stochastic Depth、Label Smoothing、Mixup、CutMix、RandAugment

下游(ViT 用在哪)

方向代表工作說明
影像分類ViT、DeiT、DINO直接替代 ResNet 做 backbone
目標檢測ViTDet、DINO-DETRViT 作為檢測器 backbone
語義分割SegFormer、SegmenterViT backbone + 解碼頭
自監督學習MAE、DINO、DINOv2預訓練範式,下游微調
多模態CLIP、SigLIP、LLaVA、GPT-4VViT 作為視覺編碼器,與文本對齊
影片理解ViViT、TimeSformer將 ViT 擴充套件到時空維度
影像生成DiT (Scalable Diffusion Transformer)ViT 作為擴散模型 backbone
3D 視覺Point Transformer點雲端上的 Transformer

關鍵指標

指標含義典型值/範圍
ImageNet top-1 準確率在 ImageNet 驗證集上的分類準確率ViT-B: 77-84%;ViT-L: 80-87%(取決於預訓練資料和策略)
Params模型引數量B=86M, L=307M, H=632M
FLOPs單次前向推論浮點運算次數B/16: ~17-80G(取決於解析度)
Throughput每秒處理圖片數(images/sec)取決於硬體和解析度;B/16 @224: 數百張/秒/A100 [估算]
Attention 層數 × 頭數注意力頭的總數B: 12層×12頭=144; L: 24層×16頭=384
Patch 數 N序列長度224/16→196; 384/16→576; 518/14→1369
Pre-training 資料量預訓練圖片數IN-1K: 1.28M; IN-21K: 14M; JFT-300M: 300M
Transfer 效能遷移到下游任務的準確率在 VTAB-19 等 benchmark 上評估

供需與市場資料

需求側

ViT 及其變體已從學術研究走向工業標配

  • 多模態大型模型: GPT-4V、Gemini、Claude 3.5 等多模態 LLM 的視覺編碼器,主流採用 ViT 架構(或 ViT 變體如 SigLIP ViT、InternViT)。每個多模態 API 呼叫背後都是 ViT 的推論。
  • 自動駕駛: BEV(鳥瞰圖)感知管線中,ViT backbone 逐漸替代 CNN。
  • 醫療影像: ViT 在病理切片、CT/MRI 分析中表現優異。
  • 工業質檢: 基於預訓練 ViT 的少樣本/零樣本檢測。

供給側

維度現狀
推論晶片NVIDIA GPU(A100/H100)、Google TPU、高通/聯發科端側 NPU
模型規模從 ViT-Ti(~5M)到 ViT-22B(220億引數)[Dehghani et al., 2023]
部署雲端端推論(主力)、邊緣推論(ViT-Ti/S 量化後可上手機端)
開源生態HuggingFace timm 庫提供 1000+ ViT 預訓練權重;MAE/DINOv2 權重廣泛使用

市場規模(估算)

嚴格來說,“ViT”不是一個獨立市場品類,而是嵌入在 AI 晶片 + 視覺 AI 軟體 + 多模態應用中的核心技術元件。根據 [第三方行業報告估算],計算機視覺 AI 市場 2024 年規模約 $20-30B,其中 Transformer-based 視覺模型滲透率快速提升但仍與 CNN 共存。


代表公司與資本對映

公司/機構角色關鍵產品/工作
Google / DeepMind原始發明者ViT、MAE (Kaiming He 在 FAIR 但與 Google 緊密關聯)、ViT-22B、SigLIP
Meta / FAIR重要貢獻者DINO、DINOv2、MAE、Segment Anything (SAM)
Microsoft應用落地Florence (ViT-based CLIP 改進)、Swin Transformer (MSRA)
OpenAI多模態應用CLIP (ViT 作為視覺編碼器之一)、GPT-4V 的視覺前端
Hugging Face生態基礎設施transformers 庫、timm 庫,ViT 模型分發平台
NVIDIA硬體+架構Triton 推論最佳化中的 ViT 最佳化、TensorRT-LLM 對多模態模型支援
中國科技公司追趕與創新阿里 EVA 系列、商湯 InternImage、智譜 CogVLM(ViT 編碼器)

資本對映

  • 直接受益: AI 晶片廠商(NVIDIA、AMD、Google TPU 業務)——ViT 的計算密集特性驅動高階 GPU 需求。
  • 間接受益: 多模態 AI 應用公司(OpenAI、Anthropic、字節跳動等)——ViT 是多模態能力的基礎設施。
  • 資料標註/資料服務: ViT 預訓練依賴大規模標註/未標註資料。

投資邏輯

核心判斷

  1. ViT 已成為視覺 AI 的”公地基”。 不是可選項,而是必選項。任何做視覺 AI 的公司都離不開 ViT 或其變體。
  2. 計算需求持續增長。 從 ViT-B(86M)到 ViT-22B,引數量增長 250 倍。多模態大型模型中,視覺編碼器的推論頻次與文本 LLM 掛鉤,且每次對話都需處理影像輸入。
  3. 端側部署是增量市場。 ViT-Ti/S + INT8 量化在手機/車載晶片上的部署正在加速,推動端側 AI 晶片升級。
  4. 多模態大型模型 = ViT 的殺手級應用。 GPT-4V、Gemini 等產品的爆發,直接帶動 ViT 推論算力需求。

風險

  • 架構替代風險: Mamba(狀態空間模型)等新架構可能在長序列場景下挑戰 ViT。
  • 同質化競爭: ViT 架構開源且成熟,差異化壁壘在於資料和工程最佳化,而非架構本身。
  • 推論成本: ViT 在端側的計算量仍顯著高於 MobileNet 等輕量 CNN,可能限制某些場景的滲透。

常見誤讀糾偏

❌ 誤讀 1:“ViT 不需要大數據就能訓練好”

事實: 原始 ViT 論文明確指出,當僅用 ImageNet-1K(128 萬張)訓練時,ViT 不如同等規模的 ResNet。ViT 的效能優勢是在 JFT-300M(3 億張)預訓練後才體現的 [原始論文 Table 2]。DeiT 後續證明通過極強的資料增強和知識蒸餾可以在 IN-1K 上訓練好 ViT,但這恰恰說明 ViT 對資料增強策略高度敏感——缺乏 CNN 的歸納偏置是一把雙刃劍。

❌ 誤讀 2:“ViT 的自注意力是全域性的,所以一定比 CNN 好”

事實: 全域性注意力 ≠ 一定更優。在資料量有限的情況下,CNN 的區域性性先驗反而是優勢。此外,全域性注意力的 O(N²) 複雜度在高解析度場景下是嚴重的效率瓶頸。Swin Transformer 之所以在檢測/分割任務上大幅領先原始 ViT,正是因為引入了區域性視窗注意力——本質上是把 CNN 的區域性性偏置重新引入了 Transformer。

❌ 誤讀 3:“ViT 就是把 CNN 替換掉”

事實: 更準確的表述是:ViT 證明了注意力機制可以獨立完成視覺表徵學習,但這不意味著 CNN 已被淘汰。實際上:

  • ConvNeXt(2022)證明將 CNN 現代化後效能與 Swin 相當。
  • 工業部署中,CNN 在效率敏感場景(手機端即時檢測等)仍廣泛使用。
  • 最新趨勢是 CNN + Transformer 混合架構(如 ConvNeXt V2 + MAE)。

❌ 誤讀 4:“ViT 的 [CLS] token 是必須的”

事實: [CLS] token 來自 BERT 的設計慣性。後續實驗表明,使用 全域性平均池化(GAP)自適應池化 取代 [CLS] token,分類效果基本持平甚至更優 [Touvron et al., 2021; He et al., 2022 MAE]。在 DINOv2 等先進自監督方法中,[CLS] token 和 patch token 都被利用。


學習路徑

入門(2-4 周)

  1. 前置知識: 基礎線性代數(矩陣乘法、softmax)、基礎深度學習(CNN、反向傳播)、PyTorch 基礎。
  2. 論文: 讀 Dosovitskiy et al. (2020) 原文,重點理解 Section 3(Method)和 Figure 1(架構圖)。
  3. 程式碼實戰:timm 庫載入預訓練 ViT-B/16,在自己的影像分類資料集上微調。
  4. 視覺化: 用注意力視覺化工具觀察 ViT 的注意力圖,理解它”看”圖的方式。

進階(1-2 月)

  1. 對比實驗: 對比 ViT vs ResNet-50 在小資料集(如 CIFAR-10)和大數據集上的表現差異。
  2. 關鍵論文:
    • DeiT [Touvron et al., 2021] — 資料高效訓練
    • Swin Transformer [Liu et al., 2021] — 層級結構
    • MAE [He et al., 2022] — 自監督預訓練
  3. 程式碼實踐: 從零實現一個 ViT-Small,包括 patch embedding、position encoding、MHSA。

專家(3-6 月)

  1. 深度論文:
    • DINO/DINOv2 — 自監督視覺表徵
    • Scaling Vision Transformers [Zhai et al., 2022] — ViT 的 scaling law
    • An Image is Worth 16x16 Words: What about 4x4? — Patch size 的影響
  2. 工程實踐: 用 TensorRT/ONNX 部署 ViT 到邊緣裝置;研究 ViT 的 INT8 量化。
  3. 前沿追蹤: 關注多模態 LLM 中 ViT 的角色(SigLIP、InternViT、EVA)。

一句話總結

ViT 證明了”一張圖就是一串 token”——拋棄卷積的歸納偏置,用純自注意力 + 海量資料,讓 Transformer 在視覺領域實現了與 NLP 同等的架構統一和規模化擴充套件,成為多模態 AI 時代不可或缺的視覺基座。


延伸閱讀與來源

核心論文

  1. Dosovitskiy, A., et al. (2020). “An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale.” ICLR 2021. [arXiv:2010.11929]
  2. Touvron, H., et al. (2021). *“Training Data-Efficient Image Transformers & Distilla
source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型