# 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等模型均基于此架构进行改进和扩展。