12 从 ViT 到 Swin:视觉 Transformer 主干网络的发展脉络总结

前言

到目前为止,我们已经整理了视觉 Transformer 发展中的几个关键模型:

ViT

DeiT

PVT

PVTv2

Swin Transformer

如果单独看每一篇论文,读者可能会觉得每个模型都有自己的结构、公式和训练细节。但是如果把它们放在一条主线上看,会发现它们其实是在连续回答同一个问题:

Transformer 如何从一个图像分类模型,逐步发展成通用视觉骨干网络?

ViT 证明了 Transformer 可以用于图像分类;

DeiT 解决了 ViT 对大规模数据依赖较强的问题;

PVT 和 PVTv2 解决了 ViT 不适合密集预测的问题;

Swin Transformer 进一步通过窗口注意力和层次化结构,让 Transformer 成为分类、检测、分割等任务中的通用 backbone。

ViT 原论文提出将图像切成 patch token 后直接输入 Transformer;

DeiT 则提出在 ImageNet-only 条件下训练高性能无卷积 Transformer,并引入 distillation token;

PVT 和 Swin 都明确面向 dense prediction 和 general-purpose backbone 目标。

1. ViT:视觉 Transformer 的起点

ViT 的全名是:Vision Transformer

对应论文是:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

ViT 的核心思想非常简单:把图像切成固定大小的 patch,把每个 patch 当作 token,然后输入标准 Transformer Encoder。

例如,对于一张 224×224 的图像,如果 patch size 为 16×16,那么图像会被切成:

14 × 14 = 196 个 patch。再加上一个 class token,最终输入 Transformer 的 token 数量是:197

ViT 的结构可以总结为:

Image

Patch Embedding

Class Token + Position Embedding

Transformer Encoder

Classification Head

ViT 的意义在于,它证明了卷积并不是图像识别唯一可行的主干结构。只要有足够大规模的数据预训练,标准 Transformer 也可以在图像分类任务上取得很强的效果。ViT 原论文的核心设定就是将图像拆分为 patch 序列,并尽量保持标准 Transformer 结构不变。

不过,ViT 也留下了明显问题:

  1. 对大规模数据依赖较强;

  2. 缺少 CNN 那样的局部归纳偏置;

  3. 结构偏向图像分类;

  4. 不天然输出多尺度特征;

  5. 全局 self-attention 在高分辨率下计算开销很大。

因此,ViT 是视觉 Transformer 的起点,但不是终点。

2. DeiT:让 ViT 更容易训练

ViT 提出后,一个现实问题很快出现:如果没有超大规模数据和算力,普通研究者能不能训练出好用的 ViT?DeiT 就是为了解决这个问题提出的。DeiT 的全名是:Data-efficient Image Transformer

对应论文是:

复制代码
Training data-efficient image transformers & distillation through attention

DeiT 的目标是:

复制代码
不依赖超大规模外部数据,也能把 ViT 训练好。

DeiT 的关键贡献主要有两个。

第一,它总结了一套更强的 ViT 训练 recipe,包括数据增强、正则化、优化器和训练策略等。

第二,它提出了专门适配 Transformer 的蒸馏方法,也就是:distillation token

标准 ViT 的输入序列是:

复制代码
[CLS], patch_1, patch_2, ..., patch_196

DeiT distilled model 的输入序列变成:

复制代码
[CLS], [DIST], patch_1, patch_2, ..., patch_196

其中:

复制代码
CLS token:学习真实标签监督;
DIST token:学习 teacher model 的蒸馏监督。

DeiT 论文指出,它在只使用 ImageNet 的条件下训练了高性能无卷积 Transformer,并引入了面向 Transformer 的 teacher-student 蒸馏策略;其 reference ViT 在无外部数据条件下达到 83.1% ImageNet top-1 accuracy。

所以,DeiT 的核心意义不是改变 ViT 的基本结构,而是回答:

如何让 ViT 在有限数据和有限资源下训练得更好?

3 PVT:让 Transformer 适合密集预测

ViT 和 DeiT 主要面向图像分类。但是,计算机视觉中还有大量任务不是分类,而是密集预测,例如:目标检测,实例分割,语义分割,关键点检测。这些任务不仅要知道"图像里有什么",还要知道:目标在哪里?每个像素属于什么类别?不同大小的目标如何同时识别?

这就要求模型具备多尺度特征输出。

CNN backbone 天然适合这个任务,因为 CNN 通常会逐阶段下采样,形成类似:

C2, C3, C4, C5

的多尺度特征。

但是原始 ViT 通常是单尺度 token 序列,不适合直接接入 FPN、RetinaNet、Mask R-CNN、Semantic FPN 等密集预测框架。PVT 正是为了解决这个问题提出的。PVT 的全名是:Pyramid Vision Transformer。它的核心思想是:

把 CNN 的金字塔结构引入 Transformer,让 Transformer 也能输出多尺度特征。

PVT 的结构是四阶段金字塔:

Stage 1: H/4 × W/4

Stage 2: H/8 × W/8

Stage 3: H/16 × W/16

Stage 4: H/32 × W/32

因此,它可以输出:F1, F2, F3, F4。

这些特征可以直接接入检测和分割框架。

PVT 论文明确指出,它与专门用于分类的 ViT 不同,目标是克服 Transformer 迁移到密集预测任务时的困难;PVT 通过 progressive shrinking pyramid 获得高分辨率输出并降低大特征图计算,能够作为多种视觉任务中的统一 backbone。

PVT 的另一个核心模块是:Spatial-Reduction Attention,简称 SRA

SRA 的思想是:Q 保持原始 token 数量;K 和 V 先做空间降采样;再计算 attention。

这样可以将 attention matrix 从:N × N,降低为:N × (N / R²),从而缓解高分辨率下的计算压力。所以,PVT 的核心意义是:让 Transformer 从图像分类模型,第一次比较系统地走向密集预测 backbone。

4. PVTv2:让金字塔 Transformer 更高效

PVT 解决了 ViT 不适合密集预测的问题,但 PVTv1 仍然不完美。

主要问题包括:

  1. 非重叠 patch embedding 可能破坏局部连续性;

  2. 固定 position embedding 对变分辨率输入不够友好;

  3. SRA 在高分辨率下仍然有计算开销;

  4. FFN 中缺少显式局部空间建模。

PVTv2 就是在 PVTv1 基础上的改进版。PVTv2 的核心改进有三个:

  1. Overlapping Patch Embedding

  2. Convolutional Feed-Forward Network

  3. Linear Complexity Attention

PVTv2 论文明确提出,它通过这三个设计改进 PVTv1:线性复杂度注意力、重叠 patch embedding 和卷积前馈网络,从而降低计算复杂度并提升分类、检测、分割等任务性能。

PVTv1 问题 PVTv2 改进
patch 之间不重叠,局部连续性弱 Overlapping Patch Embedding
固定位置编码不适合变分辨率 Convolutional FFN 引入隐式位置建模
高分辨率 attention 仍然偏重 Linear SRA 降低复杂度

PVTv2 的意义在于:它说明视觉 Transformer 不能只依赖全局 attention,还需要局部连续性、卷积式位置建模和更高效的 attention 设计。这也是视觉 Transformer 后续发展的一个重要趋势:不是越"纯 Transformer"越好,而是要针对视觉任务引入合适的结构先验。

5. Swin Transformer:窗口注意力与通用视觉骨干

Swin Transformer 是这一阶段中非常重要的模型。它的全名是:

复制代码
Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

Swin 的目标是:

构建一个真正适合分类、检测和分割的通用视觉 Transformer backbone。

Swin 的核心设计有三个:

复制代码
1. Hierarchical structure
2. Window-based Self-Attention
3. Shifted Window

其中,层次化结构用于形成多尺度特征;窗口注意力用于降低高分辨率下的 attention 复杂度;shifted window 用于解决不同窗口之间信息不能交互的问题。Swin Transformer 的论文摘要中明确指出,它通过 shifted windows 构建层次化 Transformer,使 self-attention 限制在局部窗口内计算以提升效率,同时允许跨窗口连接,并且具有相对于图像尺寸的线性复杂度,可用于分类、检测和分割等任务。Swin 和 PVT 都解决密集预测问题,但路线不同。PVT 的思路是:

复制代码
压缩 K/V,让 query 看压缩后的全局信息。

Swin 的思路是:

复制代码
限制 attention 在局部窗口内计算,再通过 shifted window 实现跨窗口交互。

也就是说:

复制代码
PVT:降低全局 attention 的 K/V 长度;
Swin:直接把 attention 限制在局部窗口内。

Swin 的成功说明:

对视觉任务来说,局部建模、层次结构和高效跨区域交互非常重要。

模型 核心目标 核心模块 特征结构 Attention 方式 主要适用任务
ViT 证明 Transformer 可用于图像分类 Patch Embedding + CLS Token 单尺度 全局 MSA 分类
DeiT 提高 ViT 数据效率 Distillation Token + 蒸馏训练 单尺度 全局 MSA 分类
PVT 让 Transformer 适合密集预测 金字塔结构 + SRA 多尺度 SRA 分类、检测、分割
PVTv2 提升 PVT 效率和局部建模 Overlap Patch + CFFN + Linear SRA 多尺度 SRA / Linear SRA 分类、检测、分割
Swin 构建通用视觉 backbone Window Attention + Shifted Window + Patch Merging 多尺度 W-MSA / SW-MSA 分类、检测、分割

6 .从去卷积到融合卷积的变化

一个有趣的问题是:ViT 最初强调少用卷积,为什么后续模型又不断引入类似 CNN 的设计?

例如:

PVT:金字塔结构

PVTv2:overlapping patch embedding、DWConv、convolutional FFN

Swin:局部窗口、层次化结构、patch merging

这些设计其实都带有 CNN 的影子。

原因很简单:图像不是普通序列,图像有强空间结构。

视觉任务天然需要:

局部连续性

空间邻域关系

多尺度结构

边界信息

平移相关性

高分辨率细节

纯 Transformer 的全局建模能力很强,但如果完全忽略图像空间先验,训练和计算都会变得困难。因此,后续视觉 Transformer 并不是简单坚持"完全无卷积",而是在 Transformer 框架中引入更适合视觉的结构偏置。

可以这样理解:

ViT:证明 Transformer 可以处理图像;
后续模型:证明 Transformer 需要适配图像结构。

这是视觉 Transformer 发展的关键转折。

复制代码
相关推荐
嗝o゚6 小时前
昇腾CANN cann-recipes-train 仓:在大模型上做微调是什么体验
人工智能·chatgpt·cann
格桑阿sir6 小时前
02-大模型智能体开发工程师:Transformer架构核心原理
深度学习·ai·架构·llm·transformer·agent·智能体
2601_957882246 小时前
多平台数字内容集群的版权合规与风控体系:从查重检测到IP保护的技术实践
人工智能·网络协议·tcp/ip
俊哥V6 小时前
每日 AI 研究简报 · 2026-05-23
人工智能·ai
udc小白6 小时前
EXCEL实现MLP实例
人工智能·深度学习·神经网络·机器学习
天下财经热6 小时前
快进商店闪耀2026中国零售业博览会,远程值守全家桶独家首发,重塑云值守解决方案
大数据·人工智能·物联网
2601_957882246 小时前
GEO 2.0时代:当大模型开始“理解“品牌,优化逻辑彻底变了
人工智能
码农阿强6 小时前
Omni-Flash引擎及组件库技术解析与中转站接入实践
人工智能·ai·aigc·ai编程·ai写作·gpu算力
Y敲键盘的地方6 小时前
第6章 类型驱动开发
人工智能