现代超分辨率——ESRGAN 到扩散模型
从 SRGAN 到 ESRGAN(2018)
SRGAN(Super-Resolution GAN)在 2016 年首次将生成对抗网络(GAN)引入超分辨率领域,通过感知损失(perceptual loss)生成的图像在视觉质量上显著超越了传统的 PSNR 优化方法。但 SRGAN 仍有改进空间——2018 年 Wang 等人提出的 ESRGAN(Enhanced Super-Resolution GAN)在四个关键方向上进行了优化。
**RRDB(Residual-in-Residual Dense Block)**结合了残差连接和密集连接的优点。密集连接让每层都能访问前面所有层的特征,避免特征冗余;残差连接则稳定了深层网络的训练。ESRGAN 将多个残差密集块堆叠,形成 Residual-in-Residual 结构——宏观上用残差连接多个块,微观上每个块内部用密集连接。
ESRGAN 的另一个创新是 RaGAN(Relativistic GAN)判别器。传统 GAN 的判别器只判断单张图像是真实还是生成,而 RaGAN 判别器比较两张图像——“这张真实图像是否比那张生成图像更真实?"。这种相对判别提供了更丰富的梯度信号。
感知损失的改进也很关键。SRGAN 使用 VGG 网络激活后的特征计算距离,但激活函数(ReLU)会导致稀疏性,很多位置是零值,梯度消失。ESRGAN 改在激活之前计算特征距离,保留了更多原始信息。
最后,ESRGAN 去除了批量归一化(Batch Normalization)。BN 在分类任务中有效,但在图像恢复中会引入伪影,因为 BN 归一化了特征分布,可能破坏图像的局部统计特性。去掉 BN 后,网络泛化能力更强,生成的图像更自然。
图1 - 超分辨率技术演进时间线(从 SRCNN 到扩散模型):
flowchart TD
A["SRCNN (2014)<br/>首个 CNN 超分辨率<br/>端到端学习"] --> B["SRGAN (2016)<br/>引入 GAN 与感知损失<br/>视觉质量突破"]
B --> C["ESRGAN (2018)<br/>RRDB + RaGAN<br/>去除批量归一化"]
C --> D["Real-ESRGAN (2021)<br/>真实退化建模<br/>高阶退化链"]
D --> E["SwinIR (2021)<br/>Swin Transformer<br/>长距离依赖建模"]
E --> F["扩散模型 (2021+)<br/>SR3 / LDM<br/>极致质量"]
classDef milestone fill:#2196F3,color:#fff
class A,B,C,D,E,F milestoneReal-ESRGAN——真实世界图像的挑战
训练超分辨率模型通常需要成对的低分辨率和高分辨率图像,但真实世界中的低分辨率图像往往来自复杂的退化过程——镜头模糊、传感器噪声、压缩失真、多次缩放……Real-ESRGAN(2021,Wang et al.)的核心思想就是高阶退化模型。
传统的退化模型假设图像先模糊再下采样。Real-ESRGAN 的退化链更复杂:
$$ I_{deg} = [(I_{HR} \otimes k) \downarrow_r + n]_{JPEG} $$
这个过程包括模糊(用卷积核 $k$ 模拟镜头和运动模糊)、下采样($\downarrow_r$ 表示缩小到 $1/r$)、添加噪声 $n$、JPEG 压缩。更关键的是,这个过程可以重复多次——一张图像可能被多次压缩、重新缩放,形成复杂的伪影。
Real-ESRGAN 还用 sinc 滤波器模拟振铃(ringing)和过冲(overshoot)等真实世界的退化伪影。这些伪影在传统退化模型中难以捕捉,但在真实低质量图像中很常见。
判别器也换成了 U-Net 结构,并使用谱归一化(Spectral Normalization)稳定训练。U-Net 的跳跃连接让判别器能同时看局部和全局特征,提供更精细的像素级反馈。生成器则继承了 ESRGAN 的架构,但在真实数据上重新训练。
图2 - Real-ESRGAN 的高阶退化链(模糊 → 下采样 → 噪声 → 压缩):
flowchart TD
A["高分辨率图像<br/>HR Image"] --> B["模糊操作<br/>Blur Kernel"]
B --> C["下采样<br/>Downsample"]
C --> D["添加噪声<br/>Add Noise"]
D --> E["JPEG 压缩<br/>JPEG Compression"]
E --> F["低分辨率图像<br/>LR Image"]
classDef img fill:#9C27B0,color:#fff
classDef op fill:#2196F3,color:#fff
class A,F img
class B,C,D,E opSwinIR——Transformer 的长距离依赖
Transformer 在自然语言处理中大放异彩,但直接将其应用到图像恢复面临计算复杂度问题。标准自注意力的复杂度是 $O(N^2)$,其中 $N$ 是图像像素数——对 256×256 的图像,这已经无法承受。SwinIR(2021,Liang et al.)用移位窗口(Shifted Window)注意力机制解决了这个问题。
Swin Transformer 的核心思想是将图像分成不重叠的局部窗口,在每个窗口内计算自注意力,复杂度降低到 $O(N)$。更巧妙的是,Swin Transformer 在交替层中移动窗口位置,让不同层能聚合不同区域的信息,最终实现全局建模。
SwinIR 的网络结构分为三部分:浅层特征提取用 3×3 卷积提取初始特征;深层特征提取用多个残差 Swin Transformer 块(RSTB),每个块包含若干 Swin Transformer 层和卷积层;高质量图像重建用亚像素卷积和卷积层生成最终图像。
Transformer 的优势在于全局建模能力。卷积网络的感受野受限,难以捕获长距离依赖;SwinIR 的自注意力机制能直接建模像素间的全局关系,更好地恢复纹理细节和结构信息。在图像去噪、去模糊、超分辨率等任务上,SwinIR 都取得了 SOTA 性能。
扩散模型——从噪声到清晰图像
扩散模型(Diffusion Models)是 2020-2022 年图像生成和恢复领域的突破。它的基本思想分为前向和反向两个过程。
前向过程逐步向清晰图像添加高斯噪声,直到图像变成纯噪声。每一步的噪声添加满足:
$$ q(x_t | x_{t-1}) = \mathcal{N}(x_t; \sqrt{1 - \beta_t} x_{t-1}, \beta_t I) $$
其中 $\beta_t$ 是噪声调度参数,控制每步添加多少噪声。经过 $T$ 步后,$x_T$ 几乎服从标准正态分布。
反向过程训练神经网络逐步从噪声中恢复清晰图像。网络学习预测每一步应该去除的噪声:
$$ p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t), \Sigma_\theta(x_t, t)) $$
在超分辨率中,扩散模型将低分辨率图像作为条件信息输入去噪网络。网络在每一步迭代时,同时参考低分辨率图像的引导和当前噪声图像的状态,逐步生成高分辨率细节。
扩散模型的优势在于生成结果极其逼真,能合成合理的纹理细节。但代价是推理速度慢——需要多步迭代(通常 50-1000 步)才能完成去噪。代表工作包括 SR3(Image Super-Resolution via Iterative Refinement)和 LDM(Latent Diffusion Model)——LDM 将扩散过程放在潜在空间,大幅提升了推理速度。
图3 - 扩散模型的前向和反向过程(噪声添加与迭代去噪):
flowchart TD
A["清晰图像<br/>x₀"] --> B["添加噪声<br/>x₁ → x₂ → ... → x_T"]
B --> C["纯噪声<br/>x_T ~ N(0,1)"]
C --> D["去噪网络<br/>预测噪声"]
D --> E["移除噪声<br/>x_{T-1} → ... → x₁ → x₀"]
E --> F["恢复的清晰图像<br/>x₀̂"]
classDef img fill:#4CAF50,color:#fff
classDef process fill:#2196F3,color:#fff
classDef noise fill:#FF9800,color:#fff
class A,F img
class B,E process
class C,D noise方法对比与选型指南
传统方法 vs 深度学习方法
| 维度 | 传统方法 | 深度学习方法 |
|---|---|---|
| 计算资源需求 | 低,可在嵌入式设备运行 | 高,通常需要 GPU |
| 推理速度 | 快,实时处理 | 较慢,扩散模型尤其慢 |
| 泛化能力 | 依赖退化模型假设,泛化有限 | 数据驱动,泛化能力强 |
| 纹理细节 | 难以生成逼真纹理 | 能合成自然纹理 |
| 可解释性 | 强,数学原理清晰 | 弱,黑盒模型 |
| 训练需求 | 无需训练 | 需要大量数据和算力 |
| 适合场景 | 已知退化模型、资源受限 | 复杂真实场景、质量优先 |
各方法适用场景
| 方法 | 最佳适用场景 | 不推荐场景 |
|---|---|---|
| 双三次插值 | 实时预览、对质量要求不高 | 大幅放大(>4x) |
| 维纳滤波 | 已知 PSF 的去模糊、天文图像 | 盲去模糊、噪声未知 |
| 双边滤波 | 轻度降噪、边缘保持 | 强噪声、纹理区域 |
| SRCNN | 快速超分辨率、移动端 | 纹理丰富的自然图像 |
| SRGAN/ESRGAN | 照片增强、视觉质量优先 | 需要严格保真的场景 |
| Real-ESRGAN | 真实世界低质量图像恢复 | 艺术风格化处理 |
| 扩散模型 | 极致质量、细节合成 | 实时应用、资源受限 |
评估指标
超分辨率的评估指标可以分为两类:像素级指标衡量重建精度,感知级指标衡量视觉质量。
**PSNR(Peak Signal-to-Noise Ratio)**是最常用的像素级指标,计算重建图像和真实图像之间的均方误差(MSE):
$$ \text{PSNR} = 10 \cdot \log_{10}\left(\frac{\text{MAX}_I^2}{\text{MSE}}\right) $$
其中 $\text{MAX}_I$ 是像素最大值(8 位图像为 255)。PSNR 越高越好,但它只关注像素差异,不考虑人眼感知特性。
**SSIM(Structural Similarity Index)**衡量结构相似性,从亮度、对比度和结构三个维度评估。SSIM 范围是 -1 到 1,1 表示完全相同。SSIM 比 PSNR 更符合人眼感知,但仍然倾向于平滑结果。
**LPIPS(Learned Perceptual Image Patch Similarity)**是感知级指标,用预训练的深度网络(如 VGG 或 AlexNet)提取特征,计算特征空间的距离。LPIPS 越低表示感知质量越好,能更好地反映人眼对纹理和细节的评价。
**FID(Fréchet Inception Distance)**常用于评估生成质量,计算真实图像分布和生成图像分布在 Inception 网络特征空间中的 Fréchet 距离。FID 越低表示生成分布越接近真实分布。
实际应用中,需要根据场景选择指标。如果追求像素级保真度,优先看 PSNR 和 SSIM;如果追求视觉质量,优先看 LPIPS 和 FID;扩散模型通常在感知级指标上表现最好,但 PSNR 可能不如其他方法。
总结
从 SRGAN 到扩散模型,超分辨率技术经历了从感知损失到对抗训练、从真实退化建模到 Transformer 全局建模、从单步重建到迭代去噪的演进。每个方法都有其优势和适用场景:
- ESRGAN 提供了良好的质量和速度平衡
- Real-ESRGAN 专攻真实世界低质量图像
- SwinIR 用 Transformer 实现了强大的全局建模
- 扩散模型达到了极致的视觉质量,但推理成本高
选择方法时,需要权衡质量、速度、计算资源和应用场景。对于实时应用,可以选择 SRCNN 或 ESRGAN;对于照片增强,Real-ESRGAN 是不错的选择;对于需要极致质量的场景,扩散模型目前是最佳选择。