Bootstrap

【论文阅读】Real-ESRGAN

学习资料

1. WHY

为什么研究这个?现在的模型有什么局限?

方法中的图片的退化过程不足以模拟现实中的复杂退化情况。

2.1. 双三次下采样

GAN被用作损失监督→解决方案更接近自然流形

GAN被用作损失监督:在 SR 领域,GAN 用作损失监督时,通过定义 GAN 损失函数,生成器为最小化该损失,生成更逼真高分辨率图像,使判别器难区分。当生成图像能 “骗” 过判别器,就表明其在视觉特征上与真实图像相似,接近 “自然流形”,从而提升质量与逼真度。如 ESRGAN 等模型利用此方式,借 GAN 损失监督生成器训练,推动生成图像接近真实高分辨率图像,获得更好视觉效果,助于推动领域发展。

自然流形:生成的高分辨率图像在特征等方面更符合自然图像的分布特点。


超分辨率重构传统方法:假设图像是经过理想的双三次下采样得到LR图像。

盲超分辨率(属于超分辨率重构的一种特殊情况):现实中很多时候是不知道图像经历了何种退化过程,退化可能是由多种未知因素造成的,如相机的各种复杂成像问题(包括不同类型的模糊、噪声等)、多次图像编辑(可能包含不同程度的压缩、锐化等操作)以及在互联网传输过程中的变化等,所以有了盲超分辨率问题。

2.2. 显式建模

显式建模旨在明确地描述图像退化过程,通常包含退化预测条件恢复两个主要部分。(既可以像部分研究中那样分开执行操作,也可以联合(迭代)进行。)

它试图通过预先定义好的规则和模型来表示图像从高分辨率到低分辨率的变化过程,例如明确规定模糊的类型(如高斯模糊、运动模糊等)、噪声的分布(如高斯噪声、椒盐噪声等)以及下采样的方式(如双三次下采样等)。

这类方法的一个显著问题是,它们高度依赖于预先设定的退化表示形式,往往只考虑相对简单的合成退化情况,与现实世界中复杂多样且未知的图像退化情况存在较大差距。

2.3. 隐式建模

隐式建模不直接对图像的退化过程进行明确的数学建模,而是尝试通过数据分布学习的方式来获取退化模型。它利用生成对抗网络(GAN)等技术,让模型从大量的数据中自动学习到图像在不同退化情况下的特征和变化规律,从而在没有明确规定退化过程的情况下,能够根据输入的低分辨率图像生成与之对应的高分辨率图像。

由于其能力主要取决于训练数据集的多样性和丰富程度,对于训练数据集中未包含的退化类型或程度(即分布外图像),模型的泛化能力较差,难以有效地处理这些未曾见过的复杂退化情况。

2. WHAT

2.1. 退化模型改进

改进经典退化模型(Classical Degradation Model)为高阶退化模型(High - order Degradation Model)。

经典退化模型

首先,我们要知道盲超分辨率就是把低分辨率图像变清晰。经典退化模型是用来制造低分辨率图像的方法。怎么做呢?

  1. 先让真实的高分辨率图像$y$变得模糊(通过和模糊核k做卷积)
  2. 然后把图像变小(执行尺度因子为$r$下采样操作)
  3. 接着给图像添加噪声n
  4. 最后,由于JPEG 压缩在现实世界图像中被广泛使用,对图片进行JPEG压缩

$x= \mathcal{D} ( y) = [ ( y\circledast k) \downarrow _r+ n] _{JPEG}$,其中\mathcal{D}表示退化过程。

经典的退化模型在合成训练数据时,虽然能够处理一些简单的真实样本,但对于现实世界中复杂的退化情况,尤其是那些未知的噪声和复杂的伪影,其处理能力有限。这是因为经典模型仅包含固定数量和类型的基本退化操作,无法准确模拟真实图像经历的复杂退化过程,导致合成的低分辨率图像与实际的退化图像存在较大差异。

图3:使用经典降解模型的合成数据训练的模型能够解决一些真实样本(左)。然而,对于复杂的真实世界图像,它们会放大噪声或引入振铃伪影(右)。放大以获得最佳视图

高阶退化模型

高阶退化模型将经典的 “一阶” 退化模型扩展为 “高阶”。具体而言,n 阶退化模型通过 n 个重复的退化过程来建模。每个退化过程都采用经典的退化模型(即先卷积模糊、再调整大小、添加噪声、最后进行 JPEG 压缩),但每个过程中的超参数(如模糊核的参数、噪声强度等)是不同的。这样可以模拟出更复杂多样的退化情况。例如,一个二阶退化模型在处理图像时,会先进行一次经典退化过程,得到一个中间的低分辨率图像,然后再对这个中间图像进行一次不同参数设置的经典退化过程,最终得到的低分辨率图像更接近真实世界中经过多次复杂退化后的图像。

\boldsymbol{x}=\mathcal{D}^n(\boldsymbol{y})=(\mathcal{D}_n\circ\cdots\circ\mathcal{D}_2\circ\mathcal{D}_1)(\boldsymbol{y}).

为了在模拟复杂退化的同时保持图像分辨率在合理范围,模型用随机调整大小操作替代了经典模型中的下采样操作。在实际应用中,经验上发现二阶退化过程在简单性和有效性之间取得了较好的平衡,能够解决大多数真实世界中的退化情况,所以论文中多采用二阶退化过程来进行实验和研究。不过需要注意的是,这种高阶退化模型虽然能够扩展可解决的退化边界,但仍然不能完全覆盖现实世界中的所有退化情况,只是相对于经典模型有了较大的改进。

图2:Real-ESRGAN采用的纯合成数据生成概述。它采用二阶退化过程来建模更实用的退化过程,其中每个退化过程采用经典的退化模型。详细列出了模糊、缩放、噪声和JPEG压缩的选择。我们还使用sinc滤波器合成常见的振铃和过冲失真。

高阶退化模型+sinc 滤波器

在现实中,很多常见的图像处理操作都可能使图片丢失了高频部分的信息,从而产生响铃伪影和过冲伪影。比如使用锐化算法过度增强图像边缘时,就容易产生过冲伪影,进而引发响铃伪影;JPEG 压缩过程中,由于对图像数据的处理方式,也可能导致这些伪影的出现。


响铃伪影在图像上的表现是在一些原本应该平滑过渡或者有清晰边缘的地方,出现了一圈一圈类似水波荡漾(像响铃产生的声波扩散形状)的纹路,就好像在图像边缘产生了多余的、不真实的纹理,使图像看起来模糊不清且不自然。

过冲伪影通常和响铃伪影一起出现,主要特征是在图像边缘处颜色或亮度的变化比正常情况更加剧烈,出现突然的跳跃,让边缘看起来很生硬、不真实。


为了在模型训练中更好地应对这些伪影,文中采用了 来模拟它们。sinc 滤波器是一种特殊的滤波器,它能够模拟出信号高频截断的效果,从而产生类似于响铃和过冲伪影的现象。

其核函数的计算公式为$k(i,j)=\frac{\omega_c}{2\pi\sqrt{i^2+j^2}}J_1(\omega_c\sqrt{i^2+j^2})$

这里$(i,j)$代表滤波器核的坐标位置;$\omega_\mathrm{c}$是一个控制截止频率的参数;$J_{1}$是第一类一阶贝塞尔函数。通过调整截止频率$\omega_\mathrm{c}$等参数,可以生成不同程度和样式的类似伪影效果。

在实际应用中,将 sinc 滤波器应用在两个关键的步骤:一是在图像进行模糊处理的时候这样可以让模糊效果更接近真实世界中可能出现伪影的模糊情况;二是在整个图像合成的最后一步,通过这种方式可以让合成的图像包含伪影特征,使训练数据更贴近真实的退化图像。

而且,最后一个 sinc 滤波器和 JPEG 压缩的顺序是随机交换的,这是因为在实际的图像退化过程中,可能先进行了一些操作产生了伪影然后进行 JPEG 压缩,也可能是先压缩后因为其他操作产生伪影,这样随机交换顺序可以更全面地覆盖各种可能的退化情况,让模型在训练过程中能够见识到更多不同类型的带有伪影的图像,从而提高模型对真实世界中存在响铃和过冲伪影图像的处理能力,使得最终恢复的图像在视觉效果上更加真实、自然,减少伪影带来的不良影响。

图 5:上方:存在振铃和过冲伪影的真实样本。下方:sinc 核(核大小为 21)的示例以及相应的滤波后图像。放大查看效果最佳。

2.2. 网络改进

生成器

在我们的方法中,采用了与 ESRGAN 相同的生成器结构。这个生成器是一个深度网络,其中包含多个残差密集块(RRDB)。这些 RRDB 在网络中起着关键作用,它们有助于更好地提取和融合图像特征。

为了能够处理不同的缩放因子,对原 ESRGAN 架构进行了扩展。具体而言,通过一种叫做像素逆混洗(pixel - shuffle)的操作来调整图像的空间大小和通道数量。这种操作可以在减少图像空间大小的同时增加通道大小,从而有效降低计算资源的消耗。这使得生成器在处理不同分辨率变化的盲超分辨率任务时更具灵活性和效率。

图4:Real-ESRGAN采用与ESRGAN相同的生成器网络。对于×2和×1的缩放因子,它首先采用像素反混洗操作来减少空间大小并将信息重新排列到通道维度。

判别器

U - Net 判别器:Real - ESRGAN 针对更复杂的退化情况改进了判别器。将原来的 VGG 风格判别器改为 U - Net 设计,并且在 U - Net 中加入了跳跃连接(skip - connections)。这种设计使得判别器能够为图像的每个像素输出一个表示其真实度的值。这与传统判别器相比有很大优势,因为它可以提供更详细、更局部化的反馈信息。例如,对于图像中的某个局部区域,如果它存在一些细微的伪影或者与真实高分辨率图像有差异,U - Net 判别器能够更精准地检测出来,从而更好地指导生成器的训练。

谱归一化(SN):同时,在判别器中采用了谱归一化技术。在生成对抗网络(GAN)的训练过程中,很容易出现训练不稳定的情况,进而导致生成的图像出现伪影等问题。谱归一化作为一种正则化方法,可以有效地稳定训练动态过程。它通过对判别器的权重矩阵进行归一化操作,限制了判别器的 Lipschitz 常数,使得训练过程更加平稳。这样可以在一定程度上缓解 GAN 训练过程中引入的伪影问题,实现局部细节增强与伪影抑制之间的平衡,提高生成图像的质量。

图6:带有谱归一化的U-Net判别器架构。

2.3. 训练策略改进 

训练过程分为两个阶段。

首先,训练一个以峰值信噪比(PSNR)为导向Real - ESRNet 模型。在这个阶段,主要使用 L1 损失函数来衡量生成图像与真实高分辨率图像之间的差异。这种基于 L1 损失的训练方式可以使生成器初步学习到如何生成相对清晰、与目标图像在像素值上较为接近的高分辨率图像。

然后,利用训练好的 Real - ESRNet 模型来初始化生成器,开始训练 Real - ESRGAN。在这个阶段,训练过程结合了多种损失函数,包括 L1 损失、感知损失(perceptual loss)和 GAN 损失,权重分别为\left \{ 1,1,0.1 \right \}。通过综合使用这些损失函数,可以让生成器在多个维度上优化生成的图像。例如,L1 损失继续保证图像的像素级相似性,感知损失关注图像的语义特征相似性,使生成图像在高层次特征上更接近真实图像,而 GAN 损失则从对抗训练的角度,促使生成器生成的图像能够 “骗过” 判别器,即生成更逼真的高分辨率图像。

2.4. 实验

训练集:DIV2K、Flickr2K、OutdoorSceneTraining 数据集

测试集:Set5、Set14、BSD100、Urban100 数据集

训练参数:训练的高分辨率补丁大小设置为 256

                 使用四个 NVIDIA V100 GPU,总批量大小为48

                 采用 Adam 优化器;

                 Real - ESRNet 从 ESR - 进行微调,GAN 用于更快的收敛;

                 Real - ESRNet 训练 1000K 次迭代,学习率为 2\times 10^{-4}

                 Real - ESRGAN 训练 400K 次迭代,学习率为 1\times 10^{-4}

                采用指数移动平均(EMA)以获得更稳定的训练和更好的性能。

降级细节:采用二阶降级模型,两种降级过程大多设置相同。使用高斯核、广义高斯核和平台型核,概率分别为 {0.7,0.15,0.15};模糊核大小随机选自 {7,9,...21};模糊标准差 σ 从 [0.2,3] 中抽样(第二降级过程为 [0.2,1.5]);形状参数从 [0.5,4] 和广义高斯及平台型核的 [1,2] 中抽样;还有概率为 0.1 的 sin 核;以 0.2 的概率跳过第二次模糊降级。使用高斯噪声和泊松噪声,概率为 {0.5,0.5};噪声 sigma 范围和泊松噪声尺度分别为 [1,30] 和 [0.05,3](第二降级过程为 [1,25] 和 [0.05,2.5]);灰噪声概率为 0.4。JPEG 压缩质量因子在 [30,95]。最终的 sinc 滤波器以 0.8 的概率应用。

评估指标:峰值信噪比(PSNR)、结构相似性(SSIM)、感知指数(LPIPS)

对比模型:Bicubic、SRCNN、VDSR、EDSR、RCAN

训练对配对池:为提高训练效率,在 PyTorch 中实现退化过程并使用 CUDA 加速实时合成训练对,但批处理限制了退化多样性,所以采用训练对池增加多样性,池大小设为 180,每次迭代从池中随机选样本形成训练批次。

训练过程中的锐化:在训练过程中锐化真实图像,将使用锐化真实图像训练的模型称为 Real - ESRGAN +,该方法能在提升视觉清晰度的同时避免引入明显伪影。

3. HOW

图 1:双三次上采样、ESRGAN [48]、RealSR [18] 和我们的 Real - ESRGAN 在现实生活图像上的结果比较。用纯合成数据训练的 Real - ESRGAN 模型能够在增强细节的同时去除常见真实世界图像中恼人的伪影。

3.1. 与先前工作比较

在多个真实世界图像的测试数据集上进行测试,与 ESRGAN、DAN、CDC、RealSR 和 BSRGAN 等先进方法比较,Real - ESRGAN 在去除伪影和恢复纹理细节方面表现更优。例如,在处理包含过度产生伪影(如字母周围白色边缘)的样本时,Real - ESRGAN 能通过模拟相关伪影有效去除;对于包含未知复杂降解的样本,Real - ESRGAN 也能更好地处理,并且能够恢复更真实的纹理,而其他方法存在无法去除退化或添加不自然纹理的问题。Real - ESRGAN +(使用锐化真实数据训练)进一步提高了视觉清晰度。

3.2. 消融研究

二阶退化模型:在 Real - ESRNet 上进行,用经典退化模型替换二阶退化模型。结果显示使用经典一阶退化模型训练的模型无法有效去除某些样本(如墙壁噪声、小麦田模糊)中的问题,而 Real - ESRNet 可以。

sinc 滤波器:训练过程中不使用 sinc 滤波器,恢复结果会放大输入图像中的振铃和过冲伪影(尤其在文本和线条周围),使用 sinc 滤波器训练的模型可去除这些伪影。

带有 SN 正则化的 U - Net 鉴别器:先采用 ESRGAN 设置(VGG 风格鉴别器及其损失权重),模型无法恢复细节纹理(如砖块、灌木)且在灌木树枝上产生伪影;使用 U - Net 设计改善了局部细节,但引入不自然纹理且增加训练不稳定性;SN 正则化可改善恢复纹理并稳定训练动态。

更复杂的模糊核:在模糊合成中去除广义高斯核和平坦形状的核,在一些真实样本上,模型去除模糊和恢复清晰边缘的能力下降,但在大多数样本中差异不显著,不过 Real - ESRGAN 仍采用这些更复杂的模糊核以获取稍好性能。

3.3. 模型局限性

尽管 Real - ESRGAN 在恢复真实世界图像方面表现较好,但仍存在局限性:

部分恢复图像(尤其是建筑和室内场景)因混叠问题出现扭曲线条

GAN 训练在某些样本上引入不愉快伪影

无法去除真实世界中分布外的复杂退化,甚至可能放大这些伪影,这些问题在实际应用中仍需解决。

;