论文名称:Enhanced Deep Residual Networks for Single Image Super-Resolution
论文下载地址:https://arxiv.org/pdf/1707.02921.pdf
论文代码地址:https://github.com/sanghyun-son/EDSR-PyTorch
论文参考翻译:https://blog.csdn.net/qq_43620967/article/details/126210566
论文标题
1.论文概述
- 在本论文中,作者提出了一种增强的深度超分辨率网络(EDSR),其性能超过了目前最先进的SR方法。
- EDSR模型的显著性能改进是通过去除传统残差网络中不必要的模块来优化。并且在稳定训练过程中的同时,通过扩大模型尺寸(即分为baseline和扩大后的模型,在深度和宽度上进行扩展)进一步提高性能。
- 作者还提出了一种新的多尺度超分辨率模型(MDSR)和训练方法,该方法在单一模型中重建不同放大因子的高分辨率图像。
2.论文提出的背景
作者首先提出了一些之前研究中的不足之处,总结如下:
- 单图像超分辨率问题的目标是从一个低分辨率图像 I L R I_{LR} ILR重建一个高分辨率图像 I H R I_{HR} IHR。许多研究假设 I L R I_{LR} ILR是 I H R I_{HR} IHR的双倍降采样版本。但是这种假设没有考虑退化因素,例如模糊、噪声等。(对于该问题,论文中其实也没有说出解决办法,只是在NTIRE2017 SR Challenge这一节中说明他们提出的模型对于不同的下采样条件非常的鲁棒)
- 深度神经网络的重建性能对微小的结构变化敏感。同样,相同的模型通过不同的初始化方法和训练技术也会导致不同的性能水平。因此,精心设计的模型体系结构和复杂的优化方法是训练神经网络的关键。
- 现有的SR算法将不同尺度因子的超分辨率视为独立的问题,而没有考虑和利用不同尺度之间的相互关系。需要特定尺度的网络和训练方法来处理不同尺度问题。(VDSR可以在单个模型中联合处理多个尺度的超分辨率。VDSR的作者在实验中证明了使用多尺度数据训练VDSR可以显著提高性能,并优于特定尺度模型的性能,这意味着特定尺度模型之间存在冗余,也可以认为多个尺度的超分辨率问题是相互关联的任务)
- VDSR模型引入了残差网络,SRResNet也引用了ResNet架构以良好的性能成功地解决了时间和内存问题,但SRResNet未对ResNet架构做任何修改而直接应用到SR问题。然而,原始ResNet架构被提出是为了解决更高级别的计算机视觉问题,将ResNet架构直接应用到低级视觉问题可能是次优的。
为了解决上面的这些问题,作者首先基于SSResNet体系结构,通过分析和删除不必要的模块进行优化,以简化网络体系结构(解决问题2和4)。其次,作者研究了模型训练方法,为了在训练过程中利用与尺度无关的信息,作者从预先训练的低尺度模型中训练高尺度模型。将一个低尺度模型迁移到其他高尺度中进行训练(解决问题2)。最后,作者提出了一种新的多尺度架构,它在不同的尺度上共享大多数参数。与多个单尺度模型相比,所提出的多尺度模型使用的参数明显更少,但显示出了相当的性能(解决问题3)。
3.论文提出的方法
在本节中将描述作者所提出的网络结构。首先,描述作者修改的残差结构,这个结构去掉了原残差结构中的BN层,因此结构更加简单。通过实验表明,作者的网络优于原始的残差结构,并提高了计算效率。其次,介绍一个处理特定尺度的单尺度架构(EDSR)和一个在单个模型中重建不同尺度高分辨率图像的多尺度架构(MDSR)。EDSR和MDSR架构的Building Block都是修改后的ResBlock结构。
3.1 残差结构
在VDSR中引入了残差网络,在SRResNet中也引入了ResNet架构。而在SRResNet中并没有对ResNet架构做任何的修改,作者认为这种直接的应用是次优的,所以修改了ResNet架构以进一步提升性能。
如上图所示:比较了原始ResNet、SRResNet和作者所提出网络的Building block。作者的block中删除了批处理归一化层(BN层)。作者给出了删除该层的原因:由于批处理归一化层对特征进行了归一化,通过对特征进行归一化消除了网络的范围灵活性。删除原始ResNet结构中的BN层这一创新点来自于Nah的这篇去模糊论文。这个简单的修改大大提升了性能。具体表现在:减少了GPU内存的使用,因为BN层消耗了与前面卷积层相同数量的内存。
3.2 单尺度模型
-
提高网络模型性能的最简单方法是增加参数的数量。在卷积神经网络中,模型的性能可以通过网络层的堆叠(增加深度)和增加滤波器的数量(增加宽度)来提高。具有深度B和宽度F的一般CNN架构大约占用 O ( B F ) O(BF) O(BF)的内存和 O ( B F 2 ) O(BF^2) O(BF2)的参数。因此,在考虑有限的计算资源时,增加F而不是B可以使模型的性能最大化。即增加F可以更多的提升参数数量而不明显占用内存。
-
作者进一步发现将F增加到一定数量后将会导致训练时数值上的不稳定。为了解决这一问题,作者采用了因子为0.1的残差缩放层。在每个ResBlock中,将残差缩放层放置在最后一个卷积层之后(见下图)。当使用大量的滤波器时,残差缩放层能大大稳定训练过程。在测试阶段,为了提升计算效率,可以将残差缩放层整合到前一个卷积层中。
1.EDSR-baseline——B=16 ; F=64; 无残差缩放
2.EDSR——B=32;F=256;残差缩放因子=0.1
-
训练加速(解决问题2):在训练上采样因子为x3和x4的模型时,作者用预先训练的x2网络初始化模型参数。也就是在第2节中提出的从预先训练的低尺度模型中训练高尺度模型,x2模型是从零开始训练的,在模型收敛后,将其作为其他尺度的预训练网络。 这种策略加速了训练。如下图所示,蓝线为使用了预先训练的x2模型,绿线为随机初始化开始训练的模型。可见蓝线训练时的收敛速度比绿线要快。从该图中也侧面说明了多个尺度的超分辨率是相互关联的任务。
3.3 多尺度模型
-
作者认为,既然多个尺度的超分辨率是相互关联的任务,因此也可以像VDSR一样,通过构建一个利用尺度相关性的多尺度体系结构来解决多个尺度的超分辨率问题。作者设计了多尺度基线模型,如下图所示:
1.MDSR-baseline——B=16;F=64;无残差缩放
2.MDSR模型——B=80;F=64;无残差缩放 -
在多尺度体系结构中,作者引入了特定尺度的处理模块来处理多个尺度的超分辨率。首先,预处理模块位于网络的头部,以减少来自不同尺度输入图像的方差。每个预处理模块由两个具有5*5内核的残差块组成。通过对预处理模块采用较大的内核,可以保持在特定尺度部分的浅层使用大的感受野。在多尺度模型的末端,特定尺度的上采样模块被平行放置以处理多尺度重建。上采样模块的结构和单尺度模型的结构相似。
3.4 模型比较
- 从参数的角度上看,3个不同尺度的EDSR-baseline模型共有4.5M个参数,而MDSR-baseline模型只有3.2M个参数,参数少了很多,却可以达到相当的效果。(前面提到过提高网络模型性能的最简单方法是增加参数的数量)
- 从模型的角度上看,MDSR和MDSR-baseline相比,MDSR的深度是MDSR-baseline的5倍,但只需要2.5倍的参数,因为ResidualBlock比特定尺度的部分要轻量。
4.实验
4.1数据集和损失函数
- 数据集:DIV2K数据集是一个新提出的高质量(2K)图像数据集,用于图像恢复任务。DIV2K数据集由800张训练图像,100张验证图像和100张测试图像组成。作者报告并比较了在100张验证数据集上的性能(因为测试数据集的ground truth未发布),此外还比较了在四个基准数据集上的性能:Set5、Set14、B100和Urban100 。
- 损失函数:论文中采用L1损失函数来训练网络,因为L1损失比L2损失具有更好的收敛性。(L2通常能使PSNR最大化)
4.2 在DIV2K数据集上进行评估
- 下图为模型的具体说明。在实验中作者用3x 1 0 5 10^5 105次更新对所有模型进行训练。对DIV2K验证集的10张图像进行评价,采用PSNR和SSIM标准。对于评价,使用完整的RGB通道,并忽略来自边界的(6 +比例)像素。
下表为定量结果显示。从下表中我们可以观察到如下结论:
注释:
a.采用L1损失函数训练的SRResNet在性能方面略高于采用L2损失函数训练的SRResNet。
b.最后两列显示了使用几何自集成技术的最终较大模型EDSR+和MDSR+的显著性能增益。
c.EDSR+和MDSR+为以EDSR和MDSR为基础,采用几何自集成策略生成的模型,从上表可以观察到采用该策略可以带来性能增益。(几何自集成策略详细见原论文)
- 如下图所示,为DIV2K数据集上的定性结果:可以观察到所提出的模型成功地重建了HR图像中的细节纹理和边缘,比VDSR和SRResNet模型性能要好。
4.3 基准测试结果
- 在下表中给出了在基准测试集上的定量结果,并将提出的模型与其他最先进的模型进行比较。
注释:上表中的红色字体代表最好的性能,蓝色字体代表次好的性能。可以观察到作者提出的模型取得了最好的结果。 - 如下图所示为定性结果,可以观察到所提出的模型成功地重建了HR图像中的细节纹理和边缘,与以往的工作相比,呈现出更好的SR输出。