【图像超分辨率】(VDSR)Accurate Image Super-Resolution Using Very Deep Convolutional Networks

摘要

本文提出了一种高精度的单图像超分辨率(SR)方法,该方法使用了一个非常深的卷积网络,灵感来自于用于ImageNet分类的VGG网络,网络深度的增加可以使得精度的显著提高。 该模型的深度为20层,通过在深层网络结构中多次级联小型过滤器,可以有效地利用大型图像区域上的上下文信息。然而在非常深的网络中,收敛速度成为训练中的关键问题。我们提出一个简单而有效的训练程序。我们仅学习残差,使用极高的学习率(比SRCNN 高出104倍),通过可调梯度裁剪实现。

介绍

本文解决了给定低分辨率(LR)图像生成高分辨率(HR)图像的问题,通常称为单图像超分辨率重建(SISR)。SISR广泛应用于计算机视觉应用,从安全和监控成像到医疗影像(需要更多的图像细节)。

在计算机视觉领域已经研究了许多SISR方法。早期方法包括插值,例如双三次插值和基于统计图像先验或内部块复现信息的更强大的方法。

目前,学习方法被广泛用于建模从LR到HR的映射。邻域嵌入,图像块子空间内插方法。 稀疏编码方法使用基于稀疏信号表示的学习紧致字典。最近的随机森林和卷积神经网络(CNN)也被广泛使用且精度大幅提高。

其中,Dong等已经证明,CNN可以用于以端到端的方式学习从LR到HR的映射。他们的方法称为SRCNN,不需要任何其他方法中通常需要的工程特征,并显示出最先进的性能。

SRCNN在超分辨率(SR)问题中成功地引入了深入的学习技术,但在三个方面有局限性:第一,它依赖于小图像区域的上下文; 第二,训练收敛太慢; 第三,网络只适用于一个采样scale。即:

训练层数少,没有足够的视野域;

训练太慢,导致没有在深层网络上得到好的效果;
不能支持多种倍数的高清化。

本文提出的方法能够有效解决以上问题:

上下文(context) 本文利用分布在非常大的图像域的背景信息:对于一个大尺度因子,通常情况下,一个小的图像块中包含的信息不足以进行细节恢复。本文的深层网络使用大感受野,从而考虑到大尺寸的图像上下文信息。
收敛性(convergence) 本文提出了一种加速训练的方法:残差学习CNN和极高的学习率。由于LR图像和HR图像在很大程度上共享相同的信息,因此有必要对残差图像(HR和LR图像之间的差异)进行建模。本文提出了一种在输入和输出高度相关时高效学习的网络结构。此外,我们的初始学习率是SRCNN[6]的10000倍。这是由残差学习和梯度剪裁实现的。
尺度因子(Scale factor) 本文提出了一种单模型SR方法。尺度大小通常由用户指定,可以是任意的,包括分数。例如,人们可能需要在图像查看器中进行平滑的放大或调整大小到特定的维度,但是为所有可能的场景训练和存储许多与尺度相关的模型是不切实际的。我们发现单个卷积网络足以实现多尺度因子超分辨率。

贡献(contribution) 综上所述,在这项工作中,提出了一种基于极深卷积网络的高精度SR方法。如果使用小的学习率、极深网络的收敛速度太慢,用高学习率提升收敛率会导致梯度爆炸,本文用残差学习和梯度裁剪解决了这个问题。

2 相关工作

2.1 图像超分辨率的卷积神经网络

模型

增加深度可以显著提升性能。本文成功使用了20个权重层(每层3×3)。本文的网络非常深(20层),用于重建的信息感受野)更大(41×41)

训练

SRCNN直接对高分辨率图像进行建模。高分辨率图像可以分解为低频信息(对应低分辨率图像)和高频信息(残差图像或图像细节)。输入和输出图像共享相同的低频信息。这说明SRCNN有两个作用:携带输入到终端层和重建残差图像。将输入携带到末端在概念上类似于自动编码器的工作。训练时间可能会花在学习这个自动编码器上,这样学习另一部分(图像细节)的收敛率就会大大降低。相比之下,由于VDSR网络直接对残差图像进行建模,所以有更快的收敛速度,甚至更好的精度。

尺度

与大多数现有的SR方法一样,SRCNN是针对单一尺度因子进行训练的,并且应该只在指定的尺度下有效。因此,如果有新的尺度,就必须训练一个新的模型。为了应对多尺度SR(可能包括分数因子),我们需要为每个感兴趣的尺度构建单独的单尺度SR系统。然而,为所有可能的场景准备许多单独的机器来应对多尺度是低效率和不切实际的。本文设计并训练了单个网络来有效地处理多尺度SR问题,对于三个尺度因子(×2,3,4),我们可以减少三倍的参数数量。
除了上述问题外,还有一些小的差异。我们的输出图像在训练过程中,通过每层填充零,具有与输入图像相同的大小,而SRCNN的输出比输入小。最后,我们只是对所有的层使用相同的学习率,而SRCNN为了实现稳定的收敛,对不同的层使用不同的学习率。

3 提出的方法

3.1 提出的网络

对于SR图像重建,我们使用了一个受Simonyan和Zisserman[19]启发,使用非常深的卷积网络。它的配置如图2所示。我们使用d层,其中除了第一层和最后一层以外的层都是相同的类型。64个大小为3×3×64的滤波器,其中一个滤波器在3×3的空间区域上操作,跨越64个通道(特征图)。第一层对输入图像进行操作。最后一层用于图像重建,由大小为3×3×64的单个滤波器组成。

该网络将插值的低分辨率图像(到所需尺寸)作为输入,并预测图像细节。在超分辨率方法中经常使用建模图像细节[21,22,15,3],我们发现基于CNN的方法可以从这种特定领域的知识中受益。

在这项工作中,我们证明了明确建模图像细节(残差)有几个优势。这些优点将在后面的4.2节进一步讨论。使用很深的网络来预测密集输出的一个问题是,每次应用卷积操作时,特征图的大小都会减小。例如,当一个大小为(n+1)×(n+1)的输入被应用到接受场大小为n×n的网络中时,输出图像是1×1。

这与其他超分辨率方法是一致的,因为许多超分辨率方法需要周围像素来正确推断中心像素。这种中心与周围的关系是有用的,因为周围区域为这个非命题问题(SR)提供了更多的约束。对于图像边界附近的像素,这种关系不能被充分利用,许多SR方法会对结果图像进行裁剪。但是,如果所需的包围区域非常大,这种方法就不适用。裁剪后,最终的图像太小,视觉上不美观。

为了解决这个问题,我们在卷积前垫零以保持所有特征图(包括输出图像)的大小相同。事实证明,垫零的效果很好。出于这个原因,我们的方法与大多数其他方法的不同之处在于,图像边界附近的像素也能被正确预测。一旦图像细节被预测出来,它们就会被加回输入的ILR图像,从而得到最终的图像(HR)。

在这里插入图片描述

3.2. 训练

我们现在描述一下为了找到我们模型的最佳参数而需要最小化的目标。让x表示一个插值后的低分辨率图像,y表示一个高分辨率图像。给定一个训练数据集,我们的目标是学习一个模型f,预测值ˆy = f(x),其中ˆy是目标HR图像的估计值。我们将训练集上的平均平方误差的平均值最小化。

残差学习

在SRCNN中,输入的的图像必须经过所有层,直到到达输出层。在许多权重层中,这成为一个需要长期记忆的端到端关系。对于这个问题,梯度消失和爆炸问题[2]可能是关键。我们可以简单地用残差学习来解决这个问题。
由于输入和输出图像大体上是相似的,我们定义一个残差图像r = y - x,其中大多数值可能是零或小,我们要预测这个残差图像。
在网络中,这反映在损失层中,损失层需要三个输入:残差估计、网络输入(LR图像)和真实HR图像。损失计算为重建后的图像(网络输入和输出之和)与真实图像之间的欧氏距离。
训练是通过使用基于反向传播的小批次梯度下降(mini-batch gradient descent)(LeCun等[14])优化回归进行的。我们将动量参数设置为0.9,训练采用权重损失(L2惩罚乘以0.0001)进行正则化。

深层网络的高学习率

在现实的时间限制下,深度模型可能无法收敛。 SRCNN[6]在超过三个权重层的情况下,未能显示出优越的性能。虽然可能有各种原因,但有一种可能是他们在网络收敛之前停止了训练过程,学习率0.00001对于网络来说太小了,无法在普通GPU上一周内收敛。从[6]的图9来看,很难说他们的深层网络已经收敛了,他们的表现已经饱和了。虽然更多的训练最终会解决这个问题,但将深度增加到20似乎对SRCNN并不实用。把学习率做得很高来提升训练,这是一个基本的经验法则。但简单地将学习率设置得很高,也会导致梯度消失/爆炸[2]。对于这个问题,我们建议采用可调节的梯度裁剪,在抑制爆炸梯度的同时,最大限度地提升速度。

可调梯度裁剪

梯度裁剪是一种经常被用于训练循环神经网络工程的技术[17]。但是,据我们所知,它在训练CNN中的使用是有限的。虽然存在许多限制梯度的方法,但其中一种常见的策略是将单个梯度剪裁到预定义的范围[-θ,θ]。通过剪接,梯度在一定范围内。训练中常用的随机梯度下降法,学习率是乘以步长大小来调整的。如果使用高学习率,很可能将θ调得很小,以避免在高学习率制度下出现梯度爆炸。但随着学习率变小,有效梯度(梯度乘以学习率)接近于零,如果学习率呈几何级数降低,训练可能需要指数级的多次迭代才能收敛。为了获得最大的收敛速度,我们将梯度剪裁为[- θ/γ ,θ/γ ],其中γ表示当前的学习率。我们发现可调的梯度剪裁使得我们的收敛过程非常快。我们的20层网络训练在4小时内完成,而3层的SRCNN需要几天的时间来训练。

多尺度

虽然非常深的模型可以提高性能,但现在需要更多的参数来定义一个网络工作。通常情况下,每个尺度因子都会创建一个网络。考虑到小数尺度因子经常被使用,我们需要一种经济的方式来存储和检索网络。出于这个原因,我们还训练了一个多尺度模型,通过这种方法,参数在所有预定义的尺度因子中共享。训练一个多尺度模型是直接的,几个指定尺度的训练数据集被组合成一个大数据集。数据准备与SRCNN[5]类似,但有一些区别。输入图像块的大小等于感受野的大小,图像被划分为无重叠的子图像。一个小批次由64个子图像组成,不同尺度的子图像可以在同一批次中。我们使用MatConvNet1包[23]来实现我们的模型。

4 理解属性

在本节中,我们研究了我们提出的方法的三个属性。首先,我们表明,深层次对于SR的任务是必要的。一个很深的网络可以利用图像中更多的上下文信息,并且用许多非线性层来模拟复杂的函数。我们通过实验验证,较深的网络比浅的网络有更好的性能。其次,我们表明我们的残差学习网络比标准的CNN更快。此外,我们的网络在性能上也有显著提升。第三,我们表明,我们使用单个网络的方法与使用为每个规模训练的多个网络的方法的性能一样好。我们可以有效地降低多网络方法的模型容量(参数数量)。

4.1. 越深越好

卷积神经网络通过强制执行相邻层神经元之间的局部连接模式来利用空间上的局部相关性[1]。换句话说,m层中的隐藏单元将层m-1中的单元的一个子集作为输入,从而形成空间上连续的感受野。
每个隐藏单元对感受野外的变化相对于输入是没有反应的。因此,该架构确保了学习的滤波器对空间上的局部输入模式产生最强的响应。
然而,堆叠许多这样的层会导致滤波器变得越来越全局化(即对更大区域的像素空间有反应)。换句话说,一个支持度非常大的滤波器可以有效地分解成一系列小滤波器。
在这项工作中,我们对所有层使用相同大小的滤波器,即3×3。对于第一层,感受野的大小为3×3。对于接下来的几层,感受野的大小在高度和宽度上都增加2。对于深度D网络,感受野的大小为(2D+1)×(2D+1)。其大小与深度成正比。
在SR的任务中,这相当于可以利用上下文信息来推断高频成分的数量。大的感受野意味着网络可以利用更多的上下文来预测图像细节。由于SR是一个逆问题,收集和分析更多的相邻像素可以提供更多的线索。例如,如果有一些图像模式完全包含在一个感受野中,那么这个模式被识别出来并用于图像超分辨率是可信的。
此外,非常深的网络可以利用高非线性。本文使用19个整流线性单元,网络可以用中等数量的通道(神经元)来模拟非常复杂的函数。在Simonyan和Zisserman[19]中很好地解释了制作薄型深度网络的优势。我们现在通过实验表明,很深的网络可以显著提高SR性能。本文训练和测试了深度从5到20的网络(只计算权重层,不包括非线性层)。在图3中,我们展示了结果。在大多数情况下,性能随着深度的增加而增加。随着深度的增加,性能迅速提高。

4.2. 残差学习

由于已经有了一个低分辨率的图像作为输入,对于SR的目的来说,预测高频成分已经足够了。虽然在以前的方法中已经使用了预测残差的概念[21,22,26],但在基于深度学习的SR框架中还没有研究过。
在这项工作中,提出了一种学习残差图像的网络结构。现在详细研究了这种对标准CNN结构的修改效果。
首先,我们发现这种残差网络的收敛速度更快。我们通过实验比较了两个网络:残差网络和标准的非残差网络。我们使用深度10(权重层)和尺度因子2。各种学习率的性能曲线如图4所示。都使用了上面提到的相同的学习率调度机制。
其次,在收敛时,残差网络表现出优越的性能。在图4中,训练时,残差网络给出了更高的PSNR。另一个说明是,如果使用小的学习率,网络在给定的纪元(epoch)数内不会收敛。如果使用初始学习率0.1,残差学习网络的PSNR在10个epochs内达到36.90。但如果使用0.001来代替,网络的性能永远不会达到同样的水平(80个epochs后其性能为36.52)。同样,残差网络和非残差网络在10个epochs后也表现出了非常大的性能差距(速率0.1的36.90 vs. 27.42)。
简而言之,这种对标准非残差网络结构的简单修改是非常强大的,人们可以在输入和输出图像高度相关的其他图像修复问题中探索这个想法的有效性。
在这里插入图片描述

4.3. 多尺度的单一模型

训练过程中的尺度增强是为网络配备多尺度的超分辨率机器的关键技术。许多不同尺度的SR过程都可以用我们的多尺度机来执行,其容量远小于单尺度机的总和。
我们从一个有趣的实验开始,如下:我们用一个单一尺度因子应变训练我们的网络,并在另一个尺度因子下进行测试。在这里,考虑了SR比较中广泛使用的因子2,3和4。对于数据集’Set5’[15],尝试了可能的对。实验结果汇总于表2。
在这里插入图片描述

如果训练集和测试集不同,则性能下降。对于尺度因子2,用因子2训练的模型给出的PSNR为37.10(单位:dB),而用因子3和4训练的模型分别给出30.05和28.13。在单一尺度数据上训练的网络无法处理其他尺度的数据。在许多测试中,它甚至比用于生成输入图像的方法–双立方插值更差。

我们现在测试用尺度增强法训练的模型是否能够在多个尺度因子下执行SR。上面使用的相同网络是用多个尺度因子strain = {2,3,4}来训练的。此外,我们还用strain={2,3},{2,4},{3,4}的情况进行实验,以便进行更多的比较。
我们观察到,网络可以应对训练过程中使用的任何规模。当应变={2,3,4}时。(表2中的×2、3、4),其各尺度的PSNR与单尺度网路的相应结果相当。37.06对37.10(×2),33.27对32.89(×3),30.95对30.86(×4)。另一个模式是,对于大尺度(×3,4),我们的多尺度网络优于单尺度网络:我们的模型(×2,3)、(×3,4)和(×2,3,4)分别给出了测试尺度3的PSNRs 33.22、33.24和33.27,而(×3)给出了32.89。同样,(×2,4)、(×3,4)和(×2,3,4)分别给出了30.86、30.94和30.95(而×4模型给出了30.84)。由此,我们观察到,训练多个尺度可以提升大尺度的性能
在这里插入图片描述

5. 实验结果

在本节中,我们评估了我们的方法在几个数据集上的性能。我们首先描述用于训练和测试我们的方法的数据集。接下来,我们给出了训练所需的参数。在概述了我们的实验设置之后,我们将我们的方法与几个最先进的SISR方法进行比较。

5.1. 用于训练和测试的数据集

训练数据集

不同的基于学习的方法使用不同的训练图像。例如,RFL[18]有两种方法,其中第一种方法使用了来自Yang等[25]的91张图像,第二种方法使用了291张图像,并增加了200张来自Berkeley Segmentation Dataset[16]的图像。SRCNN[6]使用了一个非常大的ImageNet数据集。我们和[18]一样使用291张图像与本节其他方法进行基准测试。此外,还使用了数据增强(旋转或翻转)。前面几节的结果中,我们使用了91张图像来快速训练网络,所以性能可能略有不同。

测试数据集

对于基准,我们使用四个数据集。数据集’Set5’[15]和’Set14’[26]在其他作品[22,21,5]中经常被用于基准测试。数据集’Urban100’是由Huang等人[11]最近提供的一个城市图像数据集,它包含了许多现有方法无法解决的挑战性图像,因此非常有趣。最后,还采用了Timofteet等[22]和Yang和Yang[24]用于基准的Berkeley Segmentation Dataset中的自然图像’B100’。

5.2. 训练参数

我们提供用于训练我们最终模型的参数。我们使用深度为20的网络训练使用大小为64的批次动量和权重衰减参数分别设置为0.9和0.0001。
对于权重初始化,我们使用He等人[10]中描述的方法。对于利用整流线性单元(ReLu)的网络来说,这是一个理论上合理的程序。
我们对所有实验进行了80个纪元的训练(9960次迭代,批次大小为64)。学习率最初设置为0.1,然后每20个纪元降低10倍。总共降低了3次学习率,80个epochs后停止学习。在GPU Titan Z上训练大概需要4小时。

5.3. 基准

对于基准,我们遵循Huang等人[21]的公开框架工作。它可以用同样的评估程序对许多最先进的结果进行比较。
该框架对图像的颜色分量应用了双立方插值,对亮度分量应用了复杂的模型,就像其他方法[4]、[9]、[26]一样。这是因为人类的视觉对强度的细节比对颜色的细节更敏感。
这个框架对图像边界附近的像素进行了裁剪。对于我们的方法,这个过程是不必要的,因为我们的网络输出的是全尺寸的图像。然而,为了公平的比较,我们也裁剪了相同数量的像素。

5.4. 与最先进方法的比较 我们提供了定量和定性的比较。

比较的方法有A+[22]、RFL[18]、SelfEx[11]和SRCNN[5]。在表3中,我们提供了几个数据集的定量评估总结。我们的方法在这些数据集上的表现优于所有之前的方法。此外,我们的方法也相对较快。基于CPU实现的SRCNN的公共代码比Dong等人[6]在其基于GPU实现的论文中使用的代码要慢。
在图6和图7中,我们将我们的方法与性能最好的方法进行了比较。在图6中,只有我们的方法完美地重建了中间的线。同样,在图7中,在我们的方法中,轮廓干净生动,而在其他方法中,轮廓严重模糊或失真。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 结论

在这项工作中,我们提出了一种使用极深网络的超分辨率方法。由于收敛速度慢,训练一个很深的网络是很困难的。我们使用残差学习和极高的学习率来快速优化一个很深的网络。收敛速度最大化,我们使用梯度剪裁来保证训练的稳定性。我们已经证明,我们的方法在基准标记的图像上以很大的优势超越了现有的方法。我们相信我们的方法很容易适用于其他图像修复问题,如去噪和压缩伪影去除。

方法贡献

针对上述问题,本文提出了采用更深的网络模型。主要贡献:基于残差的深度CNN结构。该结构使用残差连接将低分辨率图像与CNN的输出相加得到高清图像即仅用CNN结构学习低分辨率图像中缺乏的高分辨率细节部分。并用三种技术解决了SRCNN算法的问题。

第一种技术是残差学习,CNN是端到端的学习,如果像SRCNN方法那样直接学习,那么CNN需要保存图像的所有信息,需要在恢复高清细节的同时记住所有的低分辨率图像的信息。如此,网络中的每一层都需要存储所有的图像信息,这就导致了信息过载,使得网络对梯度十分敏感,容易造成梯度消失或梯度爆炸等现象。而图像超分辨率问题中,CNN的输入图像和输出图像中的信息很大一部分是共享的(共享同样的低频信息,一个高分辨率图像可以分解为低频信息(低分辨率图像)和高频信息(残差图像或者高频信息)),所以提出了一种当输入和输出高度相关时的有效学习的网络结构。而残差学习是只针对图像高分辨率所需的细节信息进行学习。CNN的输出加上原始的低分辨率图像得到高分辨率图像,即CNN学习到的是高分辨率图像和低分辨率图像的差。如此,CNN承载的信息量小,更容易收敛的同时还可以达到比非残差网络更好的效果。高分辨率图像之所以能够和低分辨率图像做加减法,是因为,在数据预处理时,将低分辨率图像使用插值法缩放到与高分辨率图像同等大小。于是虽然图像被称之为低分辨率,但其实图像大小与高分辨率图像是一致的。

第二种技术是高学习率,网络越深、卷积核尺寸大小固定、感受野越大,表示输出时,可以利用的局部信息越多。但是SRCNN层数越高,性能并未提升,因为收敛困难或者有的滤波器没有被激活,SRCNN网络加深到20层,则很难收敛,若学习率设置小,收敛太慢,若在CNN中设置高学习率通常会导致梯度爆炸,因而在使用高学习率的同时还使用了自适应梯度截断。截断区间为[-θ/γ, θ/γ],其中γ为当前学习率,θ是常数。

第三种技术是数据混合,最理想化的算法是为每一种倍数分别训练一个模型,但这样极为消耗资源。因而,同之前的算法不同,本技术将不同倍数的数据集混合在一起训练得到一个模型,从而支持多种倍数(任意的)的高分辨率,在多种下采样因子的情况下参数是共享的。

  • 10
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值