技术深度解析
Vision Transformer(ViT)代表了与自2012年AlexNet以来主导计算机视觉的卷积范式的彻底决裂。其核心思想是将图像视为一维的图像块序列,类似于语言模型将句子视为词元序列。
架构概览:
1. 图像块嵌入: 大小为H×W×C的输入图像被划分为N个大小为P×P的图像块,其中N = (H×W)/P²。对于标准的224×224图像,P=16时,会生成196个图像块。每个图像块被展平为长度为P²·C的向量(对于RGB图像,16×16×3 = 768),并通过一个可训练的线性层投影到D维嵌入空间。
2. 位置嵌入: 由于Transformer编码器是置换不变的,必须注入位置信息。ViT使用可学习的一维位置嵌入,并将其添加到图像块嵌入中。值得注意的是,原始论文中二维感知位置嵌入(例如相对位置)并未带来显著改进,这表明模型能够从图像块内容本身学习空间结构。
3. [CLS] 标记: 借鉴自BERT,一个特殊的可学习标记被添加到序列的开头。其最终隐藏状态用作图像表示以进行分类。另一种方法(在后续工作中使用)是对所有图像块的输出进行平均。
4. Transformer编码器: 该序列通过L层多头自注意力(MSA)和MLP模块,每个模块前应用LayerNorm,模块后使用残差连接。原始的ViT-Base使用L=12,隐藏大小D=768,以及12个注意力头。
5. 分类头: 在[CLS]标记输出之上使用一个简单的MLP(或线性层)来生成最终的类别logits。
关键技术洞察——归纳偏置的权衡:
CNN具有强大的归纳偏置:局部性(卷积核关注小邻域)、平移等变性(无论位置如何,猫就是猫)以及层次化特征学习(边缘→纹理→部件→物体)。ViT几乎不具备这些特性——它必须从数据中学习。这就是为什么ViT在小型数据集(例如包含120万张图像的ImageNet-1K)上表现不如CNN,但在海量数据集(包含3亿张图像的JFT-300M)上表现出色的原因。该模型需要足够的数据来克服缺乏内置先验知识的问题。
性能基准测试:
| 模型 | 参数量 | 预训练数据 | ImageNet Top-1 准确率 | 吞吐量(图像/秒) |
|---|---|---|---|---|
| ViT-B/16 | 86M | ImageNet-21K | 81.8% | 1,120 |
| ViT-L/16 | 307M | ImageNet-21K | 85.2% | 620 |
| ViT-H/14 | 632M | JFT-300M | 88.6% | 310 |
| ResNet-152 | 60M | ImageNet-1K | 78.6% | 1,450 |
| EfficientNet-B7 | 66M | ImageNet-1K | 84.3% | 1,100 |
| ConvNeXt-L | 198M | ImageNet-21K | 87.5% | 890 |
*数据要点:ViT-H/14达到了最高准确率(88.6%),但其参数量是ResNet-152的10倍以上,是ConvNeXt-L的2倍以上。吞吐量的代价也很显著——ViT-H/14每秒仅处理310张图像,而ConvNeXt-L为890张。这揭示了核心权衡:ViT以计算效率为代价,提供了顶尖的准确率。*
开源生态系统:
GitHub上的官方仓库(google-research/vision_transformer)提供了JAX/Flax实现。然而,社区已将ViT移植到PyTorch(例如Phil Wang广受欢迎的`vit-pytorch`包,拥有超过10k星标)和Hugging Face Transformers。值得关注的后续仓库包括:
- DeiT(facebookresearch/deit):数据高效图像Transformer,使用知识蒸馏在仅ImageNet-1K上训练ViT,ViT-B达到了85.2%的准确率。
- Swin Transformer(microsoft/Swin-Transformer):引入了层次化特征图和移位窗口,在目标检测和分割任务上达到了SOTA。
- MAE(facebookresearch/mae):掩码自编码器,通过重建被掩码的图像块来预训练ViT,在下游任务上创下了新纪录。
关键参与者与案例研究
谷歌研究院(原创者):
ViT论文由Alexey Dosovitskiy、Lucas Beyer、Alexander Kolesnikov等人在Google Brain完成。他们的策略大胆:押注于扩展数据规模将释放Transformer在视觉领域的潜力。谷歌此后已将ViT集成到其Cloud Vision API中,并将其用作PaLI和PaLM-E等多模态模型的骨干网络。该公司的JFT-300M数据集仍然是专有的,这为谷歌在训练大型ViT变体方面提供了竞争优势。
Meta AI(Facebook研究院):
Meta是ViT最积极的采用者和改进者。他们的贡献包括:
- DeiT(2021年): 证明了ViT可以在没有海量数据集的情况下通过蒸馏进行训练,使该架构得以普及。
- MAE(2022年): 引入了用于ViT预训练的掩码自编码方法,ViT-H在ImageNet上达到了87.8%的准确率,并在检测/分割任务上创下了纪录。
- DINOv2(2023年): 自监督ViT,无需标签即可生成高质量视觉特征,被用于Meta的Segment Anything Model(SAM)。