从 ViT 到 SAM:发展主线总表
| 阶段 | 代表方法 | 核心问题 | 主要贡献 |
|---|---|---|---|
| 图像 Transformer 起点 | ViT | 图像能否像文本一样处理? | 将图像切成 patch token,用 Transformer 编码 |
| 数据高效训练 | DeiT | ViT 能否在中等规模数据上训练? | 蒸馏和训练策略降低 ViT 训练门槛 |
| 密集任务适配 | PVT / PVTv2 | Transformer 如何适配检测和分割? | 金字塔结构、多尺度特征、线性注意力 |
| 通用视觉骨干 | Swin Transformer | 如何降低高分辨率 attention 成本? | 层级结构、窗口注意力、移动窗口机制 |
| 像素重建自监督 | MAE | ViT 能否通过重建图像学习表示? | 高 mask ratio + 非对称 encoder-decoder |
| 视觉 token 预测 | BEiT | 图像能否像 BERT 一样预测 token? | 使用 visual tokenizer 构造离散预测目标 |
| 视觉词表 | VQ-VAE / VQGAN / BEiT v2 | 图像 token 从哪里来? | 将连续图像转换成离散 visual token |
| 自蒸馏学习 | DINO | 无标签下 ViT 能否学到语义结构? | teacher-student 自蒸馏,注意力图涌现目标区域 |
| 图文多模态 | CLIP | 图像如何与语言对齐? | 图文对比学习,zero-shot 分类 |
| 分割基础模型 | SAM | ViT 能否成为通用分割编码器? | promptable segmentation + SA-1B + ViT image encoder |
从这张表可以看出,ViT 的发展并不是简单地“模型越来越大”,而是围绕几个核心问题逐步展开。
ViT 发展的第一条主线:从局部建模到全局建模
CNN 的核心是局部卷积。
ViT 的核心是全局 self-attention。
这种变化使视觉模型从“局部模式堆叠”转向“全局关系建模”。
在 CNN 中,如果两个区域距离很远,它们的信息交互需要经过多层卷积逐步传递。
而在 ViT 中,任意两个 patch token 都可以通过 self-attention 直接交互。
这对很多任务都很重要。
例如:
图像分类需要全局语义
目标检测需要区域关系
语义分割需要前景背景关系
图文对齐需要全局图像概念
SAM 分割需要理解 prompt 和目标区域的关系
所以 ViT 的第一条主线是:
从局部卷积建模走向全局 token 关系建模。
ViT 发展的第二条主线:从监督学习到自监督预训练
最初的 ViT 主要依赖监督训练。
后来 MAE、BEiT、DINO 等方法证明:
ViT 非常适合自监督预训练。
原因在于,ViT 的 patch token 结构天然适合构造自监督任务。
可以遮住 patch,然后预测像素:MAE
可以遮住 patch,然后预测 visual token:BEiT
可以构造不同增强视图,然后做自蒸馏:DINO
这些方法虽然形式不同,但本质上都在利用图像自身构造监督信号。
自监督预训练的意义是:不依赖人工标签,也可以训练出强大的视觉表示。
这对大规模视觉模型非常重要,因为人工标注永远昂贵且有限。
ViT 发展的第三条主线:从固定类别到开放语义
传统分类模型通常有固定类别空间。
例如 ImageNet 分类器只能输出固定类别。
而 CLIP 改变了这一点。
CLIP 通过自然语言监督,让图像表示和文本表示对齐。
这样,类别不再是固定分类头中的一个索引,而是可以由自然语言 prompt 动态定义。
例如:
a photo of a dog a satellite image of a city a medical image of a tumor a diagram of a neural network这些文本都可以作为类别或检索条件。
这说明 ViT 的能力从 fixed-label classification 扩展到了 open-vocabulary recognition。
这条主线可以概括为:
从封闭类别识别走向开放语义理解。
ViT 发展的第四条主线:从图像级理解到像素级理解
ViT 最初主要用于图像分类。
分类任务只需要输出一个图像级标签。
但是视觉任务不只有分类,还有检测、分割、跟踪、交互式编辑等。
这些任务要求模型理解空间结构。
PVT 和 Swin 解决了多尺度特征和密集预测适配问题。
DINO 展示了 ViT 注意力图中会涌现目标区域。
SAM 则进一步把 ViT 用作 dense image encoder,根据 prompt 输出像素级 mask。
这说明 ViT 的角色发生了变化:
图像分类 backbone ↓ 通用视觉表征学习器 ↓ 多模态视觉编码器 ↓ 分割基础模型编码器因此,ViT 的发展不是停留在图像级分类,而是逐渐进入像素级空间理解。
ViT 发展的第五条主线:从结构创新到数据和任务定义创新
早期研究更关注模型结构。
例如:
如何切 patch? 如何设计位置编码? 如何降低 attention 计算量? 如何构建层级结构?后来研究逐渐发现:模型结构固然重要,但数据和任务定义同样重要。
MAE 的成功不仅来自 ViT,还来自高比例 mask 的任务设计。
BEiT 的成功依赖 visual tokenizer 构造预测目标。
DINO 的成功依赖 teacher-student 自蒸馏和多视图一致性。
CLIP 的成功依赖大规模图文对和对比学习任务。
SAM 的成功依赖 promptable segmentation 任务和 SA-1B 数据引擎。
所以 ViT 的发展告诉我们:
基础模型的能力不只来自网络结构,还来自预训练任务、数据规模和任务定义。
这也是现代视觉模型发展的重要趋势。
为什么 ViT 适合成为视觉基础模型骨架?
ViT 之所以适合成为视觉基础模型骨架,主要有几个原因。
1. 统一的 token 化建模方式
ViT 把图像转换成 patch token。文本模型把文本转换成 word token 或 subword token。视频可以转换成时空 token。音频可以转换成频谱 token。这说明 Transformer 具有很强的模态统一能力。
2. 强大的可扩展性
Transformer 在参数规模、数据规模和计算规模增大时,通常具有较好的扩展潜力。这也是它能够成为大模型主干的重要原因。
3. 全局关系建模能力
Self-attention 能直接建模长距离依赖。这对图像理解、图文对齐、视频理解、分割任务都很重要。
4. 容易结合不同预训练目标
ViT 可以结合多种训练方式:
监督分类
知识蒸馏
masked image modeling
self-distillation
contrastive learning
promptable segmentation
这种灵活性使它非常适合作为基础模型骨架。
5. 容易扩展到多模态
CLIP 证明,ViT 可以和文本 Transformer 对齐。
后续很多多模态模型都可以把 ViT 作为视觉编码器,再接语言模型或跨模态模块。