模型層 開放閱讀

Patch Embedding

Patch Embedding

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

Patch Embedding

3秒看懂

一句話:Patch Embedding是將2D影像切成小方塊、展平成向量序列的過程——它是CNN視覺模型向Transformer架構遷移的”橋樑”。

一個類比:把一幅畫剪成拼圖碎片,每塊碎片按順序編號貼上標籤,然後送入一個”文字閱讀器”(Transformer)來理解整幅畫。

┌─────────────────────┐
│   原始影像 (H×W×C)   │
└─────────┬───────────┘
          │ 切塊 + 展平 + 線性投影

┌─────────────────────┐
│ Token序列 [z₁,z₂,...,zₙ] │
└─────────┬───────────┘
          │ + 位置編碼

┌─────────────────────┐
│   Transformer編碼器   │
└─────────────────────┘

3分鐘產業解釋

為什麼重要?

在Vision Transformer(ViT)出現之前,計算機視覺(CV)主要依賴卷積神經網路(CNN)。CNN擅長捕捉區域性特徵(邊緣、紋理),但對全域性關係(物體間的空間位置、長距離依賴)處理效率較低。

Patch Embedding的出現,使得影像可以直接”翻譯”成Transformer能理解的序列格式,從而引入NLP領域成熟的自注意力機制到視覺任務。

產業影響

維度影響
模型統一視覺與語言共用Transformer骨架,為多模態大型模型(如GPT-4V、Gemini)奠基
訓練範式ViT預訓練+下游微調成為主流,降低CV任務的資料標註成本
硬體需求自注意力的O(n²)複雜度對算力需求高,推動GPU/TPU/AI加速卡市場
應用落地自動駕駛、醫療影像、工業檢測、衛星影像分析等領域受益

關鍵資料點

  • ViT-Base(約86M引數)在ImageNet上僅用公開資料訓練,精度已接近CNN-SOTA [Google Research, 2020]
  • 全球CV市場預計從2023年的百億美金級增長至2030年的數百億美金級 [行業報告估算,口徑不同]

15分鐘專家深入

核心機制拆解

Patch Embedding並非簡單的”切圖”,而是一個包含空間重組特徵對映的複合操作。

輸入假設

  • 影像尺寸:H × W × C(高 × 寬 × 通道數)
  • Patch大小:P × P畫素
  • 嵌入維度:D(通常是768、1024、1280等)

序列長度計算

N = \frac{H \times W}{P^2}

示例:224×224影像,Patch=16×16 → N=196個token

兩種實現方式

方式一:手動展平+線性層(原ViT論文)

# 虛擬碼
patches = image.unfold(2, P, P).unfold(3, P, P)  # 切塊
patches = patches.reshape(B, N, P*P*C)            # 展平
embeddings = linear_projection(patches)            # 線性投影: (P²C) → D

方式二:卷積等價實現(主流工程實踐)

# 等價於一個kernel_size=P, stride=P, out_channels=D的卷積
patch_embed = nn.Conv2d(C, D, kernel_size=P, stride=P)
embeddings = patch_embed(image)  # (B, D, H/P, W/P)
embeddings = embeddings.flatten(2).transpose(1, 2)  # (B, N, D)

重要說明:數學上,卷積實現與手動展平+線性投影完全等價,但卷積利用GPU的平行計算最佳化,工程效率更高。

位置編碼的必要性

Transformer的自注意力機制本身是置換不變的(permutation invariant),即打亂token順序不會影響輸出。對於影像,空間位置資訊至關重要,因此必須額外注入位置資訊。

常見方案

型別代表工作特點
可學習絕對位置ViT與patch embedding相加,引數量小
正弦位置編碼原始Transformer固定函式,可泛化到任意長度
相對位置編碼Swin Transformer注意力分數中加入相對距離偏置
旋轉位置編碼(RoPE)擴充套件到視覺的嘗試通過旋轉矩陣編碼位置

CLS Token

ViT在patch序列前拼接一個可學習的**[CLS]**標記,用於聚合全域性資訊並做分類。這直接沿用了BERT的設計。

輸入序列: [CLS] + patch_1 + patch_2 + ... + patch_N

    [CLS]的輸出 → 分類頭

與CNN的感受野對比

特性CNNViT
感受野增長逐層堆疊,區域性→全域性第一層即”全域性”(任意兩patch可直接互動)
歸納偏置強(平移不變性、區域性性)弱(需更多資料學習)
小資料表現較好較差(需大規模預訓練)

技術原理

數學形式化

輸入:影像 \mathbf{x} \in \mathbb{R}^{H \times W \times C}

Step 1:切塊與展平

將影像分割為 N = HW/P^2 個patch:

\mathbf{x}_p^i \in \mathbb{R}^{P^2 \cdot C}, \quad i = 1, 2, ..., N

Step 2:線性投影

通過可學習矩陣 \mathbf{E} \in \mathbb{R}^{(P^2C) \times D}

\mathbf{z}_0^i = \mathbf{x}_p^i \mathbf{E}

Step 3:拼接CLS與位置編碼

\mathbf{Z}_0 = [\mathbf{z}_{cls}; \mathbf{z}_0^1; \mathbf{z}_0^2; ...; \mathbf{z}_0^N] + \mathbf{E}_{pos}

其中 \mathbf{E}_{pos} \in \mathbb{R}^{(N+1) \times D}

維度流轉圖(ViT-Base, 224×224, Patch=16)

輸入: (B, 3, 224, 224)
    ↓ patch_embed (Conv2d: 3→768, k=16, s=16)
    ↓ reshape + transpose
(B, 196, 768)
    ↓ prepend CLS token
(B, 197, 768)
    ↓ + position embedding (197, 768)
(B, 197, 768)
    ↓ transformer encoder × 12層
(B, 197, 768)
    ↓ 取CLS位置輸出
(B, 768)
    ↓ classification head
(B, num_classes)

計算量分析(Patch Embedding階段)

以ViT-Base為例:

  • 引數量:P^2 \times C \times D = 16^2 \times 3 \times 768 = 589,824(約0.59M)
  • FLOPs:引數量 × N(序列長度)≈ 0.59M × 196 ≈ 116M

注:相比整個ViT-Base的約17.6G FLOPs,Patch Embedding佔比很小,瓶頸在自注意力層。

混合架構(Hybrid)

部分工作在patch embedding前加入淺層CNN,增強區域性特徵提取:

影像 → Conv層(small stride) → 特徵圖 → Patch Embedding → Transformer

代表性工作:[未充分檢索到具體論文,定性表述] 這類混合架構在小資料集上表現更優。


技術演進史

2017    "Attention Is All You Need" - Transformer誕生 (NLP)


2020.06 iGPT - 將影像展平為畫素序列,用GPT建模 (OpenAI)
         問題:畫素級序列過長,計算量爆炸


2020.10 ViT - Patch Embedding正式提出 (Google Research, Dosovitskiy et al.)
         核心創新:將影像切塊降低序列長度

  ├──→ 2021.03 DeiT - 引入知識蒸餾,減少對大數據的依賴 (Facebook/Meta)

  ├──→ 2021.03 Swin Transformer - 視窗注意力+層次結構,降低計算複雜度 (Microsoft)
  │        Patch Merging: 逐層合併相鄰patch,建置多尺度特徵

  ├──→ 2021 BEiT - 影像Token的掩碼預訓練 (Microsoft)

  ├──→ 2022 MAE - 掩碼自編碼器預訓練,掩位元速率高達75% (Meta FAIR)

  ├──→ 2022 EVA/EVA-02 - 擴充套件到更大規模 (BAAI)

  └──→ 2023-至今 多模態大型模型時代的廣泛應用
         GPT-4V、LLaVA、InternVL等均使用視覺編碼器+Patch Embedding

關鍵里程碑的Patch設計演變

時間模型Patch策略影響
2020ViT固定16×16或14×14開創性,但小資料表現差
2021Swin4×4起始 + Patch Merging引入多尺度,CNN-like
2022MAE同ViT,但75%patch被mask預訓練範式革新
2023+多模態通常14×14或16×16與語言模型對齊

技術路線對比

Patch尺寸選擇

Patch大小序列長度(224²影像)計算複雜度適合場景
32×3249資源受限、即時推論
16×16196主流選擇,ViT預設
14×14256中高DINOv2、EVA系列
8×8784需要細粒度特徵的任務
動態/自適應可變可變研究探索階段

與其他視覺Token化方法對比

方法代表工作原理優勢劣勢
Patch EmbeddingViT固定網格切塊簡單、高效忽略語義邊界
可變形注意力Deformable DETR學習取樣點位置聚焦關鍵區域實現複雜
Token MergingToMe合併相似token動態減少序列長度需要訓練策略配合
VQ-VAEDALL-E向量量化碼本離散表示,可生成碼本學習困難

多尺度Patch策略

策略代表機制
層次化Patch MergingSwin Transformer每階段合併2×2相鄰patch
多解析度輸入FlexiViT同一模型支援不同patch大小
金字塔結構PVT, MViT不同層使用不同patch大小

上下游

上游:資料與預處理

原始影像 → Resize/Crop → Normalize → [Patch Embedding]
  • 資料增強:RandAugment、MixUp、CutMix等對ViT訓練效果顯著
  • 解析度影響:更高解析度 → 更長序列 → 更高計算成本

核心元件依賴

元件作用關鍵引數
線性投影層patch→embedding(P²C, D)矩陣
位置編碼注入空間資訊(N+1, D)矩陣
CLS Token全域性聚合(1, D)向量

下游任務與適配

任務型別輸出處理代表工作
影像分類CLS token → MLP頭ViT
目標檢測多層特徵 → 檢測頭DETR
語義分割畫素級上取樣SegFormer
多模態理解視覺token與文本token拼接LLaVA, InternVL
影像生成視覺token → 解碼器DALL-E

與語言模型的融合

影像 → Patch Embedding → 視覺Token序列
                              ↓ 拼接
文本 → Token Embedding → 文本Token序列

                         大語言模型 (LLM)

                         多模態輸出

關鍵指標

模型效率指標

指標說明ViT-Base參考值[Google論文]
序列長度Npatch數量196(224²/16²)
嵌入維度D每個token的特徵維度768
Patch Embedding引數量線性投影矩陣~0.59M
Patch Embedding FLOPs前向計算量~116M

精度-效率權衡

模型規模引數量[論文]ImageNet Top-1[論文]輸入解析度
ViT-S/16~22M~79-81%224
ViT-B/16~86M~81-84%224/384
ViT-L/16~304M~85-87%224/384
ViT-H/14~632M~88%+224

注:精度資料依賴訓練資料規模、資料增強、訓練時長等因素,不同論文存在差異。

與CNN對比的效率指標

對比項ResNet-50ViT-B/16
引數量~25M~86M
FLOPs~4G~17.6G
ImageNet (僅公開資料)~76%~77.9%
ImageNet (JFT-300M預訓練)N/A~88%
推論吞吐量更高較低(同等硬體)

供需與市場資料

技術採納現狀

Patch Embedding作為ViT的核心元件,其應用範圍隨以下趨勢擴張:

驅動因素狀態估算口徑
多模態大型模型爆發2023-2024快速擴張GPT-4V、Gemini等產品上線
CV研究範式轉變ViT論文被引數萬次學術影響力指標
工業部署端側/雲端側均有應用高通、聯發科等晶片支援

訓練算力需求(估算)

以ViT-L在ImageNet-1K訓練為例:

  • 訓練epochs:300+
  • GPU需求:多卡(8×A100級別),訓練時間數小時至數天
  • 預訓練(如MAE、DINO):更大規模資料,更多算力

硬體相關性

Patch Embedding本身計算量小,但下游Transformer對硬體要求高:

硬體需求說明
矩陣乘法算力自注意力和FFN是瓶頸
視訊記憶體注意力矩陣O(N²),長序列需更大視訊記憶體
頻寬KV cache等資料搬運

代表公司與資本對映

學術/研究機構

機構代表貢獻地位
Google Research原始ViT論文開創者
Meta FAIRMAE、DINO、DINOv2自監督預訓練領軍
Microsoft ResearchSwin Transformer、BEiT層次化設計開創
BAAI(智源)EVA、EVA-02大規模視覺模型
OpenAIiGPT、CLIP跨模態對齊

產業應用方

公司應用場景Patch相關
Meta內容理解、推薦MAE/DINOv2作為視覺backbone
Google搜尋、多模態ViT集成於多個產品
Tesla自動駕駛採用Transformer視覺架構(細節未充分揭露)
字節跳動內容理解多模態模型視覺編碼器
商湯/曠視/雲端從安防、商業分析ViT系列模型部署

開源生態

模型庫維護方特點
timmRoss Wightman (Hugging Face)最全面的ViT實現集合
HuggingFace TransformersHugging FaceViT模型標準化介面
mmsegmentation/mmdetectionOpenMMLab視覺任務ViT整合
DINOv2程式碼Meta原創實現

投資邏輯

核心判斷

Patch Embedding本身是技術元件而非獨立產品,投資邏輯需從更宏觀視角理解:

1. 多模態大型模型基礎設施

  • 邏輯:ViT/Patch Embedding是多模態模型的視覺入口,隨產品落地而確定性增長
  • 標的型別:算力提供商(GPU/加速卡)、模型API服務
  • 風險:技術路徑可能被新方法替代

2. 視覺AI應用場景

  • 自動駕駛:Transformer視覺backbone逐步替代CNN
  • 工業視覺:缺陷檢測、質量控制
  • 醫療影像:病理分析、輔助診斷
  • 衛星遙感:大尺度影像理解

3. 邊緣部署

  • 挑戰:ViT計算量大,邊緣裝置部署仍有瓶頸
  • 機會:輕量化ViT(如MobileViT、EfficientViT)、模型壓縮
  • 硬體:NPU/端側AI晶片支援ViT的最佳化

風險提示

  • 技術迭代快:新架構(如Mamba、狀態空間模型)可能挑戰Transformer地位
  • 開源競爭:核心演算法開源,商業化壁壘較低
  • 資料依賴:ViT對大規模資料敏感,資料壁壘仍是護城河

常見誤讀糾偏

誤讀一:“Patch Embedding就是把圖片切成小塊”

糾偏

  • 切塊只是第一步,線性投影才是核心——它將高維畫素空間對映到語義嵌入空間
  • 沒有線性投影的raw patch包含大量冗餘資訊,Transformer難以高效學習
  • 工程實現上常用卷積等價操作,而非手動切塊

誤讀二:“Patch越大越好,序列越短越高效”

糾偏

  • Patch越大 → 序列越短 → 計算越快,但資訊損失越大
  • 32×32 patch在細粒度任務(如小目標檢測)上表現明顯差於16×16
  • 選擇patch大小是精度-效率權衡,沒有絕對最優
  • Swin Transformer通過層次化設計在一定程度上緩解了這一矛盾

誤讀三:“ViT在小資料上也能工作,和CNN差不多”

糾偏

  • 原始ViT論文明確指出,在ImageNet-1K(約100萬張)從頭訓練時,ViT不如同等規模CNN
  • 需要在JFT-300M等大規模資料集上預訓練才能發揮優勢
  • DeiT通過知識蒸餾、強資料增強緩解了這一問題,但歸納偏置弱的本質未變
  • DINO、MAE等自監督方法進一步降低了資料需求

誤讀四:“Patch Embedding不包含位置資訊,所以丟失了空間結構”

糾偏

  • Patch Embedding本身確實不包含位置資訊
  • 但通過加法注入位置編碼(Position Embedding),空間資訊被顯式補充
  • 部分相對位置編碼方案將位置資訊整合在注意力計算中
  • 真正的問題是固定網格切塊可能割裂物體邊界,但這與”位置資訊”是不同問題

學習路徑

入門級(理解概念)

  1. 閱讀ViT論文摘要與Introduction:[Dosovitskiy et al., 2020] “An Image is Worth 16x16 Words”
  2. 視覺化Patch切分:使用torchvision將圖片切成patch並可視化
  3. 執行HuggingFace ViT示例程式碼:體驗端到端流程

進階級(掌握實現)

  1. 手寫Patch Embedding層:用PyTorch實現Conv2d等價和手動展平兩種方式
  2. 對比不同patch大小:在CIFAR-10上實驗8×8, 16×16, 32×32的效果差異
  3. 閱讀timm庫的ViT實現:理解工程最佳化細節

專家級(理解前沿)

  1. 研究位置編碼方案:絕對/相對/RoPE的原理與實現
  2. 閱讀Swin Transformer:理解層次化Patch Merging
  3. 研究MAE/DINOv2:理解自監督預訓練如何增強Patch Embedding
  4. 追蹤多模態論文:視覺token如何與語言模型對接

推薦資源

資源型別適合階段
李沐《動手學深度學習》ViT章節教程入門
Harvard “The Annotated Transformer”程式碼註釋入門-進階
lucidrains/vit-pytorch (GitHub)簡潔實現進階
timm/models/vision_transformer.py工業級實現進階-專家
arXiv最新ViT相關論文論文專家

一句話總結

Patch Embedding是視覺Transformer的”入場券”——它將連續的畫素網格離散化為token序列,使強大的自注意力機制得以在視覺領域施展拳腳,但它的設計選擇(patch大小、位置編碼、層次結構)直接決定了模型的效率與精度上限。


延伸閱讀與來源

核心論文

  1. Dosovitskiy et al., 2020. “An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale.” ICLR 2021.
  2. Liu et al., 2021. “Swin Transformer: Hierarchical Vision Transformer using Shifted Windows.” ICCV 2021.
  3. He et al., 2022. “Masked Autoencoders Are Scalable Vision Learners.” CVPR 2022.
  4. Caron et al., 2021. “Emerging Properties in Self-Supervised Vision Transformers.” ICCV 2021.

技術部落格

  • Google AI Blog: “ViT: A Vision Transformer”
  • Papers With Code: Vision Transformer系列頁面
  • Hugging Face Blog: ViT相關教程

資料來源說明

  • 本文中模型引數量、FLOPs等資料均來自原論文或官方程式碼庫
  • ImageNet精度資料來自論文報告,不同訓練策略下結果存在差異
  • 市場資料為行業公開報告估算,非精確統計
source: 公開揭露與公開資料整理 本頁僅用於產業鏈學習、資訊檢索和研究輔助;不構成投資建議,不預測漲跌,不提供買賣、部位或目標價建議。
完整概念頁 複盤 13 節結構 公司投研頁 沿產業鏈找到受益公司 投資課 把概念轉成可跟蹤模型