深度学习超分辨率——SRCNN 与 SRGAN
从数学模型到数据驱动
在超分辨率任务中,传统方法依赖精心设计的数学模型——插值算法、稀疏表示、先验约束等。但深度学习带来了范式转变:从大量成对的低分辨率(LR)-高分辨率(HR)图像数据中,直接学习从退化空间到清晰空间的映射。
核心思想很简单:训练一个神经网络 $F_{\theta}$,使其能将低分辨率图像映射到高分辨率图像:
$$ \hat{I}{HR} = F{\theta}(I_{LR}) $$
训练过程就是优化网络参数 $\theta$,最小化预测结果与真实高分辨率图像的差异:
$$ \theta^* = \arg\min_{\theta} \sum_{i} \mathcal{L}(F_{\theta}(I_{LR}^{(i)}), I_{HR}^{(i)}) $$
不再需要手动设计滤波器或先验,让网络自己从数据中学到如何恢复细节。
SRCNN:三层的起点
SRCNN(Super-Resolution Convolutional Neural Network)由 Dong 等人于 2014 年在 ECCV 发表,是深度学习超分辨率的奠基工作。论文的核心洞察是:超分辨率问题的三个传统步骤(图像块提取、非线性映射、重建)可以用三层卷积网络直接实现。
网络结构清晰明了:
图1 - SRCNN 网络架构(三层卷积直接对应传统超分辨率的三个步骤):
flowchart TD
INPUT["输入 LR 图像<br/>已插值放大至目标尺寸"] --> FE["特征提取<br/>9x9 卷积 + ReLU<br/>提取边缘、纹理等底层特征"]
FE --> NLM["非线性映射<br/>1x1 卷积 + ReLU<br/>映射到高维特征空间"]
NLM --> REC["重建<br/>5x5 卷积<br/>聚合特征生成 HR 图像"]
REC --> OUTPUT["输出 HR 图像"]
classDef io fill:#2196F3,color:#fff
classDef layer fill:#9C27B0,color:#fff
class INPUT,OUTPUT io
class FE,NLM,REC layer特征提取层
第一层是 $9 \times 9$ 的卷积核加 ReLU 激活。卷积操作相当于在图像上滑动一个窗口,提取局部特征。大的核尺寸($9 \times 9$)能捕获更大范围的上下文信息。ReLU 引入非线性,让网络能学习更复杂的特征。
这一层从已插值放大的低分辨率图像中提取边缘、纹理等底层特征——这些是重建细节的基础。
非线性映射层
第二层是 $1 \times 1$ 卷积加 ReLU。$1 \times 1$ 卷积不会改变空间尺寸,但可以改变通道数——相当于对每个像素位置的特征做一次线性变换组合,映射到更高维的特征空间。
这是网络"理解"图像的关键:将低维的像素值映射到高维的语义特征空间,为重建提供更丰富的表达。
重建层
第三层是 $5 \times 5$ 卷积,没有激活函数。这一层将高维特征聚合回图像空间,生成最终的高分辨率图像。
损失函数
SRCNN 使用像素级均方误差(MSE)作为损失函数:
$$ \mathcal{L}{MSE} = \frac{1}{N} \sum{i=1}^{N} | F_{\theta}(I_{LR}^{(i)}) - I_{HR}^{(i)} |_2^2 $$
MSE 衡量预测图像与真实图像在每个像素位置的差异——优化 MSE 就是让网络学会生成与真实图像尽可能接近的像素值。
局限性与历史意义
SRCNN 的网络很浅(仅 3 层),感受野有限,难以捕捉长距离依赖。此外,它需要先对输入进行双三次插值放大,计算效率不高。放大因子也是固定的,无法灵活调整。
但 SRCNN 的历史意义不可忽视:它证明了深度学习方法在超分辨率任务上有效,为后续研究开辟了道路。在此之前,超分辨率主要依赖稀疏表示、先验约束等传统方法。
SRGAN:感知质量的新维度
SRGAN(Super-Resolution Generative Adversarial Network)由 Ledig 等人于 2017 年在 CVPR 发表,首次将生成对抗网络(GAN)引入超分辨率任务。SRGAN 的两个核心创新——感知损失(Perceptual Loss)和对抗损失(Adversarial Loss)——彻底改变了超分辨率的质量评判标准。
图2 - SRGAN 训练流程(生成器与判别器的对抗博弈,结合 VGG 感知损失):
flowchart TD
LR["低分辨率<br/>图像"] --> G["生成器 G<br/>ResNet + 亚像素卷积"]
G --> SR["超分辨率<br/>图像"]
SR --> D["判别器 D<br/>判断真实性"]
SR --> VGG["VGG 特征提取<br/>计算感知损失"]
G --> VGG
HR["真实高分辨率<br/>图像"] --> D
HR --> VGG
D --> LOSS_D["对抗损失<br/>L_adv"]
VGG --> LOSS_P["感知损失<br/>L_perceptual"]
classDef io fill:#2196F3,color:#fff
classDef net fill:#9C27B0,color:#fff
classDef loss fill:#FF9800,color:#fff
class LR,HR io
class G,D,VGG net
class LOSS_D,LOSS_P loss感知损失
SRGAN 的第一个创新是感知损失。传统方法(包括 SRCNN)优化的是像素空间上的 MSE,但这有个问题:MSE 倾向于生成"平均"的像素值,导致结果模糊。
为什么?考虑一个边缘区域:真实图像的边缘可能是清晰的黑白边界(像素值 0 或 255),但如果网络预测中间值(如 128),MSE 只是小幅增加——因为误差是 $|128-0|^2 = 16384$ 和 $|128-255|^2 = 16129$,而网络的平均预测可能是 128 以最小化总误差。
感知损失的思路是:不在像素空间计算距离,而是在 VGG 网络的特征空间计算距离。VGG 是在 ImageNet 上预训练的分类网络,其中间层的特征编码了图像的语义信息(纹理、形状等)。
$$ \mathcal{L}{perceptual} = | \phi(I{HR}) - \phi(\hat{I}_{HR}) |_2^2 $$
其中 $\phi$ 是预训练 VGG 网络的中间层特征提取器。
优化感知损失意味着:让生成图像在特征层面接近真实图像,而不是在像素层面接近。这能产生更清晰、更真实的纹理——因为 VGG 特征对纹理细节很敏感。
对抗损失
SRGAN 的第二个创新是对抗损失。GAN 的核心思想是生成器(Generator)和判别器(Discriminator)的对抗博弈:
- 生成器 G 试图生成逼真的超分辨率图像,欺骗判别器
- 判别器 D 试图区分真实的高分辨率图像和生成器生成的假图像
生成器的目标函数包含两部分:感知损失和对抗损失:
$$ \mathcal{L}G = \mathcal{L}{perceptual} + 10^{-3} \mathcal{L}{content} + \lambda \mathcal{L}{adv} $$
其中 $\mathcal{L}_{adv}$ 是对抗损失:
$$ \mathcal{L}{adv} = \sum{n=1}^{N} -\log D(G(I_{LR}^{(n)})) $$
生成器希望 $D(G(I_{LR}))$ 尽可能大(判别器认为生成图像是真实的),所以最大化 $\log D(G(I_{LR}))$,即最小化 $-\log D(G(I_{LR}))$。
判别器的目标函数是:
$$ \mathcal{L}D = -\sum{n=1}^{N} [\log D(I_{HR}^{(n)}) + \log (1 - D(G(I_{LR}^{(n)})))] $$
判别器希望 $D(I_{HR})$ 尽可能大(正确识别真实图像),$D(G(I_{LR}))$ 尽可能小(正确识别生成图像)。
通过这种对抗训练,生成器学会生成更符合真实图像统计分布的纹理——因为如果纹理太假,判别器会轻易识别出来。
生成器架构
SRGAN 的生成器采用深度残差网络(ResNet)结构,包含 16 个残差块。每个残差块包含两个 $3 \times 3$ 卷积层,通过跳跃连接缓解梯度消失。
上采样使用亚像素卷积(Sub-pixel Convolution)。亚像素卷积由 Shi 等人于 2016 年在 ESPCN(Efficient Sub-Pixel Convolutional Neural Network)中提出,SRGAN 采用了这一技术。
亚像素卷积的核心思想是:先用卷积生成 $r^2$ 个通道的特征图($r$ 是放大因子),然后通过周期洗牌(Periodic Shuffling)重新排列像素,将通道维度转换为空间维度:
$$ I_{HR} = PS(W * I_{LR} + b) $$
其中 $PS$ 是周期洗牌操作。例如,如果放大因子是 2,先生成 4 个通道的特征图,然后重新排列成 2 倍宽和高的单通道图像。
亚像素卷积比传统的双三次插值更高效——插值上采样会引入大量冗余计算,而亚像素卷积直接在低分辨率空间学习上采样滤波器。
图3 - 像素损失 vs 感知损失(为什么 GAN 生成更清晰的纹理):
flowchart TD
PIXEL["像素损失(MSE)<br/>优化像素值差异"] --> BLUR["倾向生成<br/>模糊的平均结果"]
PIXEL --> REASON_P["原因:边缘区域<br/>预测中间值<br/>能最小化总误差"]
PERCEPTUAL["感知损失(VGG)<br/>优化特征空间差异"] --> SHARP["倾向生成<br/>清晰的纹理细节"]
PERCEPTUAL --> REASON_V["原因:VGG 特征<br/>对纹理敏感<br/>惩罚模糊结果"]
GAN["对抗损失(GAN)<br/>生成器与判别器博弈"] --> REAL["生成符合真实<br/>图像统计分布的纹理"]
GAN --> REASON_G["原因:判别器<br/>能识别不自然的<br/>纹理模式"]
classDef loss fill:#2196F3,color:#fff
classDef result fill:#FF9800,color:#fff
classDef reason fill:#9C27B0,color:#fff
class PIXEL,PERCEPTUAL,GAN loss
class BLUR,SHARP,REAL result
class REASON_P,REASON_V,REASON_G reason质量与指标的权衡
SRGAN 的一个有趣现象是:生成图像的视觉质量(主观感受)显著优于 SRCNN,但 PSNR 指标可能略低。
PSNR(Peak Signal-to-Noise Ratio)基于 MSE 计算,衡量的是像素层面的保真度。MSE 优化倾向于生成模糊的平均结果,而 GAN 的对抗训练会引入一些"合理"的纹理——这些纹理可能不是像素层面的精确匹配,但看起来更真实。
这揭示了图像质量评估的核心矛盾:像素级保真度(PSNR)和感知质量(Perceptual Quality)并不总是对齐。SRGAN 选择优化感知质量,而牺牲一些像素级指标。
从 SRCNN 到 SRGAN:演进逻辑
从 SRCNN 到 SRGAN,深度学习超分辨率经历了两次关键演进:
- 网络架构演进:从 3 层浅网络到深度的 ResNet,从固定插值上采样到亚像素卷积高效上采样
- 损失函数演进:从像素级 MSE 到特征空间的感知损失,从单一损失函数到对抗训练的博弈机制
这两次演进都围绕一个核心目标:让网络生成更清晰、更真实的纹理。
SRCNN 证明了深度学习在超分辨率上的可行性,但受限于网络深度和损失函数,生成的图像仍然偏模糊。SRGAN 通过感知损失和对抗损失,突破了这个限制,生成了视觉质量更高的图像。
但 SRGAN 也不是终点。后续研究(如 ESRGAN、Real-ESRGAN)进一步优化了感知损失、对抗损失和网络架构,在质量上持续提升。
小结
深度学习超分辨率的核心思想是数据驱动:从成对的低分辨率-高分辨率图像中学习映射,而不是依赖手工设计的数学模型。
SRCNN 用三层卷积网络证明了深度学习的可行性,是超分辨率领域的奠基工作。SRGAN 通过感知损失和对抗损失,将超分辨率从像素级保真度提升到感知质量的新维度。
理解这些方法的关键在于:为什么感知损失优于像素损失?为什么对抗训练能生成更真实的纹理?答案在于——人类视觉系统对纹理和细节敏感,而不仅仅关注像素值。优化与人类感知对齐的目标函数,才能生成视觉上更好的图像。
参考文献
- Dong, C., Loy, C. C., He, K., & Tang, X. (2014). Learning a deep convolutional network for image super-resolution. In European conference on computer vision (pp. 184-199). Springer.
- Shi, W., Caballero, J., Huszár, F., Totz, J., Aitken, A. P., Bishop, R., … & Vedaldi, A. (2016). Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 1874-1883).
- Ledig, C., Theis, L., Huszár, F., Caballero, J., Cunningham, A., Acosta, A., … & Shi, W. (2017). Photo-realistic single image super-resolution using a generative adversarial network. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 4681-4690).