项目地址:https://github.com/xinntao/BasicSR
超分辨率生成对抗网络(SR GAN)[1]是一项开创性的工作,能够在单图像超分辨率期间生成逼真的纹理。
然而,幻觉细节通常伴随着令人不快的伪影。
为了进一步提高视觉质量,我们深入研究了SRGAN 网络架构,对抗性损失和感知损失的三个关键组成部分,并对其中的每一个进行了改进,以推导出增强型SRGAN(ESRGAN)。
特别是,我们在没有批量标准化的情况下引入剩余残差密集块(RRDB)作为基本网络构建单元。
此外,我们借用RaGAN [2]的思想来让判别器预测图像的相对真实性而不是图像的绝对真实性。
最后,我们通过使用激活前的特征来改善感知损失,这可以提供对亮度一致性和纹理恢复更强的监督力。
从这些改进中,所提出的ESRGAN实现了始终更好的视觉质量,具有比SRGAN更逼真和自然的纹理并且赢得了PIRM2018-SR Challenge1中的第一名[3]。
单图像超分辨率(SISR)作为一种基本的低级视觉问题,已经引起了研究界和AI公司越来越多的关注。
SISR旨在从单个低分辨率(LR)图像中恢复高分辨率(HR)图像。
自从Dong[4]等人提出的SRCNN的先驱工作以来,深度卷积神经网络(CNN)方法带来了繁荣发展。
各种网络架构设计和训练策略不断提高SR性能,尤其是峰值信噪比(PSNR)值[5,6,7,1,8,9,10,11,12]。
然而,这些面向PSNR的方法往往会输出过度平滑的结果,而没有足够的高频细节,因为PSNR指标从根本上不同意人类观察者的主观评价[1]。
几种感知驱动方法已经被提出来改善SR结果的视觉质量。
例如,提出感知损失[13,14]来优化特征空间中的超分辨率模型而不是像素空间。
生成的对抗性网络[15]被[1,16]引入SR,以鼓励网络支持看起来更像自然图像的解决方案。
进一步整合语义图像先验以改善恢复的纹理细节[17]。
SRGAN [1]是追求视觉上令人愉悦的结果的一块里程碑。
基本模型使用残差块[18]构建,并使用GAN框架中的感知损耗进行优化。
通过所有这些技术,SRGAN显着提高了重建的整体视觉质量,而不是面向PSNR的方法。
然而,SRGAN结果与真实数据(GT)图像之间仍存在明显差距,如图1所示。
图1:SRGAN2的×4的超分辨率结果。
提出的ESRGAN和Ground Truth。 ESRGAN在锐度和细节方面优于SRGAN。
在本研究中,我们重新审视了SRGAN的关键组件,并从三个方面改进了模型。
首先,我们通过引入剩余残余密集块(RDDB)来改进网络结构,该块具有更高的容量和更容易训练。
我们还删除了[20]中的批量标准化(BN)[19]层,并使用残差缩放[21,20]和更小的初始化来促进训练非常深的网络。
其次,我们使用相对平均GAN(RaGAN)来改进鉴别器[2],它学会判断一个图像比另一个图像更真实,而不是“一个图像是真实的还是假的”我们的实验表明这种改进有助于生成器恢复更真实的纹理细节。
第三,我们建议通过在激活之前使用VGG功能而不是像SRGAN中激活后使用VGG功能来改善感知损失。
我们凭经验发现调整后的感知损失提供了更清晰的边缘和更加视觉上令人愉悦的结果,如第4.4节所示。
大量实验表明,增强型SRGAN,称为ESRGAN,在锐度和细节方面始终优于最先进的方法(见图1和图7)。
我们采用ESRGAN的变体参与PIRM-SR挑战[3]。
这一挑战是第一次基于[22]以感知质量意识方式评估表现的SR竞赛,其中作者声称失真和感知质量是相互矛盾。
感知质量由non-reference measures of Ma's score[23]和NIQE[24]来判断,即感知指数。
较低的感知指数代表更好的感知质量。
如图2所示,感知 - 失真平面被划分为由均方根误差(RMSE)上的阈值定义的三个区域,并且在每个区域中实现最低感知指数的算法成为区域冠军。
我们主要关注区域3,因为我们的目标是将感知质量提升到新的高度。
由于上述改进和Sec4.6中讨论的一些其他调整,我们提出的ESRGAN在PIRM-SR挑战赛(第3区)中以最佳感知指数获得了第一名。
图2:PIRM自我验证数据集上的感知 - 失真平面。
我们展示了EDSR [20],RCAN [12]和EnhanceNet [16]以及提交的ESRGAN模型的基线。 蓝点由图像插值产生。
为了平衡视觉质量和RMSE / PSNR,我们进一步提出了网络插值策略,可以不断调整重建风格和平滑度。
另一种替代方案是图像插值,其直接逐像素地插入图像。
我们采用这种策略参与区域1和区域2。
网络插值和图像插值策略及其差异在Sec3.4中讨论。
我们专注于深度神经网络方法来解决SR问题。
作为一项先驱工作,Dong等人[4,25]提出SRCNN以端到端的方式学习从LR到HR图像的映射,与以前的工作相比具有更好的性能。
后来,该领域见证了各种网络架构,如具有残差学习的更深层网络[5],拉普拉斯金字塔结构[6],残差块[1],递归学习[7,8],密集连接网络[ 9],深背投影[10]和残余密集网络[11]。
具体而言,Lim等[20]通过去除残余块中不必要的BN层并扩展模型尺寸来提出EDSR模型,从而实现了显着的改进。
Zhang等[11]提出在SR中使用有效残余密集块,并进一步探索具有信道关注的更深层网络[12],从而实现最先进的PSNR性能。
除了监督学习外,还引入了其他方法,如强化学习[26]和无监督学习[27],以解决一般图像恢复问题。
已经提出了几种方法来稳定训练非常深的模型。
例如,开发残余路径以稳定训练并改善性能[18,5,12]。
Szegedy等人[21]首先采用残余缩放,也用于EDSR。
对于一般的深度网络,He等人[28]提出了一种针对没有BN的VGG型网络的鲁棒初始化方法。
为了便于训练更深的网络,我们开发了一个紧凑而有效的剩余残留密集块,这也有助于提高感知质量。
除此之外,还提出了感知驱动方法来改善SR结果的视觉质量。
基于更接近感知相似性的想法[29,14],提出了感知损失[13],通过最小化特征空间中的误差而不是像素空间来增强视觉质量。
通过使用关注特征分布的目标而不是仅仅比较外观来开发上下文丢失[30]以生成具有自然图像统计的图像。
Ledig等[1]提出了SRGAN模型,该模型使用感知损失和对抗性损失来支持驻留在自然图像流形上的输出。
Sajjadi等[16]开发了一种类似的方法,并进一步探索了局部纹理匹配损失。
基于这些工作,Wang等人[17]提出了空间特征变换,以有效地将语义先验结合到图像中并改善恢复的纹理。
在整个文献中,照片写实主义通常通过与GAN的对抗训练来实现[15]。
最近,有许多工作专注于开发更有效的GAN框架。
WGAN [31]建议最小化Wasserstein距离的无效和有效近似,并通过权重限幅来规范鉴别器。
用于鉴别器的其他改进的正则化包括梯度限幅[32]和谱归一化[33]。
相对判别式[2]的开发不仅是为了增加生成数据的真实概率,而且还是为了同时降低实际数据是真实的概率。
在这项工作中,我们通过采用更有效的RaGAN来增强SRGAN。
SR算法通常通过几种广泛使用的失真度量来评估,例如PSNR和SSIM。
然而,这些指标从根本上不同意人类观察者的主观评价[1]。非参考测量用于感知质量评估,包括Ma's score[23]和NIQE [24],两者都用于计算PIRM-SR挑战中的感知指数[3]。
在最近的一项研究中,Blau等[22]发现扭曲和感知质量彼此不一致。
我们的主要目标是提高SR的总体感知质量。
在这部分,我们首先描述我们提出的网络结构,
然后讨论判别器和感知损失的改进。
最后,我们描述为了平衡感知质量和PSNR的网络插值策略。
图3:我们采用SRResNet [1]的基本架构,其中大部分计算在LR特征空间中完成。
我们可以选择或设计“基本块”(例如,残余块[18],密集块[34],RRDB)以获得更好的性能
为了进一步提高SRGAN恢复图像质量,我们主要为生成器G的结构做了两个改进:
1)去除掉所有的BN层。
2)提出用残差密集块(RRDB)代替原始基础块,其结合了多层残差网络和密集连接,如图4所示。
图4:
左:我们去除SRGAN中残余块中的BN层。 右:在我们的深层模型中使用RRDB块,β是残差缩放参数。
去除BN层已经被证明有助于增强性能和减少计算复杂度在不同的PSNR-oriented任务,包括SR[20]和去模糊[35]。
BN层在训练期间使用批次的均值和方差对特征进行归一化,在测试期间使用整个训练数据集的估计均值和方差。
当训练和测试数据集的统计数据差异很大时,BN层往往引入不适的伪影,限制了泛化能力。
我们以经验观察到,BN层有可能当网络深和在GAN网络下训练时带来伪影。
这些伪影偶尔出现在迭代和不同设置之间,违反了稳定性能超过训练的需求。
因此,我们为了训练稳定和一致性去除了BN层。
此外,去除BN层有助于提高泛化能力,减少计算复杂度和内存使用。
我们保持SRGAN的高级架构设计(参见图3),并使用如图4所示的新的基本块即RRDB。
根据观察,更多的层和连接总是能提高性能[20,11,12],所提出的RRDB采用比SRGAN原始残差块更深层和更复杂的结构。
特别的是,如图4所示,所提出了RRDB拥有residual-in-residual结构,残差学习用于不同的层。
相似的网络结构在[36]被提出,同样也用了多层残差网络。
然而,我们的RRDB不同于[36],我们在主要路径中[11]使用了密集块[34],其中网络容量从密集连接变得更高。
为了提升结构,我们也探索了几种方法来促进训练一个非常深的网络:
1)残差缩放[21,20],即将残差乘以0和1之间的常数,然后将它们添加到主路径以防止不稳定。
2)较小初始化,我们经验发现,当初始参数方差变小时,残差结构更容易训练。更多的讨论在supplementary material。
训练的细节和网络的有效性在第4节。
除了改进生成器的结构,我们还增强了判别器,基于RaGAN[2]。
不同于SRGAN标准的判别器D,估算一个输入图像真实和自然的可能性,如图5所示,相对判别器试图预测真实图像比假图像更真实的概率。
图5:标准鉴别器和相对判别器之间的区别
特别地,我们用相对平均判别器RaD代替标准判别器,表示为。
标准判别器在SRGAN可以表示为,其中是sigmoid函数,是非变换判别器输出。
RaD可以用公式表示为,其中表示在mini批处理中对所有假数据取平均值的操作。
判别器损失可以定义为:
生成器的对抗损失是以一种对称的形式:
其中和代表LR图像输入。
生成器的对抗损失包含了和。
因此,我们的生成器优势适合于对抗训练中生成的数据和实际数据的渐变,而在SRGAN中,只有生成的部分生效。
在4.4节中,我们展示判别器模态化帮助学习更清晰的边缘和更细腻的纹理。
我们也开发了一种更有效的感知损失,在SRGAN通过激活前约束特征而不是激活后。
与这个想法相近的感知相似[29,14],Johnson等人[13]提出感知损失并且在SRGAN中扩展。
感知损失先前定义在预先训练的深层网络的激活层上,其中两个激活特征之间的距离被最小化。
与常规相反,我们提出在激活层之前使用特性,这将克服原始设计的两个缺点。
第一,被激活的特征是非常稀疏的,特别是在非常深的网络之后,如图6所示。
图6:激活图像'狒狒'之前和之后的代表性特征图。 随着网络的深入,激活后的大多数功能变为非活动状态,而激活前的功能包含更多信息。
例如,图像“baboon”激活神经元的平均百分率在VGG19-54层后仅为11.17%(我们使用预先训练的19层VGG网络[37],其中54表示最大池化层之前通过卷积获得的特征,表示高级特征,类似地,22表示低级特征)。
稀疏激活提供弱的监督,从而导致性能较差。
第二,使用激活后的特征也会造成重建后的图像亮度与真实图像不一致,这点我们将在4.4节展示。
因此,生成器完整的损失可以表示为:
其中是评估恢复图像和真实图像之间的1-范数距离内容损失,、是平衡不同损失项的系数。
我们也探索了一种感知损失的变体在PIRM-SR挑战赛中。
与常用的采用VGG网络进行图像经典训练的感知损失相比,我们提出了一种更适合于SR-MINC损耗的感知损失。
这个是基于材料恢复VGG网络模型进行微调,其着眼于纹理而不是目标物体。
虽然MINC损失带来的感知指标的增益是微乎其微的,但我们仍然认为探索以纹理为中心的感知损失对于SR是至关重要的。
为了去掉在GAN-based 方法中令人不愉快的噪声,同时保证好的感知质量,我们提出一个灵活有效的策略,即网络插值。
特别的是,我首先训练一个PSNR-oriented网络,然后通过微调GAN-based网络获得。
我们对这两个网络的所有相应参数进行插值,得到一个插值模型,其参数可以表示为:
其中,和是,和的参数;是插值参数。
网络插值有两个优点。
第一,首先,插值模型能够在不引入伪影的情况下对任何可行的产生有意义的结果。
第二,我们可以在不重新训练模型的情况下,持续地平衡感知质量和感觉。
我们还探索替代的方法来平衡PSNR为导向和基于GAN的方法的影响。
例如,一个可以直接对图像输出进行插值(像素到像素)而不是网络插值。
然而,这样的方法无法在噪声和模糊之间实现良好的权衡,即插值图像要么太模糊,要么带有噪声(见4.5节)。
其它方法是为内容损失和对抗损失调整权值,即参数和在公式(3)。
但是这种方法需要调整损失权重并微调网络,因此实现图像样式的连续控制成本太高。
在SRGAN [1]之后,所有实验都在LR和HR图像之间以×4的比例因子进行。
我们通过使用MATLAB双三次核函数对HR图像进行下采样来获得LR图像。
小批量大小设置为16。
裁剪的HR补丁的空间大小为128×128。
我们观察到,训练更深的网络可以从更大的补丁大小中受益,因为扩大的感受野有助于捕获更多的语义信息。
但是,它需要更多的训练时间并消耗更多的计算资源。
在面向PSNR的方法中也观察到这种现象(参见补充材料)。
训练过程分为两个阶段。
首先,我们训练一个具有L1损失的面向PSNR的模型。
学习率初始化为2×10^-4,每2×10^5个小批量更新衰减2倍。
然后,我们使用经过训练的面向PSNR的模型作为生成器的初始化。
使用等式(3)中的损失函数训练生成器,λ= 5×10^-3且η= 1×10^-2。
学习率设置为1×10^-4,并在[50k,100k,200k,300k]迭代时减半。
具有逐像素丢失的预训练有助于基于GAN的方法获得更加视觉上令人愉悦的结果。
原因是
1)它可以避免生成器的不希望的局部最优;
2)在预训练之后,鉴别器在一开始就接收相对好的超分辨图像而不是极端假图像(黑色或噪声图像),这有助于它更多地关注纹理辨别。
为了优化,我们使用Adam [39],其中β1= 0.9,β2= 0.999。
我们交替更新发生器和鉴别器网络,直到模型收敛。
我们为我们的生成器使用两个设置 - 其中一个包含16个残差块,容量类似于SRGAN,另一个是具有23个RRDB块的更深层模型。
我们使用PyTorch框架实现我们的模型,并使用NVIDIA Titan Xp GPU进行训练。
对于训练,我们主要使用DIV2K数据集[40],这是用于图像恢复任务的高质量(2Kresolution)数据集。
除了包含800个图像的DIV2K训练集之外,我们还为我们的训练寻找具有丰富多样纹理的其他数据集。
为此,我们进一步使用Flickr2K数据集[41],包括在Flickr网站上收集的2650个2K高分辨率图像,以及室外场景训练(OST)[17]数据集,以丰富我们的训练集。
我们凭经验找到使用具有更丰富纹理的大型数据集有助于生成器产生更自然的结果,如图8所示。
我们在RGB通道中训练我们的模型,并使用随机水平翻转和90度旋转来增强训练数据集。
我们在广泛使用的基准数据集上评估我们的模型 - Set5 [42],Set14 [43],BSD100 [44],Urban100 [45]以及PIRM-SR挑战中提供的PIRM自我验证数据集。
我们将几个公共基准数据集的最终模型与最先进的面向PSNR的方法(包括SRCNN [4],EDSR [20]和RCAN [12])以及包括SRGAN在内的感知驱动方法进行比较[1]和增强网[16]。
由于感知质量没有有效和标准的度量标准,我们在图7中提供了一些有代表性的定性结果。
PSNR(在YCbCr颜色空间中的亮度通道上评估)和PIRM-SR挑战中使用的感知指数也提供给参考。
图7:ESRGAN的定性结果。
ESRGAN产生更多的自然纹理,例如动物毛皮,建筑结构和草纹理,以及不那么令人不愉快的文物,例如SRGAN在脸上的人工制品。
从图7中可以看出,我们提出的ESRGAN在锐度和细节方面都优于以前的方法。
例如,与面向PSNR的方法相比,ESRGAN可以产生更清晰,更自然的狒狒胡须和草纹理(见图像43074),这些方法往往会产生模糊的结果,而且比以前的基于GAN的方法,其纹理不自然且包含令人不快的噪声。
ESRGAN能够在构建中生成更详细的结构(参见图像102061),而其他方法无法生成足够的细节(SRGAN)或添加不需要的纹理(增强网络)。
此外,先前基于GAN的方法有时会引入令人不愉快的伪影,例如,SRGAN会增加面部皱纹。我们的ESRGAN摆脱了这些文物并产生了自然的效果。
为了研究每个组件在提议的ESRGAN中的效果,我们逐渐修改基线SRGAN模型并比较它们的差异。
整体视觉比较如图8所示。
每列代表一个模型,其配置显示在顶部。
红色标志表示与之前型号相比的主要改进。
图8:用于显示ESRGAN中每种成分的影响的总体视觉比较。
每列代表一个模型,其配置位于顶部。 红色标志表示与之前型号相比的主要改进
详细讨论如下。
BN删除。
我们首先删除所有BN层,以获得稳定且一致的性能,而不会产生伪影。
它不会降低性能,但会节省计算资源和内存使用量。
对于某些情况,从图8中的第2和第3列可以观察到略微改善(例如,图像39)。
此外,我们观察到当网络更深且更复杂时,具有BN层的模型更可能介绍令人不快的文物。
这些例子可以在补充材料中找到。
在感知损失激活之前。
我们首先证明在激活之前使用特征可以导致重建图像的更准确的亮度。
为了消除纹理和颜色的影响,我们使用高斯核过滤图像并绘制其灰度对应的直方图。
图9显示了每个亮度值的分布。
图9:激活前和激活后的比较
使用激活的特征使分布向左倾斜,从而产生调光器输出,同时在激活之前使用特征导致更接近地面实况的更准确的亮度分布。
我们可以进一步观察到,在激活之前使用特征有助于产生更清晰的边缘和更丰富的纹理,如图9b(见鸟羽)和图8(见第3和第4列)所示,因为激活之前的密集特征提供了更强的监督比稀疏激活可以提供。
RaGAN。
RaGAN使用改进的相对判别器,这有助于学习更清晰的边缘和更细致的纹理。
例如,在图8的第5列中,生成的图像比其左边的图像更清晰,纹理更丰富(参见狒狒,图像39和图像43074)。
使用RRDB的更深的网络。
具有所提出的RRDB的更深的模型可以进一步改善恢复的纹理,尤其是对于诸如图8中的图像6的屋顶的常规结构,因为深度模型具有捕获语义信息的强表示能力。
此外,我们发现更深的模型可以减少令人不快的噪音,如图8中的图像20。
与SRGAN相比,SRGAN声称更深层次的模型越来越难以训练,由于上面提到的改进特别是没有BN层的RRDB,我们更深层次的模型显示了其优越的性能和易于训练。
我们比较了网络插值和图像插值策略在平衡面向PSNR的模型和基于GAN的方法的结果时的效果。
我们对这两种方案应用简单的线性插值。
插值参数α从0到1中选择,间隔为0.2。
如图10所示,基于纯GAN的方法产生锐利边缘和更丰富的纹理,但具有一些令人不愉快的伪像,而纯PSNR导向方法输出卡通风格的模糊图像。
图10:网络插值和图像插值之间的比较。
通过采用网络插值,在保持纹理的同时减少了令人不快的伪像。
相比之下,图像插值无法有效地去除这些伪像。
有趣的是,观察到网络插值策略提供了对图10中的平衡感知质量和保真度的平滑控制。
我们采用ESRGAN的变体参与PIRM-SR挑战[3]。
具体而言,我们使用提议的ESRGAN和16个残差块,并根据经验进行一些修改以满足感知指数。
1)MINC损失用作感知损失的变体,如第3.3节中所述 。尽管感知指数略有增加,但我们仍然认为,探索关注纹理的感知损失对SR至关重要;
2)原始数据集[24],用于学习感知指数,也用于我们的悬链;
3)由于PSNR约束,使用高达η= 10的损失L1;
4)我们还使用反投影[46]作为后处理,这可以提高PSNR,有时可以降低感知指数。
对于需要更高PSNR的其他区域1和2,我们在ESRGAN的结果和面向PSNR的方法RCAN [12]的结果之间使用图像插值。
尽管我们通过使用网络插值方案观察到更加视觉上令人愉悦的结果,但是图像插值方案实现了更低的感知指数(越低越好)。
我们提出的ESRGAN模型在具有最佳感知指数的PIRM-SR挑战赛(第3区)中获得第一名。
我们提出了一种ESRGAN模型,该模型比以前的SR方法具有更好的感知质量。
该方法在感知指数方面在PIRM-SR挑战赛中获得第一名。
我们已经制定了一个新颖的架构,其中包含几个没有BN层的RDDB块。
此外,采用包括残差缩放和较小初始化的有用技术来促进所提出的深度模型的训练。
我们还介绍了使用RaGAN作为鉴别器,它学会判断一个图像是否比另一个更真实,引导生成器恢复更详细的纹理。
此外,我们通过使用激活前的功能增强了感知损失,这提供了更强的监督,从而恢复更准确的亮度和逼真的纹理。