Stonebubu的纸篓子

石头剪刀布!

【技术充电】从“图像即序列”到视觉基础模型的范式跃迁

一句话总结:ViT 把图像切成 patch,当作“视觉单词”喂给 Transformer,用全局注意力替代了 CNN 的局部卷积。它在大数据下刷新了视觉任务的性能上限,但也把计算复杂度和数据效率的矛盾推到了台前。

一、为什么是 ViT:CNN 的“围墙”与 Transformer 的“破墙”

2020 年之前,计算机视觉是 CNN 的天下。卷积核滑动、局部感受野、权重共享——这套设计在图像上工作得非常好,以至于很少有人质疑它。

但 CNN 有一个根本性的限制:它的感受野是逐步堆叠出来的。一个 3×3 卷积只看 3×3 邻域,要看到整张图,要么堆几十层,要么用空洞卷积或池化暴力扩大。对于“判断这张 CT 切片里肿瘤是否侵犯血管”这类需要远距离像素之间直接对话的任务,CNN 的“传话”效率太低了。

Transformer 恰好天生解决了这个问题。2017 年它在 NLP 领域被提出时,核心卖点就是任意两个位置直接交互——自注意力让序列中每个 token 都能“看到”所有其他 token,不管距离多远。

那么,能不能把图像也变成序列?

2020 年,Dosovitskiy 等人给出了答案:可以。把图像切成 16×16 的 patch,每个 patch 展平后线性投影成一个向量,这些向量就构成了一个“视觉句子”。ViT 由此诞生。

二、ViT 到底怎么工作的:一次极简的“去卷积化”

ViT 的架构可以用一句话概括:切块 → 投影 → 加位置 → 过 Transformer → 用 [CLS] token 分类。

2.1 图像如何变成“单词”

给定一张 224×224 的 RGB 图像,ViT 把它切成 196 个 16×16 的 patch。每个 patch 展平后是一个 768 维向量(16×16×3),再通过一个可学习的线性层投影到模型维度 D。这些投影后的向量就是 transformer 的输入 token。

关键在于:patch 之间没有任何重叠,也没有卷积操作。每个 patch 被当作一个独立的“视觉单词”,patch 之间的空间关系完全交给位置编码和注意力机制去学习。

2.2 [CLS] token 与位置编码

与 BERT 类似,ViT 在 token 序列最前面加一个可学习的 [CLS] token。这个 token 不属于任何 patch,它的作用是在注意力层中不断聚合全局信息,最终它的输出向量被用作整张图像的表示,送入分类头。

位置编码是另一个必需品。因为自注意力本身是置换不变的——打乱 token 顺序,输出会跟着打乱但模式不变。如果不加位置信息,模型根本不知道哪个 patch 在左上角、哪个在右下角。原始 ViT 使用可学习的 1D 位置编码,简单直接,在分类任务上表现足够好。

2.3 自注意力:真正干活的核心

自注意力的计算可以拆成三步:

第一步,生成 Q、K、V。每个 token 的向量分别乘以三个可学习的权重矩阵,得到 Query(我在找什么)、Key(我有什么标签)、Value(我携带的信息)。

第二步,计算注意力权重。用 Q 和所有 K 做点积,除以 (\sqrt{d_k}) 防止梯度消失,再 softmax 归一化:

$$\text{Attention}(Q,K,V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$

第三步,加权聚合。用注意力权重对 V 做加权求和,得到每个 token 的新表示。

“多头”的含义是:这个操作在多个平行的子空间中同时进行。有的头可能关注相邻 patch 的纹理连续性,有的头可能在捕捉全局的物体轮廓。最后把所有头的输出拼接起来,过一次线性投影,就得到了该层的输出。

三、ViT 的“代价”与“偿还”

3.1 数据饥渴:没有归纳偏置的代价

ViT 最受争议的一点是它对数据的贪婪。原始论文显示,在 ImageNet-1k(130 万张图)上训练时,ViT 的性能不如同等规模的 ResNet。只有在 JFT-300M(3 亿张图)上预训练后,ViT 才反超 CNN。

为什么?因为 CNN 的卷积核自带平移等变性和局部性——这是人类工程师为图像数据量身定制的先验知识。ViT 没有这些,它必须从数据中自己学出来。数据不够多,学到的就是有偏的、泛化差的表示。

这引出了一个深刻的结论:归纳偏置不是“越多越好”,而是“数据越多,人工偏置越可能成为瓶颈”。当数据规模跨过某个阈值,ViT 学到的表示比 CNN 的固定卷积核更灵活、更通用。

3.2 DeiT:给 ViT 装上“数据效率”

如果每次都要 3 亿张图才能用好 ViT,那它只能在 Google 内部玩。DeiT(Data-efficient Image Transformer)打破了这一限制。

核心思路是知识蒸馏:让 ViT 学生模型同时向 CNN 教师模型学习。引入一个专门的蒸馏 token,学生 ViT 同时优化分类损失和蒸馏损失。在仅使用 ImageNet-1k 的情况下,DeiT 达到了与 CNN 可比的性能。

DeiT 的意义不在于技术复杂度,而在于它证明了:ViT 的数据效率问题可以通过训练策略来缓解,而不仅仅是堆数据。

3.3 计算复杂度:注意力的“平方诅咒”

标准自注意力的复杂度是 (O(N^2)),N 是 token 数量。224×224 图像有 196 个 patch,看起来还好。但换成 1024×1024 的医疗影像呢?token 数变成 4096,注意力矩阵膨胀 400 多倍。视频更是灾难——帧数乘以每帧 token 数,序列长度轻松破万。

这就是 Swin Transformer 要解决的核心问题。Swin 的做法是局部窗口注意力:只在 7×7 的窗口内计算自注意力,复杂度从 (O(N^2)) 降到 (O(N))。但固定窗口会切断跨窗口信息流动,Swin 的巧思在于移动窗口:下一层的窗口分区偏移半个窗口大小,使信息能在层间跨窗口传递,逐步构建全局感受野。

Swin 的层次化设计还让 ViT 第一次真正适配了目标检测和分割任务——金字塔特征图回来了,检测头可以直接接上去。

四、ViT 现在用在哪些地方

4.1 图像分类:基准测试的“新常态”

ViT 在 ImageNet 上的表现已经不需要多说了。更大的意义在于医疗影像:BrainGraphNet-ViT 等混合架构将 ViT 的全局注意力与图神经网络结合,用于脑肿瘤分类。ViT 负责从 MRI 扫描中提取全局语义特征,GCN 负责建模病例之间的关系——这种“全局特征 + 关系推理”的组合,在需要综合多处证据的临床诊断场景中展现了潜力。

4.2 目标检测:DETR 的“无锚框革命”

DETR 是 ViT 在检测领域最具破坏性的应用。它彻底扔掉了锚框和 NMS,把检测变成一个集合预测问题:输入图像,输出一组物体框和类别,不需要任何后处理。

Transformer 的全局注意力天然适合建模物体之间的关系(“这个框和那个框重叠了,它们可能指向同一个物体”),这是手工设计的 NMS 做不到的。后续的 Mask2Former 把这一思路扩展到分割,统一了实例分割、语义分割和全景分割的框架。

4.3 视频与机器人:时空建模与边缘部署

视频理解把 ViT 从空间扩展到了时空。核心挑战是 token 数量爆炸。TimeSformer 和 ViViT 通过分解时空注意力或联合 token 化来应对,Video Swin 则把移动窗口推广到三维。

在机器人领域,ViT 的全局感知能力被用于导航任务。一项 2026 年的工作提出了任务驱动的 token 缩减框架:不是每帧都处理所有 patch,而是根据当前导航目标,动态修剪不相关的 token,并复用帧间稳定的视觉特征。在 NVIDIA Jetson Orin 上达到了 56.4 FPS,让 ViT 在边缘设备上跑实时视觉成为可能。

4.4 多模态与自动驾驶:统一潜在空间

BEVWorld 等工作把 ViT 用作多模态融合的统一框架:多相机图像和 LiDAR 点云被投射到同一个 BEV(鸟瞰图)潜在空间,Transformer 在这个统一空间里做对齐和融合,输出 3D 感知和未来占用预测。

UniAD 等端到端框架则把感知、预测和规划全部塞进一个 Transformer 管道,实现了“传感器到方向盘”的连贯推理。这是 ViT 从“视觉理解”走向“视觉决策”的标志性方向。

五、ViT 与当前前沿技术的关系

5.1 ViT vs Mamba:注意力不是唯一的答案

Mamba 是近年来对 Transformer 最认真的挑战。它基于选择性状态空间模型,线性复杂度,不需要注意力机制。

在视觉领域,VMamba 在 ImageNet 和 COCO 上已经展现出与 Swin 相当的性能,参数量却少 37%。VCMamba 更进一步,把卷积和多方向 Mamba 结合,在 ImageNet-1K 上达到 82.6% 的 Top-1 准确率。

但 Mamba 并非全面碾压。在细粒度局部特征的捕捉上,它不如卷积;在精确的长程依赖建模上,全注意力 ViT 仍然更可靠。当前的共识正在形成:卷积管局部细节,Mamba 管线性复杂度的序列建模,注意力管全局推理,三者融合的混合架构才是务实的选择。

5.2 ViT 与生成式模型:Diffusion Transformer 的崛起

ViT 的影响力早已溢出判别式任务。DiT(Diffusion Transformer)把 Transformer 作为扩散模型的去噪 backbone,取代了 U-Net,在 ImageNet 生成上取得了 SOTA。SiT 则把 Transformer 与流匹配结合。

这意味着什么?Transformer 正在成为视觉领域通用的“计算原语”。理解、检测、分割、生成,全部统一到同一套 token 交互框架下。你不再需要为不同任务设计不同架构,只需要换数据、换损失、换输出头。

5.3 自监督学习:释放 ViT 的真正潜力

ViT 对标注数据的贪婪催生了视觉自监督学习的繁荣。MAE(Masked Autoencoder)把 BERT 的“完形填空”搬到视觉:随机遮盖 75% 的 patch,让 ViT 从可见 patch 重建被遮盖的内容。DINO 和 iBOT 则通过自蒸馏学习语义特征,完全不用标签。

这些方法从根本上改变了 ViT 的训练范式:先在海量无标注数据上预训练,再在小规模标注数据上微调,已经成为视觉基础模型的标准流程。CLIP 更进一步,用 4 亿对图文数据训练 ViT,让视觉表示直接对齐语言空间,实现了零样本图像分类。

六、ViT 还是“最常用”的选择吗

简短的回答是:在中大规模通用视觉任务上,ViT 及其变体(尤其是 Swin)仍然是默认选择;但在边缘部署、超长序列和极致能效场景下,选择已经不再唯一。

一项 2026 年的无人机视觉综述明确指出:Swin Transformer 仍然是最广泛采用的骨干网络,因为它在精度和效率之间找到了最好的平衡。DETR 开创的端到端检测范式和 Mask2Former 的统一分割框架,本质上都建立在 Transformer 之上。

但“唯一最优”的时代已经结束了。医疗影像领域的综述强调,模型选择应由临床目标、数据特性和部署约束共同决定。Mamba 在长序列上线性复杂度的优势是结构性的,不是工程优化能弥补的。而在延迟敏感的嵌入式设备上,经过高度优化的轻量 CNN 或混合架构往往比纯 ViT 更实用。

七、ViT 没有回答的问题

ViT 的成功留下了一个耐人寻味的悖论:当模型不再依赖人工归纳偏置,它学到的究竟是什么?

注意力图经常被用来“解释” ViT 的决策,但注意力权重高不等于因果重要。一个头可能在关注背景噪声,却依然贡献了有用的表示。可解释性的缺失,在医疗、自动驾驶等高风险领域是真实障碍。

另一个未解的问题是效率与性能的边界。线性注意力、token 缩减、混合架构——这些方法都在试图打破 (O(N^2)) 的诅咒,但每一次效率提升似乎都伴随着某种能力的损失。是否存在一个架构,能同时拥有全局注意力的建模能力和线性复杂度的效率?Mamba 是最接近的候选,但它也并非万能。

ViT 不是终点。它打开了一扇门——用序列建模理解视觉世界——但门后的地图,还在绘制中。