ARTICLE · 1313520
Swin Transformer 源码精读
Swin Transformer 源码精读
ICCV 2021 的最佳论文给了 Swin Transformer,微软亚洲研究院这套架构,把视觉 Transformer 真正推开了。
之前 ViT 有两个坑。全局注意力算大图太费显存,输出又只有一层特征。Swin 的解法很实在:像 CNN 那样逐级下采样,每级内部只做局部窗口注意力。计算量从图像大小的平方,降到大小乘窗口大小——大图终于能算了。
但纯窗口有个致命毛病:窗口之间不通信,信息被网格硬生生切断。移位窗口就是来补这个洞的。下一层窗口往下往右各挪半格,让相邻内容进入彼此注意力范围。两层组合,感受野自然就扩大了。
代码里最巧的是 masked attention。移位后边界窗口大小不一,它用填充加掩码统一成规则批次。几十行代码,却是整个架构能跑起来的工程支点。
成绩也硬。ImageNet-1K 分类 84.5、COCO 检测 58.7 box AP、ADE20K 分割 53.5 mIoU,三个任务同时刷新。后来检测分割论文默认写 Swin,多模态模型也大量采用它的变体。
想读源码,从官方仓库 classification/ 里的 SwinTransformer 主类看起,逐层对照论文的图 2 和图 3。消融实验可以关掉 shifted window 训练一个小模型,直观感受那半格偏移的价值。
相对位置偏置也值得细看。它做成可学习的偏置表加在注意力分数上,而不是加在输入上。这样天然适配可变窗口,检测分割的多尺度训练全靠它。
一句话:Swin 证明了 Transformer 不需要模仿 CNN 的局部性也能做视觉。它只是找到了一个聪明的调度方式——分而治之,再加受控通信。
原文Swin Transformer 源码精读:移位窗口让分层视觉变成现实,ICCV 2021 最佳论文的架构革命
上海,6分钟前,











































































