模型层 开放阅读

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 节结构 公司投研页 沿产业链找到受益公司 投资课 把概念转成可跟踪模型