VDSR论文精读(使用深层卷积网络获得高精度的图像分辨率)

Accurate Image Super-Resolution Using Very Deep Convolutional Networks

使用深层卷积网络获得高精度的图像分辨率

摘要:我们提出了一种高精度的单图像超分辨率(SR)方法。我们的方法使用了一个非常深的卷积网络,灵感来自于用于ImageNet分类[19]的VGG-net。我们发现增加网络深度可以显著提高准确率。我们最终的模型使用了20个权重层。通过在深度网络结构中多次级联小过滤器,可以有效地利用大图像区域上的上下文信息。然而,对于非常深的网络,在训练过程中,收敛速度成为一个关键问题。我们提出了一个简单而有效的训练过程。我们只学习残差,并使用极高的学习率(比SRCNN[6]高10^{4}倍),这通过可调的梯度剪裁来实现。我们提出的方法在准确性上比现有方法表现得更好,并且我们的结果在视觉上的改进很容易被注意到。

1 介绍

我们解决了在低分辨率(LR)图像下生成高分辨率(HR)图像的问题,通常称为单图像超分辨率(SISR)[12],[8],[9]。SISR广泛应用于计算机视觉应用,从安防和监控成像到医学成像,需要更多的图像细节。

计算机视觉界已经研究了许多SISR方法。早期的方法包括插值,如双三次插值和Lanczos重采样[7],更强大的方法是利用统计图像先验[20,13]或内部补丁递归[9]。

目前,学习方法被广泛用于构建LR到HR补丁的映射。邻域嵌入[4,15]方法对块子空间进行插值。稀疏编码[25,26,21,22]方法使用基于稀疏信号表示的学习紧凑字典。最近,随机森林[18]和卷积神经网络(CNN)[6]也被使用,并且在精度上有了很大的提高。

其中,Dong等人证明了CNN可以被用于学习从LR到HR之间的端到端的映射。他们的方法被称为SRCNN,不需要任何在其他方法中通常需要的工程特征[25,26,21,22],并且显示了最先进的性能。

虽然SRCNN成功地将深度学习技术引入到超分辨率(SR)问题中,但我们发现它在三个方面存在局限性:第一,它依赖于小图像区域的上下文;第二,训练收敛太慢;第三,网络只适用于单一规模。

在这项工作中,我们提出了一种新的方法来实际解决这些问题。

上下文信息:我们利用分布在非常大的图像区域上的上下文信息。对于大尺度因素,通常情况下,小补丁中包含的信息不足以用于细节恢复(病态)。我们使用大感受野的非常深的网络考虑了大的图像上下文。

收敛度:我们提出了一种加速训练的方法:残差学习CNN和极高的学习率。由于LR图像和HR图像在很大程度上共享相同的信息,因此明确地构建残差图像是有利的残差图像是HR和LR图像的区别。当输入和输出高度相关时,我们提出了一个网络结构用于高效学习。此外,我们的初始学习率比SRCNN[6]高10^{4}倍。这是通过残差学习和梯度裁剪实现的。

比例因子:我们提出了一种单模型SR方法。尺度通常是用户指定的,可以是任意的,包括分数。例如,可能需要在图像查看器中平滑放大或将大小调整到特定尺寸。训练和存储许多与比例相关的模型来为所有可能的场景做准备是不切实际的。我们发现单个卷积网络足以实现多尺度因子超分辨率。

贡献:总之,在这项工作中,我们提出了一种基于深度卷积网络的高精度SR方法。如果使用较小的学习率,非常深度的网络收敛太慢。用高学习率来提高收敛率会导致梯度爆炸,我们用残差学习和梯度剪辑来解决这个问题。此外,我们还扩展了我们的工作,以应对单一网络中的多尺度SR问题。与最先进的方法相比,我们的方法相对准确和快速,如图1所示。

2 相关工作

SRCNN是基于深度学习的SR方法的代表。那么,让我们来分析和比较一下我们提出的方法。

2.1 图像超分辨率卷积网络

模型:SRCNN由三层组成:块提取/表示、非线性映射和重建。分别使用空间大小为9×9、1×1和5×5的滤波器。

在[6]中,Dong等人尝试准备更深的模型,但在一周的训练后未能观察到优越的性能。在某些情况下,更深层次的模型给出了较差的表现。他们得出结论,更深的网络不会带来更好的性能(图9)。

然而,我们认为增加深度可以显著提高性能。我们成功地使用了20个权重层(每个层3×3)。我们的网络非常深(20 vs. 3[6]),并且用于重建(接受场)的信息要大得多(41×41 vs. 13×13)。

训练:对于训练,SRCNN直接对高分辨率图像进行建模。高分辨率图像可以分解成低频信息(对应于低分辨率图像)和高频信息(残差图像或图像细节)。输入和输出图像共享相同的低频信息。这表明SRCNN有两个目的:将输入传递到末端层和重建残差。将输入传递到末端在概念上类似于自动编码器的工作。训练时间可能会花在学习这个自编码器上,这样学习另一部分(图像细节)的收敛速度就会显著降低。相比之下,由于我们的网络直接对残差图像进行建模,我们可以更快地收敛,并且精度更高。

尺度:与大多数现有的SR方法一样,SRCNN是针对单个尺度因子进行训练的,并且只在指定的尺度下工作。因此,如果要求一个新的尺度,就必须训练一个新的模型。为了应对多尺度SR(可能包括分数因子),我们需要为每个感兴趣的尺度构建单独的单尺度SR系统。

然而,为所有可能的场景准备许多单独的机器来应对多个尺度是低效和不切实际的。在这项工作中,我们设计和训练了一个单一的网络来有效地处理多尺度SR问题。事实证明,这种方法非常有效。对于给定的子任务,我们的单机器比负责给定子任务的单尺度更有优势。对于三个尺度因子(×2,3,4),我们可以将参数的数量减少三倍。

除了上述问题外,还有一些细微的差别。通过在训练期间每层填充零,我们的输出图像与输入图像的大小相同,而SRCNN的输出比输入小。最后,我们简单地对所有层使用相同的学习率,而SRCNN对不同层使用不同的学习率,以实现稳定的收敛。

3 提出的方法

3.1 提出的网络

对于SR图像重建,我们受Simonyan和Zisserman[19]启发,使用了非常深的卷积网络。其配置如图2所示。我们使用d层,其中除第一层和最后一层外的层都是相同类型:大小为3×3×64的64个过滤器,其中一个过滤器在跨越64个通道(特征映射)的3×3空间区域上运行。第一层对输入图像进行操作。最后一层用于图像重建,由一个大小为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表示高分辨率图像。给定一个训练数据集\left \{ x^{\left ( i \right )},y^{\left ( i \right )} \right \}_{i=1}^{N},我们的目标是学习一个模型f,该模型可以预测y\hat{}=f\left ( x \right )的值,其中y\hat{}是对目标HR图像的估计。我们最小化均方误差\frac{1}{2}\left \| y-f(x) \right \|^{2}在训练集上的平均值被最小化(注:此f(x)是对图像的预测)。

残差学习:在SRCNN中,输入的精确副本必须经过所有层,直到到达输出层。对于很多权重层,这就变成了需要非常长时间记忆的端到端关系。因此,梯度消失/爆炸问题[2]可能很关键。我们可以简单地用残差学习来解决这个问题。

由于输入和输出图像在很大程度上相似,我们定义残差图像r = y - x,其中大多数值可能为零或很小。我们想要预测这个残差图像。损失函数现在变成了\frac{1}{2}\left \| r-f(x) \right \|^{2},其中f(x)是网络预测(注:此f(x)是对残差图像的预测)。

在网络中,这一点反应在损失层中,如下所示。我们的损失层有三个输入:残差估计、网络输入(ILR图像)和真实HR图像。损失计算为重建图像(网络输入和输出之和)与真实值之间的欧氏距离。

训练通过基于反向传播的小批量梯度下降优化回归目标进行的(LeCun等[14])。我们将动量参数设为0.9。训练通过权重衰减(L2惩罚乘以0.0001)进行正则化。

深度网络的高学习率:在现实的时间限制下,训练深度模型可能无法收敛。SRCNN[6]在超过三个权重层的情况下无法显示优越的性能。虽然可能有各种各样的原因,但一种可能是他们在网络融合之前就停止了训练过程。他们的学习率10^{-5}对于一个网络在一个普通的GPU上一周内收敛来说太小了。看看[6]的图9,很难说他们的深度网络已经收敛和性能已经饱和。虽然更多的训练最终会解决这个问题,但是将深度增加到20对于SRCNN来说似乎并不实际。

提高学习率来促进训练是一个基本的经验法则。但简单地将学习率设置高也会导致梯度[2]消失/爆炸。出于这个原因,我们建议一个可调的梯度裁剪,在抑制爆炸梯度的同时最大限度地提高速度。

可调梯度裁剪:梯度裁剪是一种经常用于训练递归神经网络[17]的技术。但是,据我们所知,它在训练CNN中的使用是有限的。虽然存在许多限制梯度的方法,但常见的策略之一是将单个梯度剪切到预定义的范围[−θ,θ]。

通过裁剪,梯度在一定的范围内。采用训练中常用的随机梯度下降,将学习率相乘来调整步长。如果使用高学习率,θ很可能会被调整为较小,以避免在高学习率机制下的爆炸性梯度变化。但随着学习速率被退火变小,有效梯度(梯度乘以学习速率)趋近于零,如果学习速率几何下降,训练可以进行指数多次迭代收敛。

为了获得最大的收敛速度,我们将梯度剪裁为[−\theta\theta],其中γ表示当前的学习率。我们发现可调的梯度裁剪使得我们的收敛过程非常快。我们的20层网络训练在4小时内完成,而3层SRCNN需要几天的训练。

多尺度:虽然非常深的模型可以提高性能,但需要更多的参数来定义网络。通常,为每个尺度因子创建一个网络。考虑到经常使用分数尺度因子,我们需要一种经济的方式来存储和检索网络。

为此,我们还训练了一个多尺度模型。通过这种方法,参数在所有预定义的尺度因子之间共享。训练一个多尺度模型是直截了当的。几个指定尺度的训练数据集被合并成一个大数据集。

数据准备与SRCNN[5]相似,但存在一定差异。输入块的大小现在等于感受野的大小,图像被分成没有重叠的子图像。一个小批量由64个子图像组成,其中来自不同尺度的子图像可以在同一个块中。

我们使用MatConvNet包[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。

另一个观点是,如果使用较小的学习率,网络在给定的迭代数内不会收敛。当初始学习率为0.1时,残差学习网络在10次迭代内的PSNR达到36.90。但如果改用0.001,网络就永远达不到同样的性能水平(80轮次后其性能为36.52)。以类似的方式,残差和非残差网络在10轮次后显示出巨大的性能差距(学习率为0.1时为36.90 vs. 27.42)。

简而言之,这种对标准非残差网络结构的简单修改非常强大,人们可以在其他图像恢复问题(输入和输出图像高度相关的问题)中探索该思想的有效性。

4.3 多尺度的单一模型

训练过程中的尺度增强是为网络配备多尺度超分辨率机器的关键技术。我们的多尺度机器可以完成许多不同规模的SR工艺,其容量远远小于单尺度机器的组合。

我们从一个有趣的实验开始,如下所示:我们用一个单一的比例因子S_{train}训练我们的网络,并在另一个比例因子S_{test}下对其进行测试。这里考虑了在SR比较中广泛使用的因子2、3和4。对数据集“Set5”[15]尝试可能的对(S_{train},S_{test})。实验结果总结如表2。

如果S_{train}\neq S_{test},性能会下降。对于比例因子2,用因子2训练的模型得到的PSNR为37.10(以dB为单位),而用因子3和4训练的模型分别为30.05和28.13。在单尺度数据上训练的网络无法处理其他尺度。在许多测试中,它甚至比用于生成输入图像的双三次插值还要糟糕。

我们现在测试一个经过尺度增强训练的模型是否能够在多个尺度因子下执行SR。上面使用的相同网络是用多个尺度因子S_{train}=\left \{ 2,3,4 \right \}训练的。此外,我们对S_{train}={2,3},{2,4},{3,4}的情况进行了实验,以进行更多的比较。

我们观察到,网络可以应对训练过程中使用的任何规模。当S_{train}= {2,3,4}(表2中的×2, 3,4)时,其各尺度的PSNR与单尺度网络的对应结果相当:37.06vs.37.10(×2),33.27vs.32.89(×3),30.95vs.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)给出的PSNR分别为30.86、30.94和30.95 (×4模型分别为30.84)。由此,我们观察到,训练多个尺度可以提高大尺度的性能。

5 训练结果

在本节中,我们在几个数据集上,评估了我们的模型的性能。我们首先描述用于训练和测试我们的模型的数据集。接下来,给出训练所需的参数。

在概述了我们的实验设置之后,我们将我们的方法与几种最先进的SISR方法进行了比较。

5.1 训练和测试数据集

训练数据集:不同的基于学习的方法使用不同的训练图像。例如,RFL[18]有两种方法,其中第一种方法使用来自Yang等人[25]的91张图像,第二种方法使用291张图像,并添加来自Berkeley分割数据集[16]的200张图像。SRCNN[6]使用了一个非常大的ImageNet数据集。

我们使用[18]中的291张图像与本节中的其他方法进行基准测试。此外,还使用了数据增强(旋转或翻转)。对于前几节的结果,我们使用了91张图像来快速训练网络,因此性能可能会略有不同。

测试数据集:对于基准测试,我们使用了四个数据集。数据集“Set5”[15]和“Set14”[26]在其他作品中经常用于基准测试[22,21,5]。数据集“Urban100”是Huang等人最近提供的一个城市图像数据集,它非常有趣,因为它包含了许多具有挑战性的图像,而许多现有的方法都失败了。最后,数据集“B100”也是Timofte等人[22]使用的Berkeley分割数据集中的自然图像和Yang[24]中基准数据也被使用。

5.2 训练参数

我们提供用于训练最终模型的参数。我们使用深度为20的网络。训练使用大小为64的批量。动量和权重衰减参数分别设置为0.9和0.0001。

对于权重初始化,我们使用He等人[10]描述的方法。对于利用整流线性单元(ReLu)的网络来说,这是一个理论上合理的过程。

我们训练所有实验超过80轮次(9960次迭代,批大小为64)。学习率最初设置为0.1,然后每20轮次降低10倍。总的来说,学习率下降了3次,学习在80轮次后停止。在GPU Titan Z下,训练大约需要4个小时。

5.3 基准

对于基准测试,我们遵循Huang等人的公开可用框架。它可以用相同的评估程序对许多最先进的结果进行比较。

该框架将双三次插值应用于图像的颜色分量,并将复杂模型应用于亮度分量,如其他方法[4],[9],[26]。这是因为人类的视觉对亮度的细节比对颜色的细节更敏感。

这个框架在图像边界附近裁剪像素。对于我们的方法,这个过程是不必要的,因为我们的网络输出的是全尺寸的图像。然而,为了公平的比较,我们也将像素裁剪到相同的数量。

5.4 与最先进方法的比较

我们提供定量和定性的比较。比较的方法有A+[22]、RFL[18]、SelfEx[11]和SRCNN[5]。在表3中,我们对几个数据集的定量评估进行了总结。在这些数据集上,我们的方法优于之前的所有方法。此外,我们的方法相对较快。基于CPU实现的SRCNN公开代码比Dong等人[6]在其基于GPU实现的论文中使用的代码慢。

在图6和图7中,我们将我们的方法与表现最好的方法进行了比较。在图6中,只有我们的方法完美地重建了中间的直线。同样,在图7中,我们的方法中轮廓清晰生动,而在其他方法中轮廓严重模糊或扭曲。

6 结论

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

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值