2020年,一篇题为《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》的论文在AI圈投下一颗重磅炸弹——Google Brain团队提出的Vision Transformer(ViT),首次将Transformer架构成功迁移到计算机视觉任务,并在ImageNet等经典数据集上达到了超越传统CNN的性能。这篇论文也标志着“Transformer统治视觉时代”的开端。
本文将从ViT的核心结构出发,拆解其设计逻辑,并分析它与传统CNN的本质差异,帮你快速掌握这一颠覆性模型的精髓。
一、为什么是Transformer?ViT的“跨界”动机
要理解ViT,首先需要回顾两个背景:
1. NLP中的Transformer神话
2017年,Google提出Transformer架构,凭借自注意力(Self-Attention)机制,彻底改变了自然语言处理(NLP)的格局。其核心思想是:通过计算序列中任意两个元素的关联权重(注意力分数),模型能直接捕捉长距离依赖关系,彻底摆脱了RNN“顺序计算”的低效瓶颈。例如,在翻译任务中,“苹果”和“吃”的关联可以跨越整个句子被直接建模。
2. CV的“CNN困局”
在ViT之前,计算机视觉的主流模型是CNN(卷积神经网络)。CNN通过局部卷积核提取特征,依赖“平移不变性”和“层级抽象”的归纳偏置(Inductive Bias),在图像任务中表现优异。但它也存在天然局限:
- 局部感受野限制:卷积核只能捕捉局部区域的信息,需通过多层堆叠扩大感受野,效率较低;
- 长距离依赖建模弱:对于需要全局信息的任务(如语义分割、目标检测),CNN难以直接关联图像中相距很远的区域;
- 归纳偏置的“双刃剑”:固定的卷积操作虽降低了数据需求,但也限制了模型的灵活性——当数据量足够大时,这种“先验知识”可能成为性能瓶颈。
ViT的提出者敏锐地意识到:图像本质上是由像素组成的“二维序列”。如果将图像分割成小块(Patch),每个块视为一个“视觉词(Visual Word)”,那么图像就可以转化为类似文本的“词序列”。而Transformer的自注意力机制,恰好擅长处理这种序列数据的全局关联。于是,一场“Transformer跨界视觉”的革命就此展开。
二、ViT的核心结构:从图像到Transformer的“翻译”过程
ViT的整体架构可分为四大模块:图像分块嵌入(Patch Embedding)、位置编码(Positional Encoding)、Transformer编码器(Transformer Encoder)和分类头(Classification Head)。我们以经典的ImageNet分类任务为例,逐步拆解其处理流程。
1. 第一步:图像分块——把图片切成“视觉词”
输入一张224×224×3的彩色图像(RGB三通道),ViT首先将其分割为多个大小为16×16的小块(Patch)。计算可知,224/16=14,因此图像会被分割为14×14=196个Patch。每个Patch的尺寸是16×16×3,包含256个像素点。
接下来,每个Patch会被线性投影为一个长度为D的向量(D是模型的隐藏层维度,如ViT-Base中D=768)。这个过程类似NLP中的“词嵌入(Word Embedding)”——将离散的“词”映射为连续的向量。因此,196个Patch最终会被转化为一个形状为[196, D]
的矩阵,相当于一个长度为196的“视觉词序列”。
类比理解:如果把图像看作一篇“视觉文章”,那么16×16的Patch就是文章中的“单词”,而线性投影就是将“单词”转换为模型能理解的“词向量”。
2. 第二步:位置编码——给“视觉词”加上“坐标”
Transformer本身不包含任何位置信息(自注意力机制对输入的顺序不敏感),但图像的Patch具有明确的空间位置(如左上角、右下角等)。为了让模型感知到“空间顺序”,ViT需要为每个Patch添加位置编码(Positional Encoding)。
ViT的位置编码采用与输入Patch相同的维度D,形状为[196, D]
。根据原论文,位置编码是可学习的参数(Learnable Positional Encoding)——模型训练时,位置编码会随着梯度更新自动优化,而非使用固定的正弦/余弦函数(如原始Transformer)。每个Patch的嵌入向量与对应的位置编码向量相加后,输入到Transformer编码器中。
关键细节:除了196个Patch的嵌入向量,ViT还会额外添加一个可学习的
[CLS]
(Class Token)向量(形状[1, D]
),并将其拼接在Patch序列的最前面。最终输入Transformer的序列长度变为197(196个Patch + 1个[CLS]
)。
3. 第三步:Transformer编码器——用自注意力“读懂”图像
ViT的核心计算单元是标准的多层Transformer编码器(与NLP中的Transformer完全一致)。每个编码器层包含两个子层:
- 多头自注意力(Multi-Head Self-Attention, MHSA):每个头独立计算序列中任意两个Patch的注意力分数,捕捉不同子空间的全局关联;最后将各头的输出拼接,得到丰富的上下文信息。
- 前馈神经网络(Feed-Forward Network, FFN):对每个位置的向量进行非线性变换(通常是两层全连接+激活函数),增强模型的表达能力。
此外,每个子层后都会应用层归一化(LayerNorm)和残差连接(Residual Connection),缓解深层网络的梯度消失问题。
核心差异:与CNN的“局部卷积”不同,ViT的自注意力机制允许每个Patch直接与图像中的所有其他Patch交互。例如,第1个Patch(左上角)可以直接“看到”第196个Patch(右下角),无需通过多层卷积核堆叠。
4. 第四步:分类头——用[CLS]
token预测类别
经过多层Transformer编码器后,输入序列中的每个Patch向量都会被更新为包含全局信息的特征。ViT选择使用 [CLS]
token的输出向量(即序列中第一个位置的向量)作为图像的全局表示,通过一个线性分类层(全连接层)映射到类别数(如ImageNet的1000类),最终输出分类概率。
设计巧思:
[CLS]
token是模型专门为分类任务添加的“虚拟Patch”。它在输入时是随机初始化的可学习向量,在训练过程中会逐渐学习到“聚合全局信息”的能力,最终成为图像类别的“代言人”。
三、ViT的四大核心特点:重新定义视觉模型
1. 全局自注意力:打破局部感知的“枷锁”
ViT的最大突破是用自注意力替代卷积,直接建模图像中任意两个Patch的全局关联。这使得ViT在处理长距离依赖(如识别图像中“天空中的飞机”或“人群中的一个人”)时效率更高,无需像CNN那样通过多层堆叠扩大感受野。
2. 无归纳偏置:更灵活,但更依赖数据
CNN内置了“局部性”和“平移不变性”的归纳偏置,这使其在小数据场景下(如几千张图像)表现优异。但ViT放弃了这些先验知识,仅依赖自注意力和位置编码建模视觉规律。因此,ViT需要海量数据(如JFT-300M百万级图像)才能充分训练,否则容易过拟合。这也是早期ViT在小数据集(如ImageNet)上表现不如ResNet的原因。
3. 规模效应显著:数据越大,性能越强
ViT的性能与数据量呈强正相关。根据原论文实验:
- 在小数据集(如ImageNet,1400万张图像)上,ViT-Base的Top-1准确率约为77.9%,略低于同规模的ResNet-50(78.2%);
- 在超大规模数据集(如JFT-300M,3亿张图像)上,ViT-Large的Top-1准确率可达88.5%,远超同等规模的CNN模型。
这一特性使得ViT在大模型时代(如与预训练结合)展现出巨大潜力——当数据足够多时,其全局建模能力会彻底释放。
4. 结构简洁:与NLP的Transformer“一脉相承”
ViT的结构与NLP中的Transformer高度统一,仅需替换输入(词序列→视觉Patch序列)和输出(文本生成→分类得分)。这种统一性带来了两大好处:
- 技术迁移:NLP中的优化技巧(如注意力头剪枝、混合精度训练)可直接应用于ViT;
- 多模态融合:统一的架构为图像、文本、视频等多模态任务(如CLIP、ALBEF)提供了底层支撑。
四、ViT的局限性与改进方向
尽管ViT性能卓越,但其仍存在一些局限性,也推动了后续模型的改进:
1. 小数据场景表现不足
如前所述,ViT依赖大规模数据。针对这一问题,后续工作提出了数据高效型ViT(如DeiT),通过引入CNN的归纳偏置(如蒸馏学习)或数据增强(如RandAugment),使ViT在小数据集上也能达到SOTA效果。
2. 计算复杂度高
自注意力的时间复杂度为O(N²)(N为序列长度),当图像分辨率提高(如1024×1024)时,Patch数量N会急剧增加(1024/16=64→64²=4096),导致计算成本飙升。为此,研究者提出了稀疏注意力(如Swin Transformer,仅计算局部邻域或固定步长的注意力)、线性注意力(如Performer,将注意力矩阵分解为核函数近似)等方法,降低复杂度。
3. 位置编码的灵活性
ViT的可学习位置编码在处理不同分辨率图像时需重新训练(如从224×224到384×384)。而基于正弦函数的固定位置编码(如Swin Transformer)则支持任意分辨率的输入,更适合下游任务(如目标检测)。
五、总结:ViT开启的“视觉Transformer时代”
ViT的出现,本质上是将“序列建模”的思维引入视觉领域。它用自注意力替代卷积,用数据驱动替代归纳偏置,证明了Transformer架构在视觉任务中的普适性。尽管早期受限于数据规模,但随着大模型、多模态技术的发展,ViT已成为计算机视觉的核心架构之一。
从ViT到DETR(目标检测)、Mask2Former(分割),再到最近的Sora(视频生成),Transformer正在重新定义视觉任务的边界。或许正如论文作者所言:“A image is worth 16x16 words”——但这16x16个“词”,正在撬动整个视觉AI的未来。