论文: An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale
作者: Alexey Dosovitskiy 等,Google Research
会议: ICLR 2021
论文地址: arXiv:2010.11929
摘要
《An Image is Worth 16×16 Words》提出了 Vision Transformer,简称 ViT。它将图像切分为固定尺寸的 Patch,把每个 Patch 当作一个视觉 Token,再直接输入标准 Transformer Encoder 完成图像分类。
这篇论文最重要的结论不是“Transformer 也能处理图像”,而是:
当预训练数据和模型规模足够大时,几乎不引入视觉专用结构的纯 Transformer,也可以在图像识别任务上达到甚至超过强卷积神经网络。
ViT 改变了计算机视觉长期依赖 CNN 的技术路线,并为后续的 CLIP、MAE、DINO、SAM、视觉语言模型和多模态大模型奠定了基础。
1. 研究背景
在 ViT 之前,计算机视觉的主流架构几乎完全由 CNN 主导,包括:
- LeNet
- AlexNet
- VGG
- ResNet
- EfficientNet
与此同时,Transformer 已经在 NLP 中取得成功,并逐渐成为 BERT、GPT、T5 等模型的统一基础架构。
然而,直接将 Transformer 用于图像仍面临三个问题:
- 图像输入维度过高。 若把每个像素视为 Token,序列长度会非常大。
- 自注意力复杂度为 。 高分辨率图像会造成难以承受的计算成本。
- Transformer 缺少 CNN 的视觉归纳偏置。 它不天然具备局部性和平移等变性。
因此,此前大量视觉 Transformer 工作仍保留 CNN Backbone,或者只在局部模块中引入 Attention。
ViT 的突破在于,它几乎完全移除了卷积结构,并证明标准 Transformer Encoder 可以直接处理图像 Patch 序列。
2. 核心思想:把图像转换为 Token 序列
ViT 的核心思想可以概括为:
把一张图像切成多个固定大小的 Patch,每个 Patch 相当于 NLP 中的一个 Word Token。
假设输入图像大小为:
其中:
- :图像高度
- :图像宽度
- :通道数
- :Patch 边长
图像会被切分为:
个 Patch。
例如,对于一张 的 RGB 图像,使用 的 Patch:
因此,一张图像会被转换为 196 个视觉 Token。
每个 Patch 的原始维度为:
将其展平后,再通过线性层映射到 Transformer 的隐藏维度。
3. 模型整体结构
ViT 的处理流程如下:
Image
↓
Split into fixed-size patches
↓
Flatten each patch
↓
Linear projection / Patch embedding
↓
Add class token and position embedding
↓
Transformer Encoder
↓
Take class-token representation
↓
MLP classification head
↓
Class prediction
除了输入 Token 的构造方式不同,ViT 与标准 BERT 风格的 Transformer Encoder 基本一致。
3.1 Patch Embedding
输入图像记为:
切分并展平后得到 Patch 序列:
每个 Patch 通过可学习的线性投影矩阵 映射到 维:
从实现角度看,Patch Embedding 也可以等价地使用:
Conv2D(
kernel_size = patch_size,
stride = patch_size
)
完成切块和线性映射。
3.2 Class Token
ViT 在 Patch 序列最前面加入一个可学习的 Class Token:
完整输入序列为:
经过 Transformer Encoder 后,取最终 Class Token 的表示用于分类:
这个设计与 BERT 的 [CLS] Token 高度相似。
3.3 Position Embedding
自注意力本身对 Token 顺序不敏感,因此 ViT 需要加入位置编码,以保留 Patch 的空间位置信息。
论文采用可学习的一维位置嵌入:
作者还比较了不同二维位置编码方案,但实验显示,更复杂的位置编码并没有带来显著收益。
这说明模型可以在大规模训练中自行学习相当一部分二维空间关系。
3.4 Transformer Encoder
ViT 使用标准 Transformer Encoder,每一层包含:
- Layer Normalization
- Multi-Head Self-Attention
- Residual Connection
- Layer Normalization
- MLP
- Residual Connection
其计算过程可以写为:
MLP 通常由两层全连接网络和 GELU 激活函数组成。
4. ViT 模型规格
论文主要定义了三种规模:
| 模型 | 层数 | 隐藏维度 | MLP 维度 | Attention Heads | 参数量 |
|---|---|---|---|---|---|
| ViT-Base | 12 | 768 | 3072 | 12 | 约 86M |
| ViT-Large | 24 | 1024 | 4096 | 16 | 约 307M |
| ViT-Huge | 32 | 1280 | 5120 | 16 | 约 632M |
模型名称通常还会包含 Patch 大小,例如:
- ViT-B/16
- ViT-B/32
- ViT-L/16
- ViT-H/14
其中 B、L、H 表示 Base、Large、Huge,数字表示 Patch 的边长。
5. Patch 大小与计算成本
Patch 大小决定了视觉 Token 数量。
以 图像为例:
| Patch 大小 | Token 网格 | Patch Token 数 |
|---|---|---|
| 49 | ||
| 196 | ||
| 784 |
Patch 越小:
- 保留的局部细节越多
- 序列长度越长
- Attention 计算成本越高
由于自注意力复杂度约为:
当 Token 数从 196 增长到 784 时,Attention 矩阵规模会增长约 16 倍。
因此,Patch 大小本质上是精度、细粒度视觉信息和计算成本之间的权衡。
6. 论文真正的关键:大规模预训练
ViT 并不是在所有数据规模下都优于 CNN。
论文发现:
- 在 ImageNet 这类中等规模数据集上直接训练时,ViT 的表现通常不如强 CNN。
- 在 ImageNet-21k 或 JFT-300M 等大规模数据集上预训练后,ViT 的迁移学习性能显著提升。
- 随着数据规模和模型规模增长,ViT 的收益比 CNN 更明显。
这揭示了 ViT 的核心特征:
ViT 的优势高度依赖大规模数据、模型容量和计算资源。
CNN 内置了较强的视觉先验:
- 局部感受野
- 权重共享
- 平移等变性
这些先验使 CNN 在中小规模数据上更容易训练。
ViT 的先验更少,因此需要更多数据自行学习图像中的局部性、空间结构和对象关系;但归纳偏置更弱,也让它在大规模训练中拥有更高的模型上限。
7. 实验设计与主要结果
论文在多个预训练数据集上训练 ViT:
- ImageNet
- ImageNet-21k
- JFT-300M
随后在多个下游任务上进行微调,包括:
- ImageNet
- CIFAR-10
- CIFAR-100
- Oxford-IIIT Pets
- Oxford Flowers-102
- VTAB
论文报告的代表性结果是:在大规模 JFT-300M 预训练后,ViT-H/14 在 ImageNet 上达到约 88.55% Top-1 Accuracy,超过当时多种强 CNN 和混合架构。
但更有价值的结论不是单个准确率,而是以下趋势。
7.1 数据越大,ViT 越有优势
在较小数据集上,卷积网络通常更具数据效率。
当预训练数据扩大到 ImageNet-21k 和 JFT-300M 后,ViT 的表现快速提升,并超过强 CNN 基线。
7.2 模型扩展性较好
随着模型参数量和训练数据增加,ViT 的性能持续提升。
这一特性使其非常适合 Foundation Model 路线:
More data
+
Larger model
+
More compute
↓
Better transferable representations
7.3 迁移学习能力强
经过大规模预训练后,ViT 在多个下游图像分类任务上表现稳定,说明它学习到的并不只是某个数据集的分类规则,而是可迁移的通用视觉表示。
8. ViT 学到了什么
论文对 Attention 和中间表示进行了可视化分析。
8.1 低层 Attention 具有局部性
尽管 ViT 没有显式卷积层,一些浅层 Attention Head 仍会关注邻近 Patch。
这意味着模型可以通过数据自行学习类似卷积局部感受野的行为。
8.2 高层 Attention 具有全局性
部分 Attention Head 从较浅层开始就能够建立长距离依赖。
相比之下,CNN 通常需要堆叠多层卷积,才能获得较大的有效感受野。
8.3 Position Embedding 学到二维结构
虽然论文使用的是一维可学习位置向量,但训练后,不同位置嵌入之间的相似度呈现明显的二维空间模式。
相邻 Patch 的位置表示更加相似,说明模型自行恢复了图像网格结构。
9. ViT 与 CNN 的本质区别
| 维度 | CNN | ViT |
|---|---|---|
| 基本单元 | 像素邻域、卷积核 | Patch Token |
| 信息交互 | 局部卷积逐层扩展 | Self-Attention 全局交互 |
| 归纳偏置 | 强 | 弱 |
| 数据效率 | 中小数据集较好 | 通常依赖大规模预训练 |
| 扩展性 | 良好 | 大规模下通常更突出 |
| 全局建模 | 依赖网络深度 | 单层即可建立长距离关系 |
| 架构统一性 | 视觉专用 | 可与语言、多模态共享 Transformer 范式 |
CNN 的优势在于以较低数据成本编码视觉规律。
ViT 的优势在于减少手工设计的视觉假设,让模型在大规模数据中学习更通用的表示。
10. 论文的创新点
10.1 证明纯 Transformer 可以处理图像
ViT 几乎不依赖卷积结构,仅通过 Patch Embedding 将图像转换为序列,再使用标准 Transformer。
10.2 将 NLP 的预训练—微调范式迁移到视觉
其训练范式与 BERT、GPT 类似:
Large-scale pretraining
↓
Task-specific fine-tuning
这推动计算机视觉从“针对任务设计网络”转向“预训练通用视觉 Backbone”。
10.3 揭示视觉模型的 Scaling 潜力
ViT 显示出随着数据、模型和算力扩大而持续获益的能力,为后续视觉基础模型提供了直接证据。
10.4 统一视觉和语言的建模接口
图像和文本都可以表示为 Token 序列并交给 Transformer 处理,为图文联合建模提供了统一架构基础。
11. 局限性
11.1 数据需求高
原始 ViT 在中小规模数据集上的训练效率不如 CNN。
这是其最明显的局限,也是后续 DeiT、DINO、MAE 等工作重点解决的问题。
11.2 高分辨率计算成本高
当图像分辨率上升或 Patch 变小时,Token 数迅速增长,而全局 Self-Attention 的复杂度是平方级。
这限制了原始 ViT 在检测、分割和高分辨率任务中的直接应用。
11.3 缺少多尺度层级结构
标准 CNN 会自然形成多尺度特征图,而原始 ViT 在各层通常维持相同 Token 分辨率。
这对目标检测和语义分割等密集预测任务并不理想。
Swin Transformer 后来通过窗口注意力和层级式特征结构改善了这一问题。
11.4 Patch 化可能损失细粒度信息
每个 Patch 在进入 Transformer 前会被压缩为一个向量。较大的 Patch 可能损失边缘、纹理和小目标信息。
11.5 训练成本较高
论文的最佳结果依赖超大规模私有数据集 JFT-300M 和大量算力,早期很难被普通研究团队完整复现。
12. 后续工作与技术演进
ViT 之后,视觉 Transformer 快速发展。
| 工作 | 主要贡献 | 论文 |
|---|---|---|
| DeiT | 使用蒸馏和训练策略提升 ViT 的数据效率 | Training Data-Efficient Image Transformers & Distillation through Attention |
| Swin Transformer | 使用窗口注意力和层级结构支持检测、分割 | Swin Transformer: Hierarchical Vision Transformer using Shifted Windows |
| BEiT | 引入类似 BERT 的视觉 Masked Modeling | BEiT: BERT Pre-Training of Image Transformers |
| MAE | 使用高比例遮挡和重建任务进行自监督预训练 | Masked Autoencoders Are Scalable Vision Learners |
| DINO / DINOv2 | 通过自蒸馏学习高质量通用视觉特征 | DINO / DINOv2 |
| CLIP | 使用图文对比学习构建开放词汇视觉模型 | Learning Transferable Visual Models From Natural Language Supervision |
| SigLIP | 改进图文对比学习目标和训练效率 | Sigmoid Loss for Language Image Pre-Training |
| SAM | 以 ViT 为核心视觉编码器构建通用分割模型 | Segment Anything |
这些工作分别解决了 ViT 的数据效率、高分辨率、层级特征、自监督训练和跨模态对齐问题。
13. 对多模态大模型的影响
ViT 为现代视觉语言模型提供了最关键的视觉 Token 化机制。
典型多模态架构通常是:
Image
↓
ViT-like visual encoder
↓
Visual tokens
↓
Projector / Adapter / Resampler
↓
Large Language Model
↓
Multimodal response
这条技术路线的核心前提来自 ViT:
图像可以被转换成一组上下文化的 Token 表示,再与语言 Token 在统一 Transformer 体系中交互。
因此,ViT 不只是图像分类模型,也是视觉基础模型和多模态模型的架构起点之一。
14. 为什么 ViT 是里程碑论文
ViT 的历史价值主要体现在四个方面。
14.1 改变了视觉主干网络
CNN 不再是图像建模的唯一主流选择,Transformer 成为视觉 Backbone 的核心方案。
14.2 推动视觉进入 Foundation Model 时代
视觉模型开始采用大规模预训练、统一表示和下游迁移的路线。
14.3 统一 NLP、CV 与多模态架构
文本、图像、音频和视频可以被转换为 Token,并由类似的 Transformer 架构处理。
14.4 强化了 Scaling 路线
ViT 证明,减少任务特定结构、扩大数据和模型规模,可以获得更强的通用能力。
15. 工程实现要点
一个最小化 ViT 实现需要以下组件:
PatchEmbedding
ClassToken
PositionEmbedding
TransformerEncoder
LayerNorm
ClassificationHead
伪代码如下:
def forward(image):
patches = split_into_patches(image)
tokens = linear_projection(flatten(patches))
cls = repeat(class_token, batch_size=image.batch_size)
tokens = concat([cls, tokens], dim=1)
tokens = tokens + position_embedding
encoded = transformer_encoder(tokens)
cls_output = layer_norm(encoded[:, 0])
return classification_head(cls_output)
训练时需要特别关注:
- AdamW 优化器
- Weight Decay
- Learning Rate Warmup
- 数据增强
- 较长训练周期
- 大规模预训练
- 微调时的位置编码插值
当输入分辨率变化时,Patch 数量也会变化,因此通常需要对二维位置嵌入执行插值。
16. 综合评价
| 维度 | 评价 |
|---|---|
| 创新性 | 极高 |
| 架构简洁性 | 极高 |
| 原始模型的数据效率 | 一般 |
| 扩展能力 | 极强 |
| 工业影响 | 极高 |
| 学术影响 | 极高 |
| 历史地位 | 深度学习里程碑 |
ViT 的核心价值不在于设计了复杂的新模块,而在于验证了一个极其简洁但影响深远的假设:
图像不一定需要使用卷积网络建模。只要把图像转换为合适的 Token 序列,标准 Transformer 就可以学习强大的视觉表示。
17. 结论
《An Image is Worth 16×16 Words》完成了计算机视觉架构范式的重要转换:
CNN-centric vision
↓
Transformer-based vision
↓
Vision foundation models
↓
Unified multimodal models
论文提出的原始 ViT 仍存在数据需求高、全局 Attention 成本高和缺少层级特征等问题,但这些不足并没有削弱它的历史价值。
相反,后续大量工作正是围绕这些问题展开,并最终形成了今天的视觉基础模型和多模态大模型生态。
从长期影响看,ViT 可以与《Attention Is All You Need》、BERT 和 GPT 系列的代表性论文并列,是理解现代 AI 架构演进不可绕过的基础论文。
参考资料
- Dosovitskiy, A. et al. An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale. ICLR 2021.
- Vaswani, A. et al. Attention Is All You Need. NeurIPS 2017.
- Touvron, H. et al. Training Data-Efficient Image Transformers & Distillation through Attention. ICML 2021.
- Liu, Z. et al. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows. ICCV 2021.
- He, K. et al. Masked Autoencoders Are Scalable Vision Learners. CVPR 2022.
Loading discussion…