SwinIR(2021)! 使用 Swin Transformer 进行图像恢复

SwinIR(2021)! 使用 Swin Transformer 进行图像恢复

导出时间:2025/11/24 08:48:52

1、研究背景与动机

1. 图像修复的目标:让“模糊变清晰”

在计算机视觉领域中,图像修复(Image Restoration) 是一个老而经典的问题。 它的任务很直白——让“看不清”的图片变得清晰、干净、细节丰富
这包括三大类任务:
  • 图像超分辨率(Super-Resolution):把模糊的低清图变成高清图。 👉 类比:像把模糊的老照片“修复”成高清版本。
  • 图像去噪(Denoising):去掉照片中的噪点。 👉 就像修掉“下雨天玻璃上的小水珠”。
  • JPEG压缩伪影消除:消除压缩带来的块状瑕疵。 👉 就像清理掉“像素方块”的马赛克。
这些任务的共同点是:

输入是“受损”的图片,输出要尽量还原“原始”的样子。


2. CNN的时代:局部高手,但“眼界太窄”

过去几年,几乎所有图像修复模型都基于 卷积神经网络(CNN)。 CNN 有点像一个个“放大镜”:
  • 它能专注看清局部细节
  • 但每次只能看到一小块图像。
于是问题出现了:
  1. 它看得太近 —— CNN 只处理局部区域,难以理解整个图像的“全局结构”;
  2. 它不够聪明 —— 不同区域特征差异很大,但 CNN 用相同的卷积核处理所有地方,就像“用同一把刷子画完所有细节”,结果自然不完美。
💬 举个形象的比喻:

CNN 就像一个“低头苦画的小画匠”,他笔法细腻,但眼光短,画得久了容易“失真”,特别是在大尺寸图像上。


3. Transformer的崛起:从文本到图像的“全局思考者”

Transformer 原本来自自然语言处理(NLP),擅长捕捉长距离依赖关系。 它不像 CNN 那样“只看邻居”,而是“每个像素都能看见全图”,拥有全局视野。
这就像一个“聪明的艺术家”,能同时考虑到整幅画的整体构图与细节协调。
于是研究者开始想:

“既然 Transformer 在语言和图像识别中这么强,那能不能用在图像修复上?”

他们确实尝试了,例如:
  • ViT(Vision Transformer):用固定大小的图像块做注意力;
  • IPT(Image Processing Transformer):第一个大规模图像修复Transformer模型。
但是这些早期Transformer方法也有明显问题:
  • 需要巨量参数(上亿)和上百万张图像训练
  • 分块处理导致边界伪影(块与块之间不自然);
  • 对高分辨率图像计算量太大。
💬 类比一下:

Transformer 像一个聪明的设计师,但太“奢侈”——想画一张图,他要开几十台电脑同时算,画出来还可能“接缝不平”。


4. Swin Transformer:为视觉量身定做的“窗口化眼睛”

于是,研究者提出了 Swin Transformer(Shifted Window Transformer)。 它巧妙地结合了 CNN 的局部高效 和 Transformer 的全局建模:
  • 把整张图像分成“小窗口”;
  • 在每个窗口内做局部注意力(高效);
  • 再让窗口交错移动(shift),实现跨区域信息交流。
💬 形象比喻:

就像一个拼图大师,先在每个窗口内打磨细节,再移动视角去观察整个画面。既节省算力,又能看到全局。


5. SwinIR 诞生:Swin Transformer + 图像修复任务

SwinIR(Swin Transformer for Image Restoration) 就是在这样的背景下诞生的。
研究者的目标是:

“让图像修复模型既有 Transformer 的全局智慧,又有 CNN 的效率。”

SwinIR 继承了 Swin Transformer 的优点,并针对图像修复任务进行了改进:
  • 设计了浅层卷积提取 + 深层 Transformer 表征;
  • 移位窗口机制解决边界伪影;
  • 通过残差结构让训练稳定;
  • 同时适用于多种任务(超分、去噪、压缩伪影)。
最终,它在多个数据集上打败了当时所有 CNN 模型(RCAN、EDSR、DRUNet 等),
并且用更少的参数实现了更高的性能。

✨ 一句话总结:

SwinIR 的出现,是图像修复从“局部卷积时代”走向“全局注意力时代”的转折点。它让模型既聪明(能理解全局),又高效(能快速处理大图),成为 Transformer 在图像修复领域的“标志性起点”。



核心创新点

🧩 总览一句话:

SwinIR 的创新点不是“重造轮子”,而是“巧妙融合”。 它把 Transformer 的“远见”和 CNN 的“细腻”融合在一起,既聪明、又高效。


创新点一:从全局注意力 ➜ 窗口化注意力(Window-based Attention)

传统 Transformer 的问题
  • 原始的 Transformer(比如 ViT)会让每个像素和所有其他像素都计算注意力。
  • 这样复杂度是 O(N²) —— 图像一大,计算量爆炸。
  • 对高分辨率图片几乎无法训练。
💬 打个比方:

想象你在一个体育场里(每个像素一个人),每个人都要和场里所有人打招呼(计算注意力)——场子越大,累死谁都算不完。


💡 SwinIR 的做法:窗口内交朋友!
SwinIR 采用了 Window-based Multi-head Self-Attention (W-MSA)
  • 把整张图像切分成若干 小窗口(7×7 或 8×8 块)
  • 只在每个窗口内部计算注意力;
  • 大幅降低计算复杂度,从 O(N²) 降为 O((M×M)×(N/M²))
  • 效果几乎不变,但速度和内存占用小很多。
💬 形象理解:

SwinIR 不让“全场人”互相打招呼,而是让每个窗口的“小圈子”先交流。每个小组自己开会,先搞定局部问题。


创新点二:移位窗口机制(Shifted Window)

窗口化虽然高效,但一开始有一个问题:

不同窗口之间信息不交流, 像每个小组“各自为政”。

于是 SwinIR 提出了“移位窗口(Shifted Window)”策略:
  • 第一层在普通窗口内计算注意力;
  • 下一层将窗口位置平移一半
  • 这样前后两层窗口会部分重叠;
  • 从而实现跨窗口的信息融合。
💬 形象比喻:

想象你在公司开会: 第一次分部门开会(窗口内), 第二次调换座位混合开(窗口平移), 大家互相交流,消息自然传遍全公司。

💡 效果:

既保留局部计算的高效性,又获得了全局关联性! 网络变得既“眼光宽”,又“手脚快”。


创新点三:层次化(Hierarchical)特征建模

SwinIR 沿用了 Swin Transformer 的分层结构
  • 低层关注细节(小尺度);
  • 高层捕捉全局结构(大尺度);
  • 每一层下采样,像金字塔一样逐步提取特征。
💬 形象理解:

网络就像一个“放大镜金字塔”:

  • 底层盯着像素细节;
  • 中层看出物体形状;
  • 顶层理解整个场景结构。
🔧 这种层次式设计,让 SwinIR 能同时理解“局部纹理”和“全局语义”,这正是传统 CNN 很难做到的。

创新点四:残差式图像恢复架构(Residual Swin Transformer Blocks)

SwinIR 并不是简单堆叠 Transformer,而是构建了一个残差式主干网络(Residual Swin Transformer Network, RSTB)
结构如下:
输入图像 浅层特征提取(卷积) 多个残差 Swin Transformer 模块(RSTB) 特征融合 + 卷积重建 输出图像
每个 RSTB 内部又包含多个 Swin Transformer 层,
并通过残差连接保持梯度流动稳定。
💬 形象比喻:

它像一条“高速公路”,每个中转站(Transformer块)都保留了主路(残差)通道,确保信息不堵车、不失真。

这解决了 Transformer 在图像任务中训练不稳定、梯度消失的问题。

创新点五:任务通用性(可一键适配不同图像修复任务)

SwinIR 不是只为“超分辨率”设计的单任务网络, 它是一种通用图像恢复框架,能处理:
任务
说明
示例
超分辨率
提高清晰度
低清图 → 高清图
去噪
去掉噪点
摄影噪声、ISO 噪点
压缩伪影消除
修复JPEG压缩方块
网图还原高清
👉 只需要更换最后的重建模块(Upsampler 或 Conv Head),
SwinIR 就能适应不同任务。
💬 类比:

SwinIR 像一台“通用修图机”,插上不同“工具头”就能变身为:清晰修复器 / 去噪器 / 解码还原器。


创新点六:轻量但高性能(小体积,大智慧)

  • SwinIR 的参数量比同级 CNN(如 RCAN、EDSR)还小;
  • 但性能(PSNR、SSIM)反而更高;
  • 说明它“算得更聪明,不靠堆参数”。
💬 类比:

它不是“肌肉型猛男”,而是“脑子灵光的高手”——凭借窗口注意力与层次结构的组合,事半功倍。


创新点七:视觉Transformer的“稳定化”改进

Transformer 在图像修复任务中容易:
  • 对高频细节敏感;
  • 梯度爆炸或收敛慢。
SwinIR 引入以下技巧稳定训练:
  • LayerNorm + Residual + GELU 激活;
  • 小窗口 attention(抑制噪声干扰);
  • 层级残差结构防止特征退化。
💬 形象理解:

就像给Transformer装上了“减震器”和“护栏”.保证它既能跑得快,又不会翻车。


模型的网络结构

把整张图当成一条“修图流水线”:浅层打底 → 深层精修 → 重建出清晰图
image.png

A. Shallow Feature Extraction(浅层特征提取)

  • 做什么? 用一层卷积把输入图像“翻译”成基础特征图(边缘、纹理的底稿)。
  • 为什么? 给后面的 Transformer 模块提供一个干净、统一的“起始语言”。 (图里左侧绿色小块就是它)

B. Deep Feature Extraction(深层特征提取)

  • 核心:一串 RSTB(Residual Swin Transformer Blocks,残差式Swin块)
  • 每个 RSTB 长什么样?
    • 里面堆叠了若干 STL(Swin Transformer Layer)
    • 末尾接一层 Conv
    • 外面再整块做残差连接(“进来是什么,出去要加回去一部分”)。 这三件套正是论文里的标准定义:“STL × n → Conv → (块级残差)”
  • 一个 STL 又包含什么?
    • LayerNorm → 窗口多头自注意力(MSA) → 残差加法
    • LayerNorm → MLP(前馈网络) → 残差加法。 (正如你图右下角(b)的小框所示)——这是 SwinIR 里一层的最小单元。
  • 直觉版解释
    • 窗口注意力= 每个“小窗格”里先把细节讲清楚;
    • 多层堆叠= 逐步从纹理到结构“层层提纯”;
    • 块级残差= 给信息开“回路”,让训练稳、细节不丢。

小结:RSTB 是“精修工坊”,STL 负责看细节Conv 负责融合块级残差防退化,按图里的蓝色长条一路串起来就是深层主干。


C. HQ Image Reconstruction(高质量重建头)

  • 做什么? 把深层特征变回图像。
  • 怎么做?
    • 超分辨率:接“上采样头”(常见是子像素/PixelShuffle 或卷积上采样)把分辨率抬高;
    • 去噪 / 去压缩伪影:直接用卷积重建到输入同分辨率即可。
  • 为什么分两类? 不同任务的输出尺寸/形式不同,所以重建头是任务相关的小改动,主干(RSTB 堆叠)通用。

D. 端到端的数据流(和你的图一一对应)

  1. 输入图像 → 浅层Conv 得到底层特征;
  2. 进入 RSTB × K:每块内部 STL×n → Conv → 残差
  3. 串完所有 RSTB 后 → 重建头 输出高清图。

这条“浅层→深层→重建”的三段式,就是 SwinIR 的标准范式;论文明确“深层部分采用**残差堆叠的 Swin Transformer 块(RSTB)**做特征提取”。


E. 这套结构的工程意义

  • 稳定:块级残差 + 层内残差,梯度好走、不易退化;
  • 高效:窗口注意力把计算限制在小窗里,显存/计算都更省;
  • 通用:只需替换最后的重建头,同一主干就能跑超分、去噪、去JPEG三大任务,论文在多项基准上验证了这一点。

一句话记忆

SwinIR = 浅层Conv打底 +(RSTB:STL×n→Conv→块级残差)×K 的深层主干 + 任务化重建头。 先把细节在“小窗”里看清楚,再层层融合、稳稳加回,最后按任务输出高清图。


模型的核心缺陷与不足

  1. “窗口注意力=局部为主”,全局依赖仍需多层“接力” SwinIR 的注意力先在 M×M 的局部窗口里算(W-MSA),然后靠移位窗口在相邻层做跨窗沟通。这让计算更省,但真正的“长距离交互”是逐层传播出来的,不像全局注意力一步到位;极端跨区域依赖可能需要更深堆叠才能触达。
  2. 对窗口大小敏感,任务不当会掉点 论文特别说明:做 JPEG 去伪影 时窗口从 8 改成 7,因为用 8(与 JPEG 的 8×8 块同频)性能会明显下降——说明窗口超参对不同退化类型比较敏感。
  3. 速度介于“慢的 Transformer”和“快的 CNN”之间 在 1024×1024 图上推理耗时:RCAN≈0.2sSwinIR≈1.1sIPT≈4.5s。SwinIR 比 IPT 快很多,但相较强 CNN 仍偏慢,部署实时性要权衡。
  4. 仍然“吃数据、吃大补丁”,最佳效果依赖更大训练块/更多图 作者做了消融:补丁越大、训练图片越多,PSNR 持续上升;虽不及 IPT 那样极度依赖海量数据,但要逼近上限,数据/补丁仍要加码。
  5. 多任务通用≠同一头能应万变,重建头仍需按任务改 主干(浅层+RSTB 堆叠)虽然通用,但重建模块要根据任务换:SR 用上采样(如子像素卷积),去噪/JPEG 用单卷积直出;也就是说,SwinIR 不是“零改动即通吃”,工程上仍需任务化配置
  6. 真实场景 SR 需 GAN/感知等复合损失,训练更复杂 在真实场景超分中,作者采用 像素损失 + GAN 损失 + 感知损失 的组合来追求视觉质量,训练不如只用像素损失那么“稳和省”。
  7. 超参较多、实现复杂度高 一个可用配置就包含:K 个 RSTB、每个 RSTB 含 L 个 STL、窗口尺寸、通道数(常用 180)、注意力头数(常用 6) 等;这些超参对性能/显存/速度均有影响,调参成本不低。

一句话小结

**SwinIR 的优势在“效率与效果的折中”,但代价是:**注意力仍偏局部、对窗口/补丁等超参敏感,推理速度不及最强 CNN,真实场景要配合更复杂的训练策略。 把这些点记住,后续你在讲 Restormer / HAT / Swin2SR 等后续工作时,就能顺势解释它们为何继续在“更强的全局建模、更稳的训练与更高的效率”上做文章。