101、从理论到实战:SwinIR 的窗口注意力机制与图像超分重建去年有个项目,甲方要求把监控视频里的车牌从 72x72 放大到 288x288,还要能看清数字。我一开始上了个老牌 SRCNN,结果车牌上的“京A”直接糊成了“京A还是京B”的猜谜游戏。后来换了 SwinIR,效果肉眼可见地提升,但训练时显存爆了三次,调试窗口大小和移位策略又折腾了两周。今天就把这些踩过的坑和 SwinIR 的核心机制掰开揉碎讲清楚。窗口注意力:为什么不是全局注意力?传统 Transformer 做超分有个致命问题:一张 256x256 的图,patch 大小 8x8,序列长度就是 1024,自注意力的计算复杂度是 O(n²),显存直接起飞。SwinIR 的解决方案简单粗暴——把特征图切成不重叠的窗口,每个窗口内部做自注意力。比如窗口大小 M=8,一张 HxW 的特征图就被分成 (H/M) x (W/M) 个窗口,每个窗口只计算 64x64 的注意力矩阵。这里有个容易忽略的细节:窗口大小 M 的选择直接影响感受野。M 太小,比如 4x4,每个窗口只能看到局部纹理,重建出来的图像会有明显的块状伪影,像打了马赛克。M 太大,比如 16x16,窗口数量减少,但每个窗口的计算量变成 256x256,显存压力又回来了。我试下来,8x8 是个平衡点,对 2x 和 4x 超分都适用。移位窗口:打破“信息孤岛”的关键窗口注意力有个天然缺陷:窗口之间没有信息交流。想象一下,一个物体刚好被切在两个窗口的边界上,每个窗口只能看到一