原文:《Learning a Deep Convolutional Network for Image Super-Resolution》
链接:http://mmlab.ie.cuhk.edu.hk/projects/SRCNN.html
摘要。我们提出了一种用于单图像超分辨率(SR)的深度学习方法。我们的方法直接学习低/高分辨率图像之间的端对端映射。 映射表示为一个深层卷积神经网络(CNN)[15],它将低分辨率图像作为输入,并输出高分辨率图像。我们进一步表明,传统的基于稀疏编码的SR方法也可以看作是一个深层卷积网络。 但不同于传统方法分别处理每个组件,我们的方法联合优化所有层。 我们的深层CNN具有轻量的结构,但展示了最先进的恢复质量,并在实际在线使用有较快速度。
单图像超分辨率(SR)[11]是计算机视觉中的经典问题。目前的用于单图像超分辨率的最先进的方法大多是基于示例的。这些方法或利用相同图像的内部相似性[7,10,23],或从外部低和高分辨率的样本学习映射函数[2,4,9,13,20,24-26,28]。那些基于样本的外部方法通常提供有丰富的样本,但是受到有效地和紧凑地建模数据的困难的挑战。
基于稀疏编码的方法[25,26]是基于外部样本的图像超分辨率的代表性方法之一。该方法在它的管道中涉及几个步骤。首先,从图像中密集地提取重叠小块并进行预处理(例如,减去平均值)。然后,这些小块由低分辨率字典编码。稀疏系数被传递到高分辨率字典用于重建高分辨率小块。重叠重建的碎片被聚集(或平均)以产生输出。以前的SR方法特别注意学习和优化字典[25,26]或替代的建模方法[4,2]。然而,管道中剩下的步骤很少在统一优化框架中被优化或考虑。
在本文中,我们上述说的管道相当于一个深层卷积神经网络[15](更多细节在3.2节)。受这一事实的启发,我们直接考虑卷积神经网络,它是低分辨率和高分辨率图像之间的端对端映射。我们的方法与现有的基于外部样本的方法有本质区别,因为我们的方法没有明确地学习用于建模小块空间的字典[20,25,26]或流形[2,4]。这些通过隐藏层隐含地实现。此外,小块提取和聚合也被制定为卷积层,因此参与优化。在我们的方法中,整个SR管道通过学习完全获得,几乎没有预处理/后处理。
我们将提出的模型命名为超分辨率卷积神经网络(SRCNN)1。所提出的SRCNN具有几个吸引人的性质。首先,它的结构是故意设计的,简单的思想,但与最先进的基于样本的方法相比提供了卓越的精度2。图1显示了一个例子的比较。第二,使用中等数量的滤波器和层,我们的方法即使在CPU上的实际在线使用也实现了较快的速度。我们的方法比一系列基于样本的方法更快,因为它是完全前馈的,不需要解决任何使用上的优化问题。第三,实验表明,当(i)可用数据集较大时,和/或(ii)使用较大的模型时,网络的恢复质量可以进一步改善。相反,更大的数据集/模型可能对现有的基于样本的方法是一个挑战。
总的来说,这项工作的贡献主要集中在三个方面:
1) 我们提出一个基于图像超分辨率的卷积神经网络。网络直接学习低分辨率和高分辨率图像之间的端对端映射,在优化之前几乎没有预/后处理。
2) 我们建立了我们的基于深度学习的SR方法和传统的基于稀疏编码的SR方法之间的关系。这种关系为网络结构的设计提供了指导。
3) 我们证明深层学习在关于超分辨率的经典计算机视觉问题上是有用的,并可以实现良好的质量和速度。
图1. 所提出的超分辨率卷积神经网络(SRCNN)仅用少数训练迭代超过双三次基线,并且优于有适度训练的基于稀疏编码的方法(SC)[26]。可以通过更多的训练迭代来进一步改善性能。更多细节在第4.1节中提供(Set5数据集具有增量因子3)。所提出的方法提供了从低分辨率图像在形象化的吸引人的重建。
图像超分辨率。一类目前最好的SR方法[9,4,25,26,24,2,28,20]是学习低/高分辨率小块之间的映射。这些研究随着如何学习紧凑的字典或流形空间以关联低/高分辨率小块,以及如何在这样的空间中进行表示方案而变化。在Freeman等人的先驱工作中 [8],字典被直接呈现为低/高分辨率的小块对,并且在低分辨率空间中找到输入小块的最近邻(NN),其相应的高分辨率小块用于重建。Chang 等人[4]引入流形嵌入技术作为NN策略的替代。在Yang等人的工作[25,26]中,上述NN对应进展到更复杂的稀疏编码公式。这种基于稀疏编码的方法及其几个改进[24,20]是当今最先进的SR方法。在这些方法中,小块是优化的重点;小块提取和聚合步骤被分别认为是预/后处理和处理。
卷积神经网络。卷积神经网络(CNN)可追溯到几十年前[15],并且最近显示出爆炸性的普及,部分是由于其在图像分类中的成功[14]。几个因素在这一进步中至关重要:(i)在现代强大GPU上的高效训练[14],(ii)修正线性单元(ReLU)的提出[18],它在保证质量基础上使收敛更快[14],(iii)容易获得丰富的数据(如ImageNet[5])用于训练更大的模型。我们的方法也从这些进步中受益。
深度学习原来图像恢复。已经有一些研究使用深度学习技术进行图像恢复。
多层感知器(MLP),其所有层是完全连接的(与卷积相反),被应用于自然图像去噪[3]和去模糊去噪[19]。与我们的工作密切相关,卷积神经网络被应用于自然图像去噪[12]和去除噪声模式(污垢/雨)[6]。这些恢复问题或多或少是由去噪驱动的。相反,据我们所知,图像超分辨率问题没有见证深度学习技术的使用。
考虑单个低分辨率图像。我们首先使用双三次插值将其升级到所需的大小,这是我们执行的唯一预处理3。将插值图像表示为Y。我们的目标是从Y恢复到尽可能类似于高分辨率图像X的图像F(Y)。为了易于呈现,我们仍称Y是“低分辨率”图像,尽管它具有与X相同的大小。我们希望学习一个映射F,它在概念上由三个操作组成:
1) 小块提取和表示:该操作从低分辨率图像Y提取(重叠)小块,并将每个小块表示为高维向量。 这些向量包括一组特征映射,其数量等于向量的维度。
2) 非线性映射:该操作将每个高维向量非线性地映射到另一高维向量。每个映射向量在概念上是高分辨率小块的表示。这些向量包括另一组特征映射。
3) 重建:该操作聚集上述高分辨率小块片表示以产生最终的高分辨率图像。该图像预期与X相似。
我们将从一个卷积神经网络显示所有这些操作。网络概述如图2所示。接下来我们详细说明每个操作的定义。
小块提取和表示。图像恢复中的流行策略(例如[1])是密集地提取小块,然后通过一组预训练的基底(例如PCA,DCT,Haar等)来表示它们。这等效于通过一组滤波器对图像进行卷积,每个滤波器是一个基础。在我们的公式中,我们涉及这些基础的优化到网络的优化。正式地,我们的第一层被表示为操作F1:
其中,W1和B1分别表示滤波器和偏差。这里W1的大小是cxf1xf1xn1,其中c是输入图像的通道数量,f1是滤波器的空间尺寸,n1是滤波器数量。直观地,W1在图像上应用n1个卷积,并且每个卷积有一个核大小。输出由n1个特征图组成。B1是n1维向量,其每个元素与滤波器相关联。我们对滤波器响应4应用修正线性单位(ReLU,max(0,x))[18]。
图2。给定低分辨率图像Y,SRCNN的第一卷积层提取一组特征图。第二层将这些特征图非线性地映射到高分辨率小块表示。最后一层将空间邻域内的预测组合以产生最终的高分辨率图像F(Y)。
非线性映射。第一层为每个小块提取n1维特征。在第二操作中,我们将这些n1维向量中的每一个映射成n2维向量。这等效于应用具有简单空间支持1×1的n2个滤波器。第二层的操作是
这里,W2的大小为n1×1×1×n2,B2为n2维。每个输出n2维向量在概念上是将用于重建的高分辨率小块的表示。可以添加更多的卷积层(其空间支持是1×1)以增加非线性。但这会显着增加模型的复杂性,因此需要更多的训练数据和时间。在本文中,我们选择在此操作中使用单个卷积层,因为它已经提供了令人满意的质量。
重建。在传统方法中,预测的重叠高分辨率小块经常被平均以产生最终的完整图像。平均可以被认为是在一组特征图上的预定义滤波器(其中每个位置是高分辨率小块的“平展”矢量形式)。由此,我们定义卷积层以产生最终高分辨率图像:
这里W3大小为n2×f3×f3×c,B3是一个c维向量。
如果高分辨率小块的表示在图像域中(即,我们可以简单地重构每个表示以形成小块),我们期望滤波器像平均滤波器那样工作;如果高分辨率小块的表示在某些其他域中(例如,就某些基底而言的系数),则我们期望W3的行为像首先将系数投影到图像域上,然后进行平均。在任一方式中,W3是一组线性滤波器。
有趣的是,虽然上述三种操作是由不同的直觉驱动的,但它们都导致与卷积层相同的形式。我们把所有三个操作放在一起,形成一个卷积神经网络(图2)。在这个模型中,所有的过滤权重和偏差都要优化。
尽管整体结构简洁,我们的SRCNN模型是通过从超分辨率的重大进展中得出的广泛经验而精心开发的[25,26]。我们在下一节详细说明关系。
图3.卷积神经网络视图中的基于稀疏编码的方法的图示
我们展示基于稀疏编码的SR方法[25,26]可以看作是一个卷积神经网络。 图3给出了图示。
在基于稀疏编码的方法中,让我们考虑从输入图像中提取f1×f1低分辨率小块。该小块被其平均值减去,然后被投影到(低分辨率)字典上。如果字典大小是n1,这等价于在输入图像上应用n1个(f1xf1)线性滤波器(平均减法也是线性运算,所以可以被吸收)。如图3的左边。
然后将稀疏编码解算器应用于投影的n1系数(例如,参见特征符号解码器[17])。解码器的输出是n2个系数,并且在稀疏编码的情况下通常是n2=n1。这些n2系数是高分辨率小块的表示。在这个意义上,稀疏编码解码器表现为非线性映射算子。参见图3的中间部分。然而,稀疏编码解码器不是前馈的,即,它是迭代算法。相反,我们的非线性算子是完全前馈的,可以有效地计算。我们的非线性算子可以被认为是像素级完全连接层。
然后将上述n2个系数(在稀疏编码之后)投影到另一(高分辨率)字典上以产生高分辨率小块。然后将重叠的高分辨率小块进行平均。如上所述,这等价于n2个特征图上的线性卷积。如果用于重建的高分辨率小块具有大小f3×f3,则线性滤波器具有大小f3×f3的等效空间支持。参见图3的右部分。
上述讨论表明基于稀疏编码的SR方法可以被视为一种卷积神经网络(具有不同的非线性映射)。但是在基于稀疏编码的SR方法的优化中没有考虑所有的操作。相反,在我们的卷积神经网络中,低分辨率字典,高分辨率字典,非线性映射,以及平均减法和平均,都涉及要优化的滤波器。因此,我们的方法优化了由所有操作组成的端到端映射。
上面的类比也可以帮助我们设计超参数。例如,我们可以将最后一层的滤波器大小设置为小于第一层的滤波器大小,因此我们更依赖于高分辨率小块的中心部分(到极端,如果f3=1,则使用没有平均的中心像素)。我们也可以设置n2
学习端到端映射函数F需要估计参数Θ={W1;W2;W3;B1;B2;B3}。这是通过最小化重建图像F(Y;Θ)和相应的高分辨率图像X之间的损失来实现的。给定一组高分辨率图像{Xi}及其对应的低分辨率图像{Yi},我们使用均方错误(MSE)作为损失函数:
其中n是训练样本的数量。使用具有标准反向传播的随机梯度下降使损失最小化[16]。
使用MSE作为损失函数有利于高PSNR。PSNR是用于定量评估图像恢复质量的广泛使用的度量,并且至少部分地与感知质量相关。值得注意的是,如果只有损失函数是可推导的,卷积神经网络不排除使用其他种类的损失函数。如果在训练期间给出更好的感知主动的度量,则网络适应该度量是灵活的。我们将在未来研究这个问题。相反,这种灵活性通常难以实现传统的“手工制作”方法。