引言:一场静悄悄的革命

2020年12月,Google Research团队发表了一篇题为《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》的论文。当时恐怕很少有人预料到,这篇论文将拉开计算机视觉领域数十年来最深刻的架构革命。卷积神经网络(CNN)自2012年AlexNet惊艳亮相以来,几乎垄断了所有视觉任务的基准榜单。然而Vision Transformer(ViT)的出现,以纯粹的注意力机制取代了局部卷积归纳偏置,用全局自注意力重新定义了图像理解的方式。

四年后的今天,Vision Transformer及其衍生架构已经成为计算机视觉的主流选择。本文将从工程实战角度,系统梳理从CNN到ViT的完整演进脉络,深入剖析架构差异、训练策略、推理优化,以及如何在实际业务中做出正确的技术选型。

第一部分:CNN的归纳偏置与天花板

1.1 卷积的设计哲学

CNN的成功归功于三个核心归纳偏置:局部连接(locality)、权重共享(translation equivariance)和平移不变性。这些特性天然匹配图像的二维结构——一只猫无论是出现在左上角还是右下角,都应该被识别为猫。

从LeNet到AlexNet,从VGG到ResNet,CNN的演进本质上是在这三个归纳偏置框架内做深度和宽度的扩展。ResNet的残差连接解决了深层网络的梯度消失问题,DenseNet的特征复用提升了参数效率,EfficientNet的复合缩放法则优化了计算资源的分配。

1.2 CNN的固有局限

然而,归纳偏置既是CNN的优势,也是其天花板。卷积的局部感受野意味着,要建模图像中两个远距离像素之间的关系,必须通过多层堆叠逐步扩大感受野。这种长距离依赖建模的高昂成本,在许多任务中造成了天花板效应。

此外,CNN的架构设计越来越依赖手工技巧:膨胀卷积扩大感受野、可变形卷积适应几何变换、注意力模块(SE-Net、CBAM)补偿全局信息缺失——这些修补性工作暗示着一个事实:也许我们需要一种更本质的方式来看待图像。

第二部分:Transformer的崛起与ViT的诞生

2.1 注意力机制的本质

Transformer的核心是多头自注意力(Multi-Head Self-Attention, MHSA)。与卷积不同,注意力机制天然具备全局感受野——序列中任意两个位置之间的关系都可以直接建模,无需逐层传递。在自然语言处理中,这意味着一个词可以直接关注到文档中任何位置的另一个词;在视觉中,这意味着一个像素块可以直接关注到图像中任何位置的另一个像素块。

数学上,自注意力计算的是Query、Key、Value三组投影之间的相似度,并通过softmax归一化为注意力权重:

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

其中d_k是Key向量的维度,√d_k是缩放因子。这一简洁公式远比任何卷积核或残差块更富有表达力。

2.2 ViT的实现策略

Vision Transformer的关键创新不在于注意力机制本身,而在于如何将图像转换为 Transformer 可处理的序列:

  1. 图块切分:将输入图像均匀切分为16×16像素的非重叠图块(patch),每个图块被展平为一维向量。
  2. 线性投影:每个图块通过线性映射(全连接层)投影到模型维度d,生成 patch embedding。
  3. 位置编码:添加可学习的一维位置编码,弥补打乱顺序后丢失的空间信息。
  4. CLS标记:在序列前端附加一个特殊的分类标记(class token),用于最终的分类任务。

这一策略优雅地将图像问题转化为序列建模问题,使得Transformer可以直接应用于视觉任务。

2.3 ViT的两面性

ViT的天才之处在于其极简主义——它几乎完全移除了视觉特定的归纳偏置,让模型从数据中自行学习空间结构建模。但这也带来了一个直接后果:在小规模数据集上,ViT显著不如同等规模的CNN。

原因很直观:CNN内置的平移不变性和局部性先验是免费的归纳偏置,而ViT必须从零开始学习这些规律。因此,ViT需要大量预训练数据(JFT-300M数据集,约3亿张图像)才能充分发挥优势。一旦训练充分,ViT就能在大规模数据集上超越CNN,并展现出更好的可扩展性(scalability)。

第三部分:ViT家族进化史

3.1 DeiT:数据高效的ViT

Facebook AI在2021年提出的DeiT(Data-efficient Image Transformers)解决了ViT对大数据集依赖的问题。通过引入知识蒸馏策略——使用预训练的CNN教师模型指导ViT学生模型的训练——DeiT仅用ImageNet-1K数据就能达到与在大规模数据上预训练的ViT相当的性能。

DeiT的关键发现是:训练策略与架构同等重要。更强的数据增强(RandAugment、Mixup、CutMix)、更长的训练周期、以及distillation token的引入,使得ViT在有限数据场景下也能表现出色。

3.2 Swin Transformer:层级化与移位窗口

微软亚洲研究院提出的Swin Transformer是ViT走向实用化的里程碑。它引入了两个关键创新:

层级化特征图:与CNN类似,Swin Transformer由浅到深逐步合并图块,生成多尺度特征图(1/4、1/8、1/16、1/32分辨率),使其可以无缝替代CNN backbone参与FPN、U-Net等多尺度架构。

移位窗口注意力:将全局注意力限制在局部窗口内(如7×7个图块),大幅降低计算复杂度从O(n²)到O(n)。相邻层之间通过窗口偏移(shifted window)实现跨窗口信息交互,兼顾了计算效率和全局建模能力。

3.3 后续演化方向

ViT家族至今仍在快速进化。几个值得关注的方向包括:

  • PVT(Pyramid Vision Transformer):金字塔结构的多尺度ViT,更适合密集预测任务。
  • CoAtNet:融合卷积和注意力,在浅层使用卷积、深层使用注意力,利用各自优势。
  • Plain ViT的极限缩放:探索纯Transformer架构的scaling law,ViT-22B展示了惊人的参数效率。

第四部分:工程实战要点

4.1 何时选择CNN,何时选择ViT

在实际业务中,架构选型不是非黑即白的。以下经验法则可供参考:

优先选择CNN的场景:

  • 训练数据量有限(<10万张图像)
  • 需要低延迟推理(移动端、嵌入式设备)
  • 任务要求高分辨率密集预测(语义分割、目标检测)且计算预算有限
  • ResNet、EfficientNet等经过充分优化的CNN backbone已经足够胜任

优先选择ViT的场景:

  • 大规模预训练数据可用(≥100万张图像)
  • 需要强长距离依赖建模的场景(如医学影像的全局结构分析)
  • 需要与NLP模型协同的多模态任务
  • 追求SOTA精度且推理延迟不是首要瓶颈

4.2 ViT训练实战技巧

在实际训练ViT时,以下经验非常关键:

  1. 预训练权重优先:强烈建议从公开的预训练模型(如ViT-B/16、Swin-B)开始微调,而不是从零训练。
  2. 学习率设置:ViT对学习率非常敏感。建议使用warmup + cosine decay策略,初始学习率通常比CNN低一个数量级(如3e-5)。
  3. 强数据增强必不可少:RandAugment、Mixup、CutMix、Random Erasing是ViT训练的标配。Without strong augmentation, ViT会严重过拟合。
  4. DropPath强正则化:ViT比CNN更需要正则化。stochastic depth(drop_path_rate=0.1~0.3)是几乎必需的。
  5. 分辨率策略:预训练分辨率(如224×224)上微调后,可以在更高分辨率(如384×384)上做短周期微调以进一步提升精度。

4.3 ViT推理优化

在部署阶段,ViT面临的主要挑战是注意力机制的高计算复杂度。常用优化策略包括:

  • 量化:INT8量化在ViT上同样有效,TensorRT、ONNX Runtime均有良好支持。
  • 知识蒸馏:用大ViT指导轻量CNN或MobileViT大小模型。
  • Token剪枝:动态移除对分类贡献小的patch token(如DynamicViT、A-ViT),降低推理FLOPs。
  • ONNX/TensorRT导出:注意Flash Attention的兼容性,某些变体需要特殊算子支持。

第五部分:未来展望

CNN与Transformer的竞争远未结束,但方向已经清晰:纯粹的架构之争正在走向融合。CoAtNet、ConvNeXt等"新卷积"网络证明了精心设计的卷积网络仍然可以与Transformer并驾齐驱,而MobileViT、EdgeNeXt等轻量化模型则在端侧设备上开辟了第三条道路。

更具颠覆性的变化可能来自两个方面:一是多模态统一架构(如Meta的ImageBind、GPT-4V),视觉编码器不再是独立模块,而是与语言、音频、深度等信息在统一框架中联合建模;二是视觉Mamba等状态空间模型(SSM),它们以线性复杂度实现全局建模,可能在序列长度维度彻底超越Transformer。

无论架构如何演进,一个核心原则始终不变:没有放之四海而皆准的最佳模型,只有最适合具体约束条件的选择。理解每种架构的本质 trade-off,才是工程师最大的竞争力。

总结

从2012年AlexNet到2020年的ViT,计算机视觉经历了从"手工设计归纳偏置"到"让数据说话"的范式转变。这场转变的核心教训是:归纳偏置在小数据场景下是免费的先验知识,但在大数据场景下可能成为表达力的瓶颈。Vision Transformer并非在所有场景下都优于CNN,但当数据规模足够时,它的可扩展性和全局建模能力使其成为更优的选择。

对于工程师而言,真正重要的不是追逐最新的SOTA,而是深入理解每种架构的底层逻辑,在数据规模、计算资源、延迟要求之间做出最合理的折中。这也是架构演进史给我们的最大启示。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
网站二维码

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部