目录
引言
ESRGAN (Enhanced Super-Resolution Generative Adversarial Networks) 是对 SRGAN 的改进,能够生成在视觉上更具“真实感”且拥有更锐利高频细节的超分辨率图像。SRGAN 通过引入对抗损失(GAN)与感知损失(Perceptual Loss)已经在视觉质量上显著提升,但仍然存在纹理失真、放大伪影等问题。ESRGAN 在网络结构(如 RRDB 模块)与对抗训练方式(相对判别器)上做出改进,从而在多个数据集上取得更佳的主观和客观评估效果。
ESRGAN 的核心思路
-
RRDB 主体网络
- 采用 “残差中的残差” 设计,并融合 DenseNet 风格的 RDB (Residual Dense Block),去除 BN 层,保证在深层网络中能稳定地提炼丰富高频特征。
-
相对判别器(Relativistic Discriminator)
- 不只是简单地判定“真 / 假”,而是判定真实图和生成图之间的相对真度差异;
- 引入类似 RaGAN(Relativistic Average GAN) 的方法,提高判别器对细微纹理差异的敏感度。
-
感知损失(Perceptual Loss) + (可选)像素损失
- 在高层特征空间(VGG 等)度量生成图与真实图的距离,让网络注重纹理结构的一致性;
- 同时可保留少量 ℓ 1 \ell_1 ℓ1 或 ℓ 2 \ell_2 ℓ2 像素损失,辅助稳定训练。
-
残差缩放
- 在 RRDB 中,对输出乘以较小的缩放因子(如 0.2)以缓解梯度爆炸,并稳定大规模训练。
网络结构与数学表达
RRDB 主体网络(Residual in Residual Dense Block)
ESRGAN 的生成器使用 RRDB 代替传统 ResBlock 作为基本构件。RRDB 本身由三个 RDB 串行组成,并在最外层包裹一个残差连接 + 缩放因子。
-
RDB (Residual Dense Block)
在 RDB 中,每一层卷积的输入都是所有先前卷积层的输出拼接(Dense 连接),并在输出端加一个局部残差。可写作:
x d = σ ( W d ∗ [ x 0 , x 1 , . . . , x d − 1 ] + b d ) , d = 1 … D , x_{d} = \sigma\bigl(W_d * [x_0, x_1, ..., x_{d-1}] + b_d\bigl), \quad d = 1 \dots D, xd=σ(Wd∗[x0,x1,...,xd−1]+bd),d=1…D,
RDB ( x 0 ) = x 0 + W lff ∗ [ x 0 , x 1 , . . . , x D ] , \text{RDB}(x_0) = x_0 + W_{\text{lff}}^{} * [x_0, x_1, ..., x_D], RDB(x0)=x0+Wlff∗[x0,x1,...,xD],
其中 D D D 是 RDB 内部卷积层数, σ \sigma σ 多用 LeakyReLU 或 ReLU。 -
RRDB = RDB + RDB + RDB + 残差
RRDB ( x ) = x + β ⋅ ( F RDB 3 ∘ F RDB 2 ∘ F RDB 1 ( x ) ) , \text{RRDB}(x) = x + \beta \cdot \bigl(\mathcal{F}_{\text{RDB}_3} \circ \mathcal{F}_{\text{RDB}_2} \circ \mathcal{F}_{\text{RDB}_1}(x)\bigr), RRDB(x)=x+β⋅(FRDB3∘FRDB2∘FRDB1(x)),
其中 β ≈ 0.2 \beta\approx0.2 β≈0.2 控制残差输出的幅度, ∘ \circ ∘ 表示函数复合。
生成器(Generator)
ESRGAN 的生成器 G θ G_\theta Gθ (参数 θ \theta θ)可分为:
- 头部卷积:初步特征提取
- RRDB 组:堆叠 N 个 RRDB,形成深度表征
- 全局残差:将 RRDB 组输出与头部特征相加
- 上采样:通常用 PixelShuffle 上采样到目标倍数(如 x4)
- 输出卷积:映射到 3 通道 (RGB),得到 I ^ SR = G θ ( I LR ) \hat{I}_{\text{SR}} = G_\theta(I_{\text{LR}}) I^SR=Gθ(ILR)
判别器(Discriminator)
- 判别器 D ϕ D_\phi Dϕ 输出对输入图像的打分;在 ESRGAN 中,多采用相对GAN(如 RaGAN)的方法,使判别器关心真实图与生成图打分的相对差异。
- 网络结构常见:卷积+BN+LeakyReLU+全连接,与 SRGAN 类似,但在损失计算时将真实、生成样本打分做差值。
损失函数
对抗损失:相对判别器(Relativistic Discriminator)
在 RaGAN 设定下,对抗损失不再是单纯的二分类,而是包含相对真度判断:
-
判别器损失 L D \mathcal{L}_D LD:
L D = − [ log ( D Ra ( x r , x f ) ) + log ( 1 − D Ra ( x f , x r ) ) ] , D Ra ( x r , x f ) = σ ( D ϕ ( x r ) − E [ D ϕ ( x f ) ] ) , \begin{aligned} \mathcal{L}_D &= - \Bigl[\log\bigl(D_{\text{Ra}}(x_r, x_f)\bigr) + \log\bigl(1 - D_{\text{Ra}}(x_f, x_r)\bigr)\Bigr], \\ D_{\text{Ra}}(x_r, x_f) &= \sigma\bigl(D_\phi(x_r) - \mathbb{E}[D_\phi(x_f)]\bigr), \end{aligned} LDDRa