图像中的 Transformer:ViT 与 Swin 的原理和对比

928 阅读5分钟

图像中的 Transformer:ViT 与 Swin 的原理和对比


前言

Transformer 最初是为自然语言处理(NLP)设计的,代表作如 BERT 和 GPT 系列。但这个经典模型架构其实也能“看图”——甚至在图像识别、检测和分割等任务中表现得比卷积神经网络(CNN)还要好。

本文将带你从 Transformer 的基本原理出发,逐步深入了解 ViT 和 Swin Transformer 的核心结构与思想演进,并穿插作者本人的学习思考和个人理解。


一、什么是 Transformer?

Transformer 最初由 Google 在 2017 年提出,出现在论文《Attention is All You Need》中。

其核心思想是:

抛弃传统的循环结构(如 RNN、LSTM),通过自注意力机制(Self-Attention)一次性处理整个序列。

Transformer 的核心模块

  • Embedding:把词变成向量
  • Self-Attention:建模序列中任意两个词之间的联系
  • 多头注意力机制(Multi-Head Attention) :增强模型对不同语义特征的捕捉能力
  • 前馈网络(Feed Forward) :非线性特征变换
  • 残差连接 + 层归一化:帮助训练更深层网络

个人理解

Transformer 更像是一种“信息加权聚合机制”,它根据每个词的重要性来自适应提取和融合上下文信息。在 NLP 中,它完美解决了长距离依赖问题。那么,它能否迁移到图像领域?于是,就有了——Vision Transformer。


二、ViT:把图像变成“句子”的视觉 Transformer

背景

CNN 长期统治视觉领域,因为卷积天然能提取局部特征。但它缺乏全局建模能力。而 Transformer 反过来:它天生能抓住全局信息,但没有空间结构的先验

ViT 的提出者正是 Google,他们在 2020 年提出了 ViT(Vision Transformer)并用论文标题《An Image is Worth 16x16 Words》作出经典比喻。


ViT 架构

原始图像(如224x224x3)
↓
切分成 Patch(如16x16)
↓
展平每个 Patch + 线性嵌入(如768维)
↓
加上位置编码
↓
输入标准 Transformer Encoder
↓
输出分类结果(使用 [CLS] Token)

设计细节

  • 将图像划分为固定大小的小块 patch,每块看成一个“词”
  • 加入可学习的位置编码,弥补 Transformer 没有位置信息的缺陷
  • 引入 [CLS] Token 表示整个图像,最后用它来分类
  • 整个模型就是一个“纯Transformer”,没有卷积!

优点

  • 全局感知能力强
  • 架构简单统一,易于迁移和扩展
  • 易于和语言模型融合(如 CLIP)

缺点

  • 对数据量非常敏感(ImageNet-1k 训练不稳定)
  • 缺乏局部归纳偏置,难以捕捉细粒度特征
  • 不具备金字塔结构,不适合多尺度任务如检测/分割

个人思考

深度学习模型其实并不是非要“卷积”不可。只要我们找到合适的表达方式,即使把图像变成“词”处理也能奏效。但这种做法对数据要求极高,不能像CNN那样“即插即用”。


三、Swin Transformer:把 Transformer 做成“像卷积一样”的视觉模型

如果说 ViT 是“语言模型的视觉版”,那 Swin Transformer 就是“视觉友好的 Transformer”。

它由微软亚洲研究院在 2021 年提出,名字中的 “Swin” 是 “Shifted Window”的缩写,主打窗口式注意力机制。


Swin 的核心创新

1. 层次结构(Pyramid)
  • 类似 CNN 的 stage1~4:分辨率逐步下降,通道数逐步增加
  • 更适合多尺度任务,比如目标检测、分割等
2. 局部注意力(Window Attention)
  • 将特征图划分成局部窗口(如 7x7)
  • 在每个窗口内做自注意力(避免全图注意力的高计算量)
3. 滑动窗口机制(Shifted Window)
  • 每隔一层把窗口“错开一点”,让不同区域的信息能融合
  • 实现跨窗口的信息传播
4. 高效可扩展
  • 参数少,计算量低,速度快
  • 可直接接入如Faster-RCNN、UPerNet等框架

架构概览

输入图像 → Patch划分 → Swin Stage1 → Stage2 → Stage3 → Stage4 → 分类/检测/分割任务头

优点

  • 比ViT更高效,收敛更快
  • 引入空间先验,更适合视觉任务
  • 灵活扩展,多任务适配强

个人理解

Swin 就像 Transformer 界的“ResNet”:它兼顾了模型的表达能力与工程效率,真正把 Transformer 做成了可以落地的视觉工具。


四、三者横向对比总结

特性TransformerViTSwin Transformer
初始领域NLP视觉分类视觉分类、检测、分割等
建模方式全局自注意力Patch+全局自注意力滑窗局部注意力 + 分层结构
先验结构有(局部+层次)
对小数据敏感性
多任务适应性一般
是否保留CNN思路是(仿CNN结构)

个人的思考与感悟

作为刚接触CV Transformer的学习者,我最大的体会是:

模型结构不是在“卷炫技”,而是在不断寻找数据的本质表示方式。

  • Transformer 代表了一种“全局建模”的思维方式;
  • ViT 是跨模态的勇敢尝试,虽然有缺陷,但证明了可能性;
  • Swin Transformer 是工程与理论的平衡,让 Transformer 真正走入工业界。

我们不必急于掌握 Transformer 所有细节,但一定要理解其核心思想——建模依赖关系的注意力机制