Ch.06
Swin Transformer:从全局注意力到分层窗口结构
Swin Transformer
Patch 合并
patch 是把图像切成的小格;窗口 是一次看多大范围。W 只在窗内互看;SW 把窗平移一点,让邻格短暂相连。合并 让高宽减半、把特征通道堆得更深。
把 网格按棋盘拆成四个 组后,将相同位置先拼接,临时得到 (先保留信息)。随后经 LayerNorm→Linear,把关键语义压缩为 。即:空间变小,但语义通道以“先堆叠后压缩”的方式被保留。
입력 패치(머징 전)
Concat → LayerNorm
LayerNorm → Linear
在第5章学到的 ViT(Vision Transformer) 中,整张图像像是在一个超大会议厅里同时讨论(全局注意力)。效果强,但参与者(分辨率)一多,内存与计算会按平方爆炸(),这是致命痛点。
Swin Transformer(Shifted Window Transformer) 的解决方式非常巧妙:先只在小会议室(Window)里讨论;到下一层,把隔板稍微错开(Shift),让邻近小组交换信息;再通过 Patch Merging 把4个细粒度单元压成1个更高语义单元。这个“分而治之”的直觉如何对应到显著降耗的数学机制,就是本章重点。
公式怎么读(Swin 要点)
1) W-MSA(小会议室法则): 若窗口边长为 ,单窗口内相关性规模约为 。也就是把“全员大会”拆成多个小房间,控制计算量。
2) SW-MSA(错位隔板): 下一块中将窗口平移 ,并用注意力掩码只保留合法 Q–K 连接。这样既能跨窗口融合信息,又能避免无效连接。
3) Patch Merging(信息保真视角):
① 先把 的4个 patch(各 通道)在同一位置 concat,临时变成 (先堆叠,不先丢信息)。
② 再用 Linear 压到 。
因此空间变为 ,同时通过增通道缓冲信息损失。
4) 为什么是“分辨率↓、通道↑”?(更深入)
① 信息容量视角
可粗看为 。若空间缩到 1/4 而通道不变,表达容量会骤降,细节易丢失;所以用 做缓冲。
② 算力与表达力平衡
维持高分辨率很贵,只增通道也很贵。Swin 先降 token 数(省显存/算力),再用通道增加每个 token 的语义密度。
③ 上下文/感受野视角
深层需要更多全局结构信息。分辨率下降带来更大上下文,通道上升提供更丰富语义编码空间。
④ 工程一句话
只降分辨率会“失忆”,只升通道会“算力爆炸”。Swin 的分辨率↓+通道↑是两者之间的工程折中。
Swin Transformer:直觉与公式的交汇点
1. 窗口注意力(W-MSA):在小会议室里给计算量“减脂”
比喻: 如果所有人同时发言(ViT),计算会非常重。Swin 把图像切成 7x7 级别的小会议室(窗口),只允许同一窗口内部做注意力。
核心公式: 总 patch 数记为 ,窗口边长记为 。ViT 复杂度是 ,W-MSA 变为 。因为 通常是固定小常数(如7),整体可视为接近 的线性扩展。
2. 移位窗口(SW-MSA):错位隔板实现跨组沟通
比喻: 永远只和本房间交流会形成信息孤岛。下一层把隔板向右下平移半窗后,原本隔壁的 patch 会进入同一窗口,从而发生信息交换。
核心公式: 窗口通常平移 个 patch。边界碎片通过 cyclic shift 与 attention mask 优雅处理,避免无效连接而不显著增加额外内存。
3. Patch Merging:4个员工压成1个主管
比喻: 越往深层,越要把细碎局部意见汇总成全局语义。于是把相邻 (共4个)patch 合并。
核心公式: 空间分辨率降到 ,通道先涨到 ,再经 Linear 压到 。于是层级越深,空间越小但语义越强,形成多尺度金字塔。
4. 双连续块(Two-Successive Blocks):总是成对出现
概念: Swin 总是以(普通窗口 → 移位窗口)的二连击工作。
* :第1步,先在本窗口内交流
* :第2步,错位后跨邻域交流
为何重要
绕开沉重 的工程胜利
ViT 在分辨率上升后会出现二次方增长,普通 GPU 很快吃不消。Swin 将其压到近线性扩展,让 4K 自动驾驶视频、病理全切片(WSI)等超高分辨率数据训练变得可落地,显著降低 OOM 风险。
密集预测(Dense Prediction)的范式转变
分类任务 ViT 已可胜任,但检测与语义分割要求多尺度表达,因为目标尺寸差异巨大。Swin 通过 Patch Merging 将金字塔结构原生引入 Transformer,使其在大量场景中替代传统 CNN 主干。
统一视觉主干(Backbone)的可能
过去常见“分类用 ViT、检测用 ResNet”的割裂方案。Swin 之后,分类/检测/分割可共享同类主干,显著降低工程维护与研究成本。
如何使用
1. 自动驾驶与智能 CCTV(密集预测主战场)
自动驾驶 4K 画面里,既有远处很小的行人(小像素),也有贴近镜头的大卡车(大像素)。Swin 依靠 Patch Merging(金字塔层级),能在分割任务中同时兼顾小目标与大目标,做像素级边界分离,因此成为下一代车载视觉的重要核心方案。
2. 吉像素级医疗与卫星影像分析
病理切片(WSI)和卫星图常达到数万像素级分辨率。过去很多 ViT 方案会因显存压力难以落地,而 Swin 通过 窗口化计算 更易处理超大图。它既能看局部细胞形态(窗口内),也能通过层级合并保留整体组织/地形语境。
3. 神奇的画质修复(SwinIR)
从低清到 4K 的超分辨率、老照片去噪等任务中,Swin 被广泛采用。它在窗口内细致参考邻域像素恢复细节,再通过 Shift 让窗口移动并融合全局上下文,使纹理更自然、不违和。
4. AI 生态里的“万能心脏(Backbone)”
工业落地中,Swin 往往不是单独使用,而是作为系统内部可替换主干。团队常把 Mask R-CNN、YOLO 等框架中的传统主干(如 ResNet)替换为 Swin,以提升整套检测/分割系统的整体性能。
小结
💡【核心速记卡】
* 运行哲学: 能拆就拆(W-MSA),隔墙就错位再连(SW-MSA),层数加深就四合一压缩(Patch Merging)。
* 在视觉AI中的意义: 既缓解了高分辨率下 Transformer 的 致命瓶颈,又吸收了 CNN 的多尺度金字塔优势。
* 工程心法: “输入尽量用 32 倍数,训练先用预训练权重,显存不足时优先调 batch 和窗口大小 。”
解题提示
Swin 解题通用框架(先看这3行)
1) 先判断题目在问 W-MSA / SW-MSA / Patch Merging 哪一块。
2) 若是计算题,先整理单位:token 数 、窗口大小 、通道 、分辨率 。
3) 只要出现 merging,立刻套用基础变换:
* 空间:
* 通道:
“哪个不是 Swin 核心?”→ 每层固定全局注意力不是核心。
示例(判断)
“Patch Merging 会提升空间分辨率。”→ 错。答案 0
示例(场景)
“高分辨率 OOM,先做什么?”→ 按 batch↓、分辨率↓、窗口大小()↓顺序排查。
按题型快速示例(版式与 Ch05 相同,仅内容换成 Swin)
示例(选择计算)
“ 时全局注意力的 是多少?”→ 。
示例(累积合并)
“Patch Merging 做3次后分辨率是多少?”→ 每次边长减半,3次后为 ,即 。
示例(配置/计数)
“正方网格每边 8 个窗口,总窗口数?”→ 。
示例(综合推理)
“输入 ,patch ,做1次 merging 后 token 数?”
1) 初始 token:
2) 一次 merging:
→ 答案 784
实战一句话
计算题先分清“谁变成 1/2、谁变成 2 倍”就能快速落地。(空间变小,语义通道变深)