使用深度卷积网络的图像超分辨率

作者: Chao Dong, Chen Change Loy, Kaiming He, Xiaoou Tang
简介: 基于深度学习的单图像超分辨率重建的开山者,关于参数设置和对比实验很详细。
论文地址: https://arxiv.org/abs/1501.00092
项目地址:

  1. http://mmlab.ie.cuhk.edu.hk/ projects/SRCNN.html(论文里给的实现链接)
  2. https://github.com/tegg89/SRCNN-Tensorflow(github上的参考代码)

摘要

  我们提出了一种用于单图像超分辨率(SR)的深度学习方法。 我们的方法直接学习了低/高分辨率图像之间的端到端映射。 映射表示为其将低分辨率图像作为输入并输出高分辨率图像的深度卷积神经网络(CNN)。 我们进一步表明,传统的基于稀疏编码的SR方法也可以视为深度卷积网络。 但是与传统方法分别处理每个组件不同,我们的方法共同优化了所有层。 我们的深层CNN具有轻巧的结构,同时展现了最先进的恢复质量,并为实际在线使用提供了快速的速度。 我们探索不同的网络结构和参数设置,以实现性能和速度之间的折衷。 此外,我们扩展了网络以同时处理三个颜色通道,并显示出更好的整体重建质量。

1. 介绍

  单图像超分辨率(SR)[20]旨在从单个低分辨率图像中恢复高分辨率图像,这是计算机视觉中的经典问题。因为对于任何给定的低分辨率像素都存在多种解决方案,所以这个问题天生就是不适的。换句话说,这是一个不确定的反问题,其解决方案不是唯一的。通常通过强先验信息约束解决方案空间来缓解这种问题。要了解现有的,最新的技术,大多数都采用基于示例的[46]策略。这些方法要么利用同一图像的内部相似性[5],[13],[16],[19],[47],要么从外部低分辨率和高分辨率示例对中学习映射函数[2],[4] ],[6],[15],[23],[25],[37],[41],[42],[47],[48],[50],[51]。根据提供的训练样本,可以将基于外部示例的方法制定为通用图像超分辨率,或设计为适合领域特定任务,即面部幻觉[30],[50]。

  基于稀疏编码的方法[49],[50]是代表性的基于外部示例的SR方法之一。 此方法在其解决方案流程中涉及几个步骤。 首先,从输入图像中密集裁剪出重叠的补丁并进行预处理(例如,减去均值和归一化)。 然后,这些补丁通过低分辨率字典进行编码。 稀疏系数被传递到用于重建高分辨率色块的高分辨率字典中。 重叠的重建补丁被汇总(例如,通过加权平均)以产生最终输出。 大多数基于示例的外部方法都共享此传递途径,这些方法特别注意学习和优化字典[2],[49],[50]或建立有效的映射函数[25],[41],[42], [47]。 但是,传递途径中的其余步骤很少在统一的优化框架中进行优化或考虑。

  在本文中,我们表明上述传递途径等效于深度卷积神经网络[27](在3.2节中有更多详细信息)。 基于这一事实,我们考虑了一个卷积神经网络,该网络可以直接学习低分辨率和高分辨率图像之间的端到端映射。 我们的方法与现有的基于外部示例的方法从根本上不同,因为我们的方法没有明确学习用于建模补丁空间的字典[41],[49],[50]或歧管[2],[4]。 这些是通过隐藏层隐式实现的。 此外,补丁提取和聚集也被公式化为卷积层,因此涉及优化。 在我们的方法中,整个SR流水线是通过学习完全获得的,几乎不需要预处理。

  我们将提出的模型命名为超分辨率卷积神经网络(SRCNN)。拟议的SRCNN具有几个吸引人的属性。首先,有意识地设计其结构时要考虑到其简单性,但与基于最新示例的方法相比,它的精度更高(注:当地面真实图像出现时,通过使用不同的度量标准进行数值评估,例如峰值信噪比(PSNR),结构相似性指标(SSIM)[43],多尺度SSIM [44],信息保真度标准[38] 可用)。图1显示了一个示例的比较。其次,通过适度的过滤器和层数,即使在CPU上,我们的方法也可以实现实际在线使用的快速速度。我们的方法比许多基于示例的方法要快,因为它是完全前馈的,不需要解决用法上的任何优化问题。第三,实验表明,当(i)可以使用更大,更多样化的数据集或(ii)使用更大,更深的模型时,可以进一步提高网络的恢复质量。相反,较大的数据集/模型可能会给现有的基于示例的方法带来挑战。此外,所提出的网络可以同时处理三个彩色图像通道,以实现改进的超分辨率性能。

图1:提出的超分辨率卷积神经网络(SRCNN)仅经过几次训练迭代就超越了三次三次基线,并且在中等训练下优于基于稀疏编码的方法(SC)[50]。 通过更多的训练迭代可以进一步提高性能。 在4.4.1节(Set5数据集的放大系数为3)中提供了更多详细信息。 所提出的方法提供了视觉上吸引人的重建图像。

  总的来说,这项研究的贡献主要在三个方面:
  1)我们提出了一种用于图像超分辨率的全卷积神经网络。 该网络可直接学习低分辨率和高分辨率图像之间的端到端映射,无需优化即可进行很少的前/后处理。
  2)我们在基于深度学习的SR方法和传统的基于稀疏编码的SR方法之间建立了联系。 这种关系为网络结构的设计提供了指导。
  3)我们证明深度学习在经典的超分辨率计算机视觉问题中很有用,并且可以达到良好的质量和速度。

  这项工作的初步版本已在较早的时候提出[11]。 当前的工作以重要的方式添加到了初始版本中。 首先,我们通过在非线性映射层中引入更大的过滤器尺寸来改进SRCNN,并通过添加非线性映射层来探索更深的结构。 其次,我们扩展SRCNN以同时处理三个颜色通道(在YCbCr或RGB颜色空间中)。 通过实验,我们证明与单通道网络相比,性能可以提高。 第三,大量的新分析和直观解释被添加到了初始结果中。 我们还将原始实验从Set5 [2]和Set14 [51]测试图像扩展到BSD200 [32](200个测试图像)。 此外,我们将其与许多最近发布的方法进行了比较,并确认我们的模型仍然优于使用不同评估指标的现有方法。

2. 近期工作

2.1. 图像超分辨率

  根据图像先验,单图像超分辨率算法可以分为四种类型:预测模型,基于边缘的方法,图像统计方法和基于补丁(或基于示例)的方法。 在Yang等人的工作中,对这些方法进行了彻底的调查和评估[46]。 其中,基于示例的方法[16],[25],[41],[47]实现了最先进的性能。

  基于内部示例的方法利用自相似性属性并从输入图像生成示例补丁。Glasner的工作[16]中首次提出,并提出了几种改进的变体[13],[45]来加速实施。基于外部示例的方法[2],[4],[6],[15],[37],[41],[48],[49],[50],[51]了解低位/来自外部数据集的高分辨率补丁之间的映射。这些研究在如何学习紧凑的词典或流形空间以关联低/高分辨率斑块以及如何在此类空间中执行表示方案方面有所不同。在弗里曼等人[14]的开创性工作中,字典直接表示为低/高分辨率补丁对,并且在低分辨率空间中找到输入补丁的最近邻居(NN),并使用其对应的高分辨率补丁进行重构。Chang等人[4]介绍了一种流行嵌入技术,以替代NN策略。在Yang等人的著作[49], [50]中,上述NN对应关系发展为更复杂的稀疏编码公式。提出了其他映射函数,例如内核回归[25],简单函数[47],随机森林[37]和锚定邻域回归[41],[42],以进一步提高映射准确性和速度。基于稀疏编码的方法及其一些改进[41],[42],[48]属于当今最先进的SR方法。在这些方法中,补丁是优化的重点。补丁提取和聚合步骤被视为预处理/后处理,并分别进行处理。

  大部分SR算法[2],[4],[15],[41],[48],[49],[50],[51]关注于灰度或单通道图像超分辨率。 对于彩色图像,上述方法首先将问题转换为不同的色彩空间(YCbCr或YUV),并且仅将SR应用于亮度通道。 也有尝试同时超分辨所有通道的作品。 例如,Kim 和 Kwon的[25]以及Dai等人的 [7]将他们的模型应用于每个RGB通道,并将它们组合以产生最终结果。 但是,他们都没有分析不同通道的SR性能以及恢复所有三个通道的必要性。

2.2. 卷积神经网络

  卷积神经网络(CNN)可以追溯到几十年[27],而近来的CNN则显示出爆炸性的普及,部分原因是其在图像分类中的成功[18],[26]。 它们也已经成功地应用于其他计算机视觉领域,例如物体检测[34],[40],[52],面部识别[39]和行人检测[35]。 在此过程中,有几个至关重要的因素:(i)在现代功能强大的GPU上进行有效的训练实施[26],(ii)线性整流单元(ReLU)的建议[33],该方案使收敛速度大大提高,同时仍然具有良好的性能 质量[26],以及(iii)轻松访问大量数据(例如ImageNet [9])来训练较大的模型。 我们的方法也将从这些进展中受益。

2.3. 深度学习用于图像还原

  已经有一些使用深度学习技术进行图像恢复的研究。多层感知器(MLP),其所有层都是完全连接的(与卷积相反),适用于自然图像降噪[3]和去模糊后降噪[36]。与我们的工作更紧密相关的是,卷积神经网络被应用于自然图像的去噪[22]和消除噪声模式(污垢/雨水)[12]。这些恢复问题或多或少是由去噪驱动的。崔等人 [5]建议在基于内部示例的概念[16]下将自动编码器网络嵌入其超分辨率传递途径中。由于级联的每一层都需要对自相似性搜索过程和自动编码器进行独立的优化,因此未将深度模型专门设计为端对端解决方案。相反,提出的SRCNN优化了端到端映射。此外,SRCNN的速度更快。它不仅是定量上优越的方法,而且是实用的方法。

3. 超分辨卷积神经网络

3.1. 公式

  考虑单个低分辨率图像,我们首先使用三次三次插值将其放大至所需大小,这是我们执行的唯一预处理操作(注:双三次插值也是一种卷积运算,因此可以表述为卷积层。但是,此层的输出大小大于输入大小,因此存在小步跨度。为了利用诸如cuda-convnet [26]之类的广受欢迎且经过优化的实现,我们从学习中排除了这一“层”)。 让我们将插值后的图像表示为Y。我们的目标是从Y中恢复出与地面真实高分辨率图像X尽可能相似的图像F(Y)。为了便于表示,我们仍将Y称为“低分辨率”图像,尽管它的大小与X相同。我们希望学习映射F,该映射在概念上包括三个操作:

  1. 色块提取和表示:此操作从低分辨率图像Y中提取(重叠)色块,并将每个色块表示为高维向量。 这些向量包括一组特征图,其数量等于向量的维数。
  2. 非线性映射:此操作将每个高维向量非线性映射到另一个高维向量。 从概念上讲,每个映射向量都是高分辨率补丁的表示。 这些向量包含另一组特征图。
  3. 重建:此操作将上述高分辨率的逐块表示形式进行汇总,以生成最终的高分辨率图像。 预期该图像类似于地面truth X。

  我们将展示所有这些操作形成一个卷积神经网络。 图2概述了网络。接下来,我们详细介绍每个操作的定义。

图2:给定低分辨率图像Y,SRCNN的第一个卷积层将提取一组特征图。 第二层将这些特征映射非线性地映射到高分辨率补丁表示。 最后一层将空间邻域内的预测结合起来,以生成最终的高分辨率图像F(Y)。

3.1.1. 补丁提取和表示

  图像恢复中的一种流行策略(例如[1])是密集提取补丁,然后用一组预先训练好的基(例如PCA,DCT,Haar等)来表示它们。这等同于用一组滤波器对图像进行卷积,每个滤波器对应一个基。 在我们的表述中,我们将这些基的优化纳入网络的优化之中。 形式上,我们的第一层表示为操作F1:

其中W1和B1分别代表滤波器和偏置,“*”代表卷积运算。在此,W1对应于支撑c×f1×f1的n1个过滤器,其中c是输入图像中通道的数量,f1是过滤器的空间大小。直观地,W1在图像上应用n1个卷积,每个卷积的核尺寸为c×f1×f1。输出由n1个特征图组成。B1是n1维向量,其每个元素都与一个过滤器关联。 我们在过滤器响应上应用线性校正单位(ReLU,max(0,x)) [33] (注:ReLU可以等效地视为第二个运算(非线性映射)的一部分,而第一个运算(补丁提取和表示)变成纯线性卷积。)。

3.1.2. 非线性映射

  第一层为每个面片提取n1维特征。 在第二个操作中,我们将这些n1维向量中的每一个映射到n2维向量中。 这等效于应用n2个具有微小空间支持1×1的滤波器。 此解释仅对1×1过滤器有效。 但是很容易推广到较大的过滤器,例如3×3或5×5。 在这种情况下,非线性映射不在输入图像的补丁上; 相反,它位于特征图的3×3或5×5“补丁”上。 第二层的操作是:

这里W2包含大小为n1×f2×f2的n2个过滤器,而B2是n2维的。 输出的n2维向量中的每个向量在概念上都是将用于重建的高分辨率色块的表示。

  可以添加更多的卷积层以增加非线性(卷积操作是线性的,这里应该是指加了激活函数的卷积层)。 但这会增加模型的复杂度(一层的n2×f2×f2×n2参数),因此需要更多的训练时间。 我们将在4.3.3节中介绍其他非线性映射层,以探索更深的结构。

3.1.3. 重建

  在传统方法中,通常将预测的重叠高分辨率色块取平均值,以产生最终的完整图像。 平均可以视为一组特征图上的预定义滤波器(其中每个位置都是高分辨率色标的“平化”矢量形式)。 因此,我们定义了一个卷积层以产生最终的高分辨率图像:

这里W3对应于大小为n2×f3×f3的c个滤波器,而B3是c维向量。

  如果高分辨率图像块的表示位于图像域中(即,我们可以简单地对每个表示进行形状调整以形成图像块),我们希望滤波器的作用类似于平均滤波器(就是将多个高分辨率图像块的重叠部分的值取平均值作为该部分的最终结果); 如果高分辨率色块的表示是在其他一些域中(例如,一些基的系数),则我们期望W3的行为类似于首先将系数投影到图像域上然后取平均值(就是将多个高分辨率图像块的重叠部分的值取加权平均值作为该部分的最终结果)。 无论哪种方式,W3都是一组线性滤波器。

  有趣的是,尽管以上三个操作是出于不同的直觉,但它们都可指向相同的形式:卷积层。 我们将三个操作放在一起,形成一个卷积神经网络(图2)。 在该模型中,所有过滤权重和偏差都将得到优化。 尽管整体结构简洁,但我们的SRCNN模型还是通过借鉴超分辨率的重大进展而积累的广泛经验而精心开发的[49],[50]。 我们将在下一部分中详细说明这种关系。

3.2. 与基于稀疏编码的方法的关系

  我们表明,基于稀疏编码的SR方法[49],[50]可以看作是卷积神经网络。 如图3所示。

图3:用卷积神经网络的方式看基于稀疏编码方法

  在基于稀疏编码的方法中,让我们考虑从输入图像中提取f1×f1的低分辨率图像块。 然后,像Feature-Sign [29]这样的稀疏编码求解器将首先将补丁投影到(低分辨率)字典上。 如果字典大小为n1(也就是用n1个和图像块相同大小的字典块加权求和来表示图像块),则等效于在输入图像上应用n1个f1×f1的线性滤波器进行卷积(平均减法也是线性运算,因此可以吸收)。如图3的左图所示。

  然后,稀疏编码求解器将迭代处理n1个系数。 该求解器的输出为n2个系数(高分辨字典的系数),对于稀疏编码,通常为n2 = n1(为什么?高维的基应该比低维的基数量多呀,系数怎么相等?)。 这n2个系数代表了高分辨率图像块。 从这个意义上讲,稀疏编码求解器的行为类似于非线性映射算法的特殊情况,其空间支持(spatial support,可以理解为卷积核大小)为1×1。 参见图3的中间部分。但是,稀疏编码求解器不是前馈的,即它是一种迭代算法。 相反,我们的非线性算法是完全前馈的,可以有效地计算出来。 如果我们将f2设置为1,则我们的非线性算子可以视为像素级的全连接层。 值得注意的是,SRCNN中的“稀疏编码求解器”指的是前两层,而不仅仅是第二层或激活函数(ReLU)。 因此,通过学习过程也可以很好地优化SRCNN中的非线性运算。

  然后将上述n2个系数(在稀疏编码之后)投影到另一个(高分辨率)字典上,以生成高分辨率补丁。 然后将重叠的高分辨率图像块求平均。 如上所述,这等效于n2个特征图上的线性卷积。 如果用于重建的高分辨率色块的大小为f3×f3,则线性滤波器的等效空间支持大小为f3×f3。 参见图3的右侧。

  上面的讨论表明,基于稀疏编码的SR方法可以看作是一种卷积神经网络(具有不同的非线性映射)。 但是在基于稀疏编码的SR方法的优化中,并未考虑所有操作,即不进行统一优化,三个步骤时独立的。 相反,在我们的卷积神经网络中,低分辨率字典,高分辨率字典,非线性映射,均值减法和平均数都与要优化的滤波器有关。 因此,我们的方法优化一个由所有操作组成的端到端映射。

  上面的类比也可以帮助我们设计超参数。例如,我们可以将最后一层的过滤器大小设置为小于第一层的过滤器大小,因此我们更多地依赖于高分辨率色块的中心部分(如果f3=1,则使用没有平均的中心像素)。我们也可以设置n2<n1,因为它应该是稀疏的。典型的基本设置是f1 = 9,f2 = 1,f3 = 5,n1 = 64和n2 = 32(我们在实验部分评估了更多设置)。总体而言,估计一个高分辨率像素利用了(9+5−1)2(9+5-1)^2(9+5−1)2=169像素的信息。 显然,用于重建的信息比现有的基于外部示例的方法所使用的信息要大,例如,使用了(5+5−1)2(5+5-1)^2(5+5−1)2=81像素(注:patch在每个方向上重叠4个像素)的[15],[50]。这是SRCNN表现出卓越性能的原因之一。

3.3. 训练

  学习端到端映射函数F需要估计网络参数Θ= {W1,W2,W3,B1,B2,B3}。 这是通过最小化重建图像F(Y;Θ)和相应的地面真实高分辨率图像X之间的损失(loss)来实现的。给定一组高分辨率图像{Xi}及其对应的低分辨率图像{Yi}, 我们使用均方误差(MSE)作为损失函数:

其中n是训练样本的数量。 使用MSE作为损失函数有利于高PSNR。 PSNR是用于定量评估图像恢复质量的广泛使用的度量,并且至少部分与感知质量有关。 值得注意的是,如果仅可推导损失函数,则卷积神经网络并不排除使用其他种类的损失函数。 如果在训练过程中给出了更好的感知动机指标,那么网络就可以灵活地适应该指标。 相反,通常很难通过传统的“手工”方法实现这种灵活性。 尽管对所提出的模型进行了训练以使其具有较高的PSNR,但是当使用替代评估指标(例如SSIM,MSSIM)评估模型时,我们仍然观察到令人满意的性能(请参见第4.4.1节)。

  使用随机反向梯度下降和标准反向传播可以使损失最小化[28]。 特别地,权重矩阵更新为:

其中ℓ\ellℓ∈{1、2、3}和i是层和迭代的索引,η是学习率,∂L∂Wiℓ\frac{\partial L}{\partial W_i^\ell}∂Wiℓ​∂L​是导数。通过从均值为零且标准差为0.001(偏差为0)的高斯分布中随机抽取来初始化各层的权重。前两层的学习速率为10−410^{-4}10−4,最后一层的学习速率为10−510^{-5}10−5。从经验上我们发现,最后一层的较小学习速率对于网络收敛很重要(类似于去噪情况[22])。

  在训练阶段,将地面真相图像{XiX_iXi​}准备为从训练图像中随机裁剪的fsub×fsub×f_{sub}×f_{sub}×fsub​×fsub​×c-pixel子图像。 所谓“子图像”,是指这些样本被视为小的“图像”而不是“补丁”,因为“补丁”是重叠的,并且需要一些平均后处理,而“子图像”则不需要。 为了合成低分辨率样本{YiY_iYi​},我们通过高斯核对子图像进行模糊处理,通过放大因子对子图像进行子采样,并通过双三次插值以相同因子对子图像进行放大。

  为了避免训练期间的边界效应(border effects),所有卷积层都没有填充,并且网络产生较小的输出((fsub−f1−f2−f3+3)2×c)((f_{sub}-f_1-f_2-f_3+3)^2×c)((fsub​−f1​−f2​−f3​+3)2×c)。 仅通过XiX_iXi​的中心像素与网络输出之间的差异来评估MSE损失函数。 尽管我们在训练中使用固定的图像大小,但是在测试过程中可以将卷积神经网络应用于任意大小的图像。

  我们使用cuda-convnet包[26]来实现我们的模型。 我们还尝试了Caffe软件包[24],并观察到了类似的性能。

4.实验

  我们首先研究使用不同数据集对模型性能的影响。接下来,我们检查通过我们的方法学到的过滤器。然后,我们探索网络的不同体系结构设计,并研究超分辨率性能与诸如深度,过滤器数量和过滤器尺寸等因素之间的关系。随后,我们在定量和定性上将我们的方法与最新技术进行了比较。根据[42],在第4.14.4节中,仅在亮度通道(YCbCr颜色空间中的Y通道)上应用超分辨率,因此第一层/最后一层的c=1,而性能(例如PSNR和SSIM)为在Y通道上评估。最后,我们扩展网络以处理彩色图像并评估不同渠道上的性能。

4.1. 训练数据

  如文献所示,深度学习通常受益于大数据培训。为了进行比较,我们使用了一个相对较小的训练集[41],[50](由91张图像组成),以及一个较大的训练集,其中包含395909张来自ILSVRC 2013 ImageNet检测训练分区的图像。训练子图像的大小为fsubf_{sub}fsub​=33。因此,可以将91个图像的数据集分解为24,800个子图像,这些子图像是从原始图像中提取的,步幅为14。而ImageNet即使使用33的步幅也可以提供超过500万个子图像。我们使用基本的网络设置,即:f1=9,f2=1,f3=5,n1=64和n2=32。 我们使用Set5 [2]作为验证集。即使使用较大的Set14集,我们也观察到类似的趋势[51]。提升因子为3。我们使用基于稀疏编码的方法[50]作为基线,该方法可得到31.42 dB的平均PSNR值。

  使用不同训练集的测试收敛曲线如图4所示。由于反向传播的次数相同,因此ImageNet上的训练时间与91图像数据集上的训练时间大致相同。可以看出,在相同数量的反向传播(即8×1088×10^88×108)下,SRCNN + ImageNet达到32.52dB,高于在91张图像上训练得到的32.39dB。结果肯定地表明,使用更大的训练集可以进一步提高SRCNN的性能,但是大数据的影响不如高级视觉问题中显示的令人印象深刻[26]。这主要是因为这91张图像已经捕获了足够的自然图像可变性。另一方面,我们的SRCNN是一个相对较小的网络(8,032个参数),不能覆盖91个图像(24,800个样本)。不过,我们将使用包含更多数据的ImageNet作为以下实验中的默认训练集。

图4:通过使用更大的ImageNet数据集进行训练,与使用91张图像相比,可以提高性能。

4.2. 用于超分辨率的滤镜的学习

  图5中显示了以放大因子3在ImageNet上训练时,学习出的第一层滤波器的示例。 请参考我们已发布的实现,了解上采样因子为2和4的情况。有趣的是,每个学习的滤波器都有其特定的功能。 例如,过滤器g和h像拉普拉斯/高斯过滤器,过滤器a-e像在不同方向上的边缘检测器,过滤器f像纹理提取器。 图6显示了不同层的示例特征图。显然,第一层的特征图包含不同的结构(例如,不同方向的边缘),而第二层的特征图在强度上主要不同。

图5:该图显示了在ImageNet上训练的第一层过滤器,其放大系数为3。这些过滤器是根据它们各自的方差来组织的。

图6:不同图层的示例特征图。

4.3. 模型与性能的权衡

  根据基本的网络设置(即f1=9,f2=1,f3=5,n1=64和n2=32),我们将逐步修改其中一些参数,以研究性能与速度之间的最佳权衡 ,并研究性能和参数之间的关系。

4.3.1. 过滤器数量

  通常,如果我们增加网络宽度(即每层增加更多的过滤器,注:在[17]之后,我们使用“宽度”来表示一层过滤器的数量。“宽度”一词在文献中可能还有其他含义),则会以运行时间为代价提高性能。 具体来说,根据我们的网络默认设置n1=64和n2=32,我们进行了两个实验:(i)一个是使用n1=128且n2=64的较大网络,以及(ii)另一个 在n1=32和n2 =16的较小网络中。类似于第4.1节,我们还在ImageNet上训练了两个模型,并在Set5上使用放大因子3进行了测试。表1显示了在8×1088×10^88×108反向传播时观察到的结果。显然,通过增加宽度可以实现出色的性能。但是,如果需要快速的恢复速度,则首选较小的网络宽度,该网络宽度仍比基于稀疏编码的方法(31.42 dB)可获得更好的性能。

表1:在SRCNN中使用不同的过滤器数量的结果。 在ImageNet上进行训练,而对Set5数据集进行评估。

4.3.2. 过滤器大小

  在本节中,我们研究了网络对不同过滤器大小的敏感性。 在先前的实验中,我们将过滤器大小设置为f1=9,f2=1和f3=5,并且网络可以表示为9-1-5。 首先,为了与基于稀疏编码的方法保持一致,我们将第二层的过滤器大小固定为f2=1,并将其他层的过滤器大小扩大到f1=11和f3=7(11-1-7)。所有其他设置与第4.1节相同。 Set5的放大系数为3的结果为32.57 dB,略高于第4.1节中报告的32.52 dB。 这表明,较大的过滤器尺寸可以捕获更丰富的结构信息,从而获得更好的结果。

  然后,我们进一步检查第二层过滤器尺寸较大的网络。具体来说,我们将滤波器的尺寸固定为f1=9,f3=5,然后将第二层的滤波器尺寸扩大为(i)f2=3(9-3-5)和(ii)f2=5 (9-5-5)。图7中的收敛曲线表明,使用更大的过滤器尺寸可以显着提高性能。具体来说,在Set5上以9×35和9-5-5反向传播8×1088×10^88×108时获得的平均PSNR值分别为32.66 dB和32.75 dB。 结果表明,在映射阶段利用邻域信息是有益的。

图7:较大的过滤器尺寸可获得更好的结果。

  但是,随着过滤器尺寸的增大,部署速度也会降低。 例如,参数9-1-5、9-3-5和9-5-5的数量分别为8,032、24,416和57,184。 9-5-5的复杂度几乎是9-3-5的两倍,但是性能提升是微不足道的。 因此,网络规模的选择应始终在性能和速度之间进行权衡。

4.3.3. 网络的层数

  He和Sun [17]的最新研究表明,适度增加网络深度可以使CNN受益。在这里,我们通过添加另一个具有n22n_{22}n22​=16滤镜且大小为f22f_{22}f22​=1的非线性映射层来尝试更深的结构。我们进行了三个控制实验,即9-1-1-5、9-3-1 -5、9-5-1-5,分别在9-1-5、9-3-5和9-5-5上添加一个附加层。 附加层的初始化方案和学习率与第二层相同。 从图8(a),8(b)和8©,我们可以看到四层网络的收敛速度比三层网络慢。 但是,如果有足够的培训时间,则更深的网络将最终赶上并收敛到三层网络。

图8:三层和四层网络之间的比较。

  发现深层结构对超分辨率的有效性不如图像分类所示[17]。 此外,我们发现更深的网络并不一定总能带来更好的性能。 具体来说,如果我们在9-1-5网络上添加n22n_{22}n22​=32个滤波器的附加层,则性能将下降,并且无法超过三层网络(请参见图9(a))。 如果我们通过在9-1-5上添加两个具有n22n_{22}n22​=32和n23n_{23}n23​=16过滤器的非线性映射层来更深入,那么我们必须设置较小的学习率以确保收敛,但是训练一周后我们仍然没有观察到更好的表现(见图9(a))。 我们还尝试将附加层的过滤器大小扩大到f22f_{22}f22​=3,并探索两个深层结构9-3-3-5和9-3-3-3。 但是,从图9(b)所示的收敛曲线来看,这两个网络没有显示出比9-3-1-5网络更好的结果。

图9:更深的结构并不总能带来更好的结果

  所有这些实验表明,在这种超分辨率的深层模型中,并不是“越深越好”。 这可能是由于训练困难造成的。 我们的CNN网络不包含池化层或全连接层,因此它对初始化参数和学习率敏感。 当我们深入学习时(例如4或5层),我们很难设置合适的学习速率来保证收敛。 即使收敛,网络也可能会陷入不良的局部最小值,并且即使有足够的训练时间,学习到的滤波器的多样性也会降低。 在[16]中也观察到了这种现象,其中深度的不适当增加会导致图像分类的精度饱和或降级。 为什么“更深的地方并没有更好”仍然是一个悬而未决的问题,这需要进行研究以更好地理解深度架构中的梯度和训练动态。 因此,在下面的实验中我们仍然采用三层网络。

4.4. 与最新技术的比较

  在本节中,我们将我们的方法和最先进方法进行定量与定性地对比。我们采用具有良好性能与速度之间折衷的模型:在ImageNet上训练的f1=9,f2=5,f3=5,n1=64和n2=32的三层网络。对于不同的放大因子{2, 3, 4},我们针对该因子训练一个特定的网络(注:在降噪领域[3],针对每个噪声水平,都会训练一个特定的网络。)。

比较。 我们将SRCNN与最新的SR方法进行比较:

  • Yanget等人的基于SC稀疏编码的方法[50]
  • NE + LLE-邻居嵌入+局部线性嵌入方法[4]
  • ANR锚定邻域回归方法[41]
  • A±调整后的锚定邻域回归方法[42]
  • 根据Yang等人的工作[46]进行的全面评估, [25]中描述的方法KK在基于外部示例的方法中实现了最佳性能。

  这些实现均来自作者提供的可公开获得的代码,并且所有图像均使用相同的双三次内核进行降采样。

测试装置。 Set5 [2](5张图像),Set14 [51](14张图像)和BSD200 [32](200张图像,与[46]中相同的200张图像。)8用于评估放大系数2、3和4的性能。

评估指标。 除了广泛使用的PSNR和SSIM指数[43],我们还采用了另外四个评估矩阵,即信息保真度标准(IFC)[38],噪声质量度量(NQM)[8],加权峰值信噪比 (WPSNR)和多尺度结构相似性指数(MSSSIM)[44],与[46]中报道的人类感知得分高度相关。

4.4.1. 定量和定性评估

  如表2、3和4所示,在所有实验中,提出的SRCNN在大多数评估矩阵中得分最高(可以在补充文件中找到每个图像的PSNR值。)。 请注意,我们的SRCNN结果基于8×1088×10^88×108反向传播的检查点(checkpoint)。 具体来说,对于放大系数3,SRCNN在PSNR上获得的平均增益为0.15 dB,0.17 dB和0.13 dB,高于三个最佳数据集A + [42]。 当我们查看其他评估指标时,我们惊讶地发现,与在IFC和NQM上的双三次插值法相比,SC的得分甚至更低。 显然,SC的结果比双三次插值的结果在视觉上更令人愉悦。 这表明这两个指标可能无法如实显示图像质量。 因此,无论这两个指标如何,SRCNN都能在所有方法和比例因子中实现最佳性能。



  值得指出的是,SRCNN在学习阶段的开始就超过了双三次基准(参见图1),并且经过适度的培训,SRCNN的性能优于现有的最新方法(参见图4)。 然而,性能远远没有收敛。 我们推测,在更长的训练时间下可以获得更好的结果(见图10)。

Set5数据集上SRCNN的测试收敛曲线和其他方法的结果。

  图14、15和16显示了按比例放大系数3放大的不同方法的超分辨率结果。可以看出,SRCNN产生的边缘比其他方法要清晰得多,而整个图像上没有任何明显的伪影。

图14:Set5中的“蝴蝶”图像,放大倍数为3。

图15:Set14中的“ ppt3”图像,其放大系数为3。

图16:来自Set14的“斑马”图像,放大系数为3。

  此外,我们报告了另一种用于图像超分辨率的深度学习方法,Cui等人[5]的DNC。 由于他们使用了不同的模糊核(标准偏差为0.55的高斯滤波器),我们使用与DNC相同的模糊核训练特定网络(9-5-5),以进行公平的定量比较。 放大系数是3,训练集是91个图像数据集。 从图11所示的收敛曲线可以看出,我们的SRCNN仅以2.7×10 7反向支撑就超过了DNC,并且在更长的训练时间下可以获得更大的余量。 这也证明了端到端学习优于DNC,即使该模型已经“深”了。

图11:Set5数据集上SRCNN的测试收敛曲线和DNC的结果。

4.4.2. 运行时间

  图12显示了几种最先进方法的运行时间比较,以及它们在Set14上的恢复性能。所有基线方法都是从相应作者的MATLAB + MEX实现中获得的,而我们的方法是纯C ++的。我们使用同一台计算机(Intel CPU 3.10 GHz和16 GB内存)来配置所有算法的运行时间。请注意,我们的方法的处理时间与测试图像的分辨率高度线性相关,因为所有图像都经过相同数量的卷积。我们的方法始终是性能和速度之间的权衡。为了说明这一点,我们训练了三个网络进行比较,分别是9-1-5、9-3-5和9-5-5。很明显,91-5网络是最快的,尽管它仍然比下一个最新的A +拥有更好的性能。与9-1-5网络相比,其他方法要慢几倍甚至几个数量级。注意,速度差距并不是主要由不同的MATLAB / C ++实现引起的。相反,其他方法需要解决使用上的复杂优化问题(例如,稀疏编码或嵌入),而我们的方法是完全前馈的。 9-5-5网络可实现最佳性能,但要花费运行时间。我们的CNN的测试时间速度可以通过多种方式进一步加快,例如,近似或简化经过训练的网络[10],[21],[31],而性能可能会略有下降。

图12:与现有的外部基于示例的方法相比,拟议的SRCNN可以实现最先进的超分辨率质量,同时保持较高的竞争速度。 该图表基于表3中汇总的Set14结果。所有三个SRCNN网络的实现都可以在我们的项目页面上找到。

4.5. 色彩通道实验

  在以前的实验中,我们遵循常规方法来超分辨彩色图像。 具体来说,我们首先将彩色图像转换为YCbCr空间。 SR算法仅应用于Y通道,而Cb,Cr通道通过双三次插值进行了放大。 如果我们共同考虑过程中的所有三个通道,发现是否可以提高超分辨率性能就很有趣。

  我们的方法可以灵活地接受更多的渠道,而无需改变学习机制和网络设计。 特别是,它可以通过将输入通道设置为c=3来轻松地同时处理三个通道。在以下实验中,我们探索了彩色图像超分辨率的不同训练策略,随后评估了它们在不同通道上的性能。

  实施细节。 对91张图像的数据集进行训练,对Set5 [2]进行测试。 网络设置为:c=3,f1=9,f2=1,f3=5,n1=64和n2=32。正如我们已经证明SRCNN在不同规模上的有效性一样,这里仅评估上采用因子为3的性能。

  比较。 我们将我们的方法与最新的颜色SR方法KK [25]进行了比较。 我们还尝试了不同的学习策略进行比较:

  • 仅Y:这是我们的基准方法,它是仅在亮度通道上训练的单通道(c = 1)网络。 使用双三次插值法可放大Cb,Cr通道。
  • YCbCr:在YCbCr空间的三个通道上进行训练。
  • Y预训练:首先,为了保证Y信道的性能,我们仅使用Y信道的MSE作为损耗来预训练网络。 然后,我们使用所有通道的MSE来微调参数。
  • CbCr预训练:我们使用Cb,Cr通道的MSE作为损耗来预训练网络,然后微调所有通道上的参数。
  • RGB:在RGB空间的三个通道上进行训练。

  结果示于表5,其中我们有以下发现。 (i)如果我们直接在YCbCr通道上训练,结果甚至比双三次插值还要差。由于Y和Cb,Cr通道固有的不同特性,训练陷入了极差的局部最小值。 (ii)如果我们在Y或Cb,Cr通道上进行预训练,则性能最终会提高,但仍然不比彩色图像上的“仅Y”好(请参阅表5的最后一列,其中PSNR在RGB色彩空间)。这表明,在统一网络中进行训练时,Cb,Cr通道可能会降低Y通道的性能。 (iii)我们观察到,“ Y预训练”的Cb,Cr通道的PSNR值比“ CbCr预训练”的PSNR值高。原因在于Cb,Cr通道和Y通道之间的差异。在视觉上,Cb,Cr通道比Y通道更模糊,因此受下采样过程的影响较小。当我们在Cb,Cr通道上进行预训练时,只有少数滤波器被激活。然后,在微调过程中,训练很快就会降到不好的局部最小值。另一方面,如果我们在Y通道上进行预训练,则将激活更多过滤器,并且Cb,Cr通道上的性能将进一步提高。图13显示了带有“ Y预训练”的第一层过滤器的Cb,Cr通道,其模式与图5所示的模式有很大不同。(iv)在RGB通道上进行训练可以获得最佳的色彩效果图片。与YCbCr通道不同,RGB通道之间呈现出很高的互相关性。所提出的SRCNN能够利用信道之间的这种自然对应来进行重建。因此,与双三次插值相比,该模型在Y通道上获得的结果仅为“仅Y”,并且在Cb,Cr通道上获得了更好的结果。 (v)在KK [25]中,超分辨率分别应用于每个RGB通道。当我们将其结果转换到YCbCr空间时,Y通道的PSNR值类似于“仅Y”,但是Cb,Cr通道的PSNR值比双三次插值差。结果表明该算法偏向Y通道。总体而言,我们在RGB通道上训练的方法比KK和单通道网络(“仅Y”)具有更好的性能。还值得注意的是,与单通道网络相比,改进并不显着(即0.07 dB)。这表明Cb,Cr通道几乎没有帮助改善性能。

5. 总结

  我们提出了一种用于单图像超分辨率(SR)的新颖的深度学习方法。 我们表明,传统的基于稀疏编码的SR方法可以重新构造为深度卷积神经网络。 所提出的方法SRCNN,学习了低分辨率和高分辨率图像之间的端到端映射,除了优化之外几乎没有额外的前/后处理。 SRCNN具有轻巧的结构,其性能优于最先进的方法。 我们推测,通过探索更多的过滤条件和不同的训练策略,可以进一步获得额外的表现。 此外,所提出的结构具有简单性和鲁棒性的优点,可以应用于其他低级视觉问题,例如图像去模糊或同时进行SR +去噪。 人们还可以研究一种网络来应对不同的提升因素。

SRCNN:Image Super-Resolution Using Deep Convolutional Networks相关推荐

  1. Paper8:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

    Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 还未读

  2. 深度学习论文阅读图像分类篇(三):VGGNet《Very Deep Convolutional Networks for Large-Scale Image Recognition》

    深度学习论文阅读图像分类篇(三):VGGNet<Very Deep Convolutional Networks for Large-Scale Image Recognition> Ab ...

  3. 虹膜识别论文2:An Experimental Study of Deep Convolutional Features For Iris Recognition 2016年 学习心得

    翻译: An Experimental Study of Deep Convolutional Features For Iris Recognition 深度卷积特征用于虹膜识别的实验研究 2016 ...

  4. 论文笔记:Very deep convolutional networks for large-scale image recognition(VGG)

    一.基本信息 标题:Very deep convolutional networks for large-scale image recognition 时间:2014 出版源:arXiv 论文领域: ...

  5. 语音合成论文优选:Efficiently Trainable Text-to-Speech System Based on Deep Convolutional Networks with Guide

    声明:语音合成论文优选系列主要分享论文,分享论文不做直接翻译,所写的内容主要是我对论文内容的概括和个人看法.如有转载,请标注来源. 欢迎关注微信公众号:低调奋进 Efficiently Trainab ...

  6. 【论文解读】DPED:DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks

    1 论文简介 DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks: 使用深度卷积网络使用移动设备上的照片生成D ...

  7. 图像美化笔记:DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks

    论文地址:DSLR-Quality Photos on Mobile Devices with Deep Convolutional Networks 来源: 2017 ICCV 在线demo:htt ...

  8. 多尺度人脸检测--Face Detection through Scale-Friendly Deep Convolutional Networks

    Face Detection through Scale-Friendly Deep Convolutional Networks http://shuoyang1213.me/projects/Sc ...

  9. Image Super-Resolution Using Deep Convolutional Networks

    Image Super-Resolution Using Deep Convolutional Networks code: http://mmlab.ie.cuhk.edu.hk/projects/ ...

  10. 论文Very Deep Convolutional Networks for Large-Scale Image Recognition

    Very Deep Convolutional Networks for Large-Scale Image Recognition 转载请注明:http://blog.csdn.net/stdcou ...

最新文章

  1. pagerank公式的理解
  2. Flutter入门三部曲(3) - 数据传递/状态管理 | 掘金技术征文
  3. Semaphore、CountDownLatch和CyclicBarrier
  4. 人口、人口密度分析项目-条形图
  5. mybatis 详解(三)------入门实例(基于注解)
  6. 小程序组件的使用(三) 调用子组件方法
  7. 基于JAVA+SpringBoot+Mybatis+MYSQL的在线购物商城系统
  8. Function:函数对象
  9. js 经常用到的键盘码
  10. snapshot ensemble(快照集成)论文解析
  11. python数字保留两位_Python 鲜为人知的数值格式化
  12. 69. Php部分常见问题总结
  13. android 连接魅族手机,android studio连接魅族真机
  14. 小米android手机怎么刷机,小米4手机怎么刷机 小米4刷机图文教程
  15. python 输入一个整数,将该整数逆向输出
  16. 服务器运维 考什么证书,腾讯云服务器运维高级工程师认证(TCP)证书有效期、考试内容、费用...
  17. 使用VSCode拉取代码报错would clobber existing tag
  18. Kubernetes监控:Dashbaord 2.0.0部署方式
  19. Sublime Text3 Mac版去掉自动更新和添加中文
  20. AutoCAD(2014) Ribbon不见

热门文章

  1. 修复 iPhone X H5 底部安全区域定位按钮下内容穿透 BUG
  2. java 串行_java串行化
  3. BUUCTF-[安洵杯 2019]easy_web1
  4. 新版《鹿鼎记》史上最低分!数据分析告诉你,韦小宝跟哪个老婆最亲
  5. arcengine 加载地图不显示_Devexpress使用后arcengine地图加载不能全图显示
  6. 2019计蒜之道初赛第一场 A 商汤的AI伴游小精灵(DFS)
  7. java图片转单色位图_Android:将位图转换为单色位图(每像素1位)
  8. kindle paperwhite2 越狱备忘
  9. JAVA EE面试重点
  10. 苹果iPhone手机怎么恢复备份?详细iOS备份怎么恢复教程