4.9 KiB
Swin Transformer架构
概述
Swin Transformer(Shifted Windows Transformer)是微软研究院于2021年提出的视觉Transformer架构,其核心创新在于引入了层次化结构和Shifted Window机制,在保持高效计算的同时实现了对图像像素的层次化建模。Swin Transformer最初用于图像分类,随后成为目标检测、语义分割等多个视觉任务的基础 backbone。
1. 层次化结构(Hierarchical Architecture)
1.1 多阶段设计
Swin Transformer采用类似CNN的层次化结构,通过Patch Merging实现分辨率的逐步降低:
| 阶段 | 特征图尺寸 | 通道数 | Window大小 |
|---|---|---|---|
| Stage 1 | H/4 × W/4 | 96 | 7×7 |
| Stage 2 | H/8 × W/8 | 192 | 7×7 |
| Stage 3 | H/16 × W/16 | 384 | 7×7 |
| Stage 4 | H/32 × W/32 | 768 | 7×7 |
1.2 Patch Merging
每个阶段的开始,通过Patch Merging操作将相邻的2×2 patch合并:
- 输入:4个patch的token(维度为C)
- 输出:1个token,通道数变为4C
- 降采样比例:2×
1.3 与ViT的对比
- ViT:单一尺度的特征图,全局注意力计算复杂度为O(n²)
- Swin:层次化多尺度特征图,Window内注意力复杂度为O(M²×n),其中M是window大小(默认7)
2. Shifted Window机制
2.1 Window-based Self-Attention
标准的Self-Attention计算复杂度为O(n²),对于高分辨率图像而言计算量巨大。Swin Transformer将图像划分为不重叠的Windows,每个Window内独立计算注意力。
计算过程:
输入特征图划分为 (H/M) × (W/M) 个Windows
每个Window包含 M×M 个patches
Window内计算自注意力,复杂度:O(M²×n)
2.2 Shifted Window Partition
连续两个Swin Transformer Block采用不同的Window划分方式:
W-MSA(Window MSA):
- 采用常规的Window划分
- 无跨Window信息交互
SW-MSA(Shifted Window MSA):
- Window偏移量为(M/2)
- 引入跨Window的连接
- 实现全局感受野
位移示意:
Block 1 (W-MSA): Block 2 (SW-MSA):
┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐
│ A │ B │ C │ D │ │ │ E │ F │ │
├───┼───┼───┼───┤ ├───┼───┼───┼───┤
│ E │ F │ G │ H │ -> │ I │ J │ K │ L │
├───┼───┼───┼───┤ ├───┼───┼───┼───┤
│ I │ J │ K │ L │ │ │ M │ N │ │
├───┼───┼───┼───┤ └───┴───┴───┴───┘
│ M │ N │ O │ P │ ↓
└───┴───┴───┴───┘ 带padding的shifted划分
2.3 高效计算策略
Cyclic Shift: 将移位后的区域划分为多个区域,分别计算注意力后还原 Mask机制: 使用mask避免无效的跨Window注意力计算
3. 局部注意力与全局注意力的结合
3.1 局部注意力机制
每个Window内的自注意力捕获局部特征:
- 捕获同一局部区域的像素级关系
- 计算高效,适合高分辨率特征图
- 通过QKV共享和相对位置编码增强局部建模能力
3.2 跨Window信息交互
通过Shifted Window机制实现跨Window信息传递:
- 相邻Block之间的Window偏移建立连接
- 信息沿着shift方向流动到相邻Window
- 经过多层堆叠后,感受野逐步扩大
3.3 相对位置编码
Swin Transformer采用相对位置偏置(Relative Position Bias):
Attention(Q, K, V) = Softmax(\frac{QK^T}{\sqrt{d}} + B)V
其中B是可学习的相对位置偏置矩阵,维度为(M²+1)×(M²+1),M为Window大小。
3.4 层次化感受野
经过4个阶段的处理,感受野逐步扩大:
| 阶段 | 有效感受野 |
|---|---|
| Stage 1 | 局部7×7 |
| Stage 2 | 局部14×14 |
| Stage 3 | 局部28×28 + 部分跨Window |
| Stage 4 | 全局感受野 |
4. 关键技术创新总结
| 技术 | 作用 |
|---|---|
| Patch Merging | 实现层次化结构,下采样特征图 |
| Window Partition | 将全局注意力转化为局部,降低复杂度 |
| Shifted Window | 建立跨Window连接,扩大有效感受野 |
| Cyclic Shift + Mask | 高效实现shifted window attention |
| Relative Position Bias | 增强局部建模能力,保留空间信息 |
5. 模型变体
| 模型 | 参数量 | Window大小 | 适用场景 |
|---|---|---|---|
| Swin-T | 28M | 7 | 轻量级应用 |
| Swin-S | 50M | 7 | 平衡精度与速度 |
| Swin-B | 88M | 7 | 标准应用 |
| Swin-L | 197M | 7 | 大型模型/预训练 |
Swin Transformer的层次化设计和Shifted Window机制使其成为视觉领域的基础backbone,后续的Swin-V2、Swin-UNet等模型均基于此架构进行改进和扩展。