【超分辨率】VDSR论文笔记

论文名称:Accurate Image Super-Resolution Using Very Deep Convolutional Networks
论文下载地址:https://arxiv.org/pdf/1511.04587v1.pdf
论文代码地址:https://github.com/twtygqyy/pytorch-vdsr
翻译参考:https://blog.csdn.net/qq_41807261/article/details/114572603


1.论文概述

  1. 在本论文中提出了一种高精度的单图像超分辨率方法。作者受到图像分类网络VGGNet的启发,使用了一个非常深的卷积网络应用于超分辨率领域,最终的网络模型达到20层。
  2. 作者发现通过在深层网络结构中多次级联小型滤波器,可以有效的利用大型图像区域上的上下文信息。
  3. 作者通过仅学习残差和使用极高的学习率来改善深层网络收敛慢的问题。
  4. 最终提出的方法无论是精度上还是视觉提升上都比现有的方法要好

2.论文提出的背景

在本论文中,作者提出了SRCNN的局限性:1.它依赖小图像区域的上下文;2.训练收敛太慢;3.网络只适用于一个采样scale。作者基于这些局限性提出了自己的解决方法。

  1. 上下文信息:作者在深层网络中使用大感受野(感受野指的是一个特定的 CNN 特征(特征图上的某个点)在输入空间所受影响的区域)来提取大尺寸图像中的上下文信息。
  2. 收敛慢:作者采用残差学习卷积神经网络和高学习率方式来加速收敛过程。仅学习残差是因为作者认为LR图像和HR图像在很大程度上共享相同的信息,因此有必要对LR图像和HR图像之间的差异进行建模。
  3. 尺度:在本文中,作者提出了一种单模型SR方法。尺度大小由用户指定,可以是任意的。

2.1 与SRCNN模型的区别

  1. 模型:SRCNN由三个网络层构成:补丁提取与表示、非线性映射和重建,对应滤波器的尺寸大小分别为99、11、5*5。在SRCNN中尝试搭建更深层的网络,但是并没有观察到预期的更好的性能。因此,SRCNN的作者认为:更深层的网络并不一定带来更好的性能。但是,在本论文中,作者认为:加深网络层能够显著的提升性能。并成功的构建了一个20层的网络,相比于SRCNN模型,VDSR模型更深(20vs3),所使用的感受野更大(41vs13)。
  2. 训练:在训练阶段,SRCNN直接对高分辨率图像建模。一个高分辨率图像能够被分解为低频信息(对应低分辨率图像)和高频信息(残差图像或图像细节)。而输入和输出图像共享相同的低频信息。这说明SRCNN有两个作用:携带输入(我理解就是携带与输出图像共享的相同低频信息到终端层)到终端层和重建残差图像(这样最后将可以输出高分辨率图像了)。训练时间可能会花费在学习“携带输入到终端层”这一过程上,这样会导致重建残差图像过程的收敛率大大下降。相比SRCNN,VDSR网络直接对残差图像进行建模,所以有更快的收敛速度,甚至更好的精度。在训练的过程中,VDSR通过填充0,使得输出图像具有和输入图像相同的尺寸大小,而SRCNN模型的输出图像的尺寸小于输入图像。并且VDSR对所有层使用相同的学习率,而SRCNN为了实现稳定的收敛,对不同层使用不同的学习率。
  3. 尺度:和大多数现存的SR方法一样,SRCNN是对单一尺寸因子进行训练的,并只在指定尺寸下有效。如果改变尺寸,就需要重新训练一个新的模型。相比于SRCNN模型,VDSR模型虽然是单个网络,却能够有效处理多尺度SR问题。

3.提出的方法

3.1提出的网络结构

  1. VDSR模型的配置如下图所示,作者使用d个网络层,除第一层和最后一层外,其余层具有相同的类型:64个大小为3x3x64的滤波器,也就是每一层滤波器的输入通道数为64,输出通道数也为64。其中一个滤波器在3*3的空间区域上操作。第一个网络层对输入图像进行操作,最后一个网络层用于图像重建。

注释:图二为VDSR网络结构。通过重复级联一对层(卷积层和非线性层)来构建。插值的低分辨率(ILR)图像经过层层转换成高分辨率(HR)图像。网络预测残差图像,ILR和残差相加得到期望的输出。我们对每个卷积层使用64个滤波器,并绘制了一些样本特征图进行可视化。应用整流线性单元(ReLu)后的大部分特征为零。
2. 由前文可知,VDSR模型的深度为20层。使用很深的网络来预测密集输出的一个问题是:每次应用卷积操作时,特征图的大小都会减少(有一点基础的同学,这句话应该很好理解吧)。这最终将导致输出图像的尺寸大于输入图像的尺寸。原文中给了解释为什么会大于?如下所示:
【超分辨率】VDSR论文笔记_第1张图片
注释:许多SR方法需要周围像素来正确推断中心像素。这种中心和周围的关系是有用的,因为周围区域为SR这个ill-posed problem问题提供了更多的约束。而图像边界附件的像素,这种关系不能充分利用,所以许多SR方法会对结果图像进行裁剪,裁剪后最终导致输出图像变小。
3. 为了解决上述的问题,作者在卷积前填充零,以保持所有特征如(包括输出图像)的大小相同。

3.2 训练

  1. 损失函数:训练过程中采用的是平均平方误差损失函数: 1 2 ∥ y − f ( x ) ∥ 2 \frac{1}{2}\left\|y-\mathbf{f(x)}\right\|^2 21yf(x)2,其中 y y y是ground truth,而 f ( x ) f(x) f(x)为模型的预测。由于VDSR学习的是残差图像,定义残差图像为: r = y − x r=y-x r=yx,因此损失函数变为: 1 2 ∥ r − f ( x ) ∥ 2 \frac{1}{2}\left\|r-\mathbf{f(x)}\right\|^2 21rf(x)2

  2. 高学习率:由于VDSR模型的网络层数较深,因此设置高学习率来提升训练,但是简单的将学习率设置很高,可能会导致梯度消失和梯度爆炸问题。对于这个问题,作者采用可调节的梯度裁剪,在抑制梯度爆炸的同时,最大限制的提升速度。

  3. 梯度截断:梯度截断是一种经常被用于训练循环神经网络的技术。在CNN的训练中,使用有限。限制梯度方法有许多,其中一种常见的策略是将单个梯度截断到预定义的范围 [ − Θ , Θ ] [-Θ, Θ] [Θ,Θ]。通过截断可以将梯度控制在一定的范围内。在神经网络的训练中常采用随机梯度下降法,学习率是乘以步长来调整的。对于这里,我看了下别人写的代码,关于学习率如下图所示:
    【超分辨率】VDSR论文笔记_第2张图片
    如果使用高学习率,很可能需要将Θ调整得很小,以避免高学习率下出现梯度爆炸。但随着学习率变小,有效梯度(梯度乘以学习率)接近零,如果学习率呈几何级降低,训练可能需要指数级迭代才能收敛。为了获得最大的收敛速度,在这里作者将梯度截断为 [ − Θ / r , Θ / r ] [-Θ/r, Θ/r] [Θ/r,Θ/r],其中 r r r表示当前的学习率。

4.实验

在本节中,作者将通过实验来证明提出方法的三个属性的有效性。首先,深层次的网络对SR任务很重要,一个很深的网络可以利用图像中更多的上下文信息,并用许多非线性层来模拟复杂的函数。其次,残差学习网络比标准的CNN更快,并且可以带来性能上的提升。最后,使用单个网络的方法与使用为每个尺度训练的多个网络的方法的性能一样好,并且单个网络可以有效的减少参数的数量。

4.1 越深越好

  1. 在本论文中,作者对所有层使用相同大小的滤波器,即尺度大小为33。对于第一层,感受野的大小为33。对于接下来的几层,感受野的大小在高度和宽度两个维度上,每经过一层都增加2。因此,对于深度为D的网络,感受野的大小为(2D+1)*(2D+1)。感受野的大小与深度成正比。(这里给出的感受野的计算公式只适合本论文中的情况,更详细的计算公式见感受野计算公式)。更深的网络层意味着更大的感受野,大的感受野意味着网络可以利用更多的上下文信息来预测图像的细节,即高频信息。
  2. 此外,非常深的网络可以利用更多的高非线性(利用更多的非线性激活函数)。在本论文中,使用了19个ReLU激活函数并通过实验表明:很深的网络可以显著提高SR性能。如下图所示展示了实验结果:在大多数情况下,性能随着深度的增加而增加。
    【超分辨率】VDSR论文笔记_第3张图片

4.2 残差学习和高学习率

  1. 这里作者给出了自己的观点:由于已经有了一个低分辨率图像作为输入,对于SR的目的来说,预测高频成分已经足够了。于是,在本论文中提出了一种学习残差图像(也即高频成分,先学习再预测)的网络结构。

  2. 作者进一步研究了这种结构带来的效果:
    a.残差网络的收敛速度更快。如图4所示:
    【超分辨率】VDSR论文笔记_第4张图片
    注释:作者比较了残差网络和标准的非残差网络。残差网络在几个epochs后能迅速达到最先进的性能,而非残差网络往往需要很多epochs才能达到最大性能。此外,残差网络的最终精度更高。

    b.残差网络在收敛时表现出更优越的性能。如上图所示,残差网络在训练时给出了更高的PSNR。

  3. 如果使用小的学习率,网络在给定的时间内不一定收敛。在上图中,我们可以进一步观察到,如果初始学习率为0.1,残差学习网络在10个epochs内PSNR达到36.9dB,而如果学习率为0.001,网络的性能永远不会达到同样的水平(在80个epochs后其性能为36.52dB)。因此对于更深层的模型,高学习率可能可以提升性能并加快收敛。详细细节见下表。
    【超分辨率】VDSR论文笔记_第5张图片

4.3 多尺度单一模型

  1. 作者进行了一项有趣的实验:用单一的尺度因子 S t r a i n S_{train} Strain训练网络,并在另一个尺度因子 S t e s t S_{test} Stest下进行测试。实验的结果如下表所示:
    【超分辨率】VDSR论文笔记_第6张图片
    注释:如果 S t r a i n S_{train} Strain S t e s t S_{test} Stest不同,则性能下降。比如 S t r a i n S_{train} Strain=2,当 S t e s t S_{test} Stest=2时,模型的PSNR为37.10dB;而当 S t e s t S_{test} Stest=3时,模型的PSNR为30.42dB;当 S t e s t S_{test} Stest=3时=4时,模型的PSNR为28.43dB。
    因此,在单一尺度数据上训练的网络无法处理其他尺度的数据。
  2. 训练过程中的尺度增强是为网络配备多尺度的超分辨率机制的关键技术。所以作者测试用尺度增强法训练的模型是否能够在多个尺度因子下执行SR,并实现良好的性能。具体的实验数据仍然在上表中,具体而言,当训练尺度 S t e s t S_{test} Stest = {2,3,4}时,各尺度的PSNR与单尺度网络的相应结果相当(x2: 37.06vs37.10; x3: 33.27vs32.89; x4: 30.94vs30.84。对于大尺度(x3, 4),多尺度网络优于单尺度网络:作者的模型在(x2, 3), (x3,4)和(x2, 3, 4) 分别给出了 S t e s t S_{test} Stest = 3的PSNR为33.22, 33.24和33.27,而单尺度网络(x3)给出的PSNR在 S t e s t S_{test} Stest = 3为32.89。在上表中还可以观察到同样的数据。由此可以观察到,训练多个尺度可以提升大尺度的性能。

4.4 用于训练和测试的数据集

  1. 训练数据集:不同的基于学习的方法使用不同的训练图像。作者使用和RFL中相同的291张图像作为训练数据集,并使用了数据增强(旋转或翻转)。
  2. 测试数据集:作者使用了四个数据集,包括Set5、Set14、数据集"Urban100"以及数据集"B100"。其中,数据集"Urban100"是由Huang等人提出的一个城市图像数据集,它包含许多现有方法无法解决的挑战性图像。数据集"B100"为Berkeley Segmentation Dataset中的自然图像。

4.5 与最先进的方法进行比较

  1. 比较的方法有A+, RFL, SelfEx和SRCNN。如下表给出了定量的评估。
    【超分辨率】VDSR论文笔记_第7张图片
    注释:VDSR方法在这些数据集上的表现要优于之前所有的方法。此外,VDSR方法在速度上也相对较快。

2.在下图6和图7中, 作者将VDSR方法与性能最好的方法进行了比较。观察下图6可以发现:只有VDSR方法完美地重建了中间的线。在图7中,在VDSR方法中,轮廓干净生动,而其他方法中,轮廓严重失真或模糊。
【超分辨率】VDSR论文笔记_第8张图片
【超分辨率】VDSR论文笔记_第9张图片

5.总结

作者在SRCNN的基础上,加深了网络的深度。在SRCNN的工作中,它的作者认为网络的深度并非越深越好,但是在本论文中,作者提出了一种使用极深网络的超分辨方法——采用残差学习和高学习率来解决深层网络训练困难的问题,使用梯度截断方法来保证训练的稳定性。更深层的网络表现出了比SRCNN更好的性能,并超越了现有的所有方法。

你可能感兴趣的:(论文阅读笔记,论文阅读,计算机视觉,深度学习)