【图像超分辨率】Learning a Deep Convolutional Network for Image Super-Resolution

Abstract

  • 作者提出了一种针对单图像超分辨的深度学习方法,即SRCNN。该方法直接学习低/高分辨率图像之间的端到端映射。映射是用一个低分辨率图像为输入,高分辨率图像为输出的深度卷积神经网络来表示的。
  • 证明了传统基于稀疏编码的SR方法也可以看作是一个深度卷积网络。
  • 传统方法是分别处理每个组件,而SRCNN联合优化所有层。
  • SRCNN具有轻量级的结构,同时有最先进的恢复质量,并且实现了快速的实际在线使用。

1 Introduction

用于单图像超分辨率的最先进方法大多是基于示例的。 这些方法要么利用相同图像的内部相似性,要么学习外部低分辨率和高分辨率样本对的映射函数。 基于外部示例的方法通常提供有丰富的样本,但是受到有效且紧凑地建模数据的困难的挑战。

基于稀疏编码的方法是基于外部示例的图像超分辨率的代表性方法之一。

  • 首先,从图像中密集地提取重叠的图像块并进行预处理;
  • 用低分辨率的字典对图像块进行编码;
  • 稀疏系数被传递到高分辨率字典中以重建高分辨率图像块;
  • 最后, 聚合(或平均)重叠的重建图像块以产生输出图像。

受此事实的启发,作者直接考虑卷积神经网络,它是低分辨率图像和高分辨率图像之间的端到端映射。
该方法与现有的基于外部示例的方法基本不同,在于:

  • SRCNN没有显式地学习用于图像块空间的字典,这些都是通过隐藏层隐式实现的。
  • 图像块的提取和聚合也被表示为卷积层,因此也被包含在了优化过程中。
  • 在我们的方法中,整个SR管道完全是通过学习获得的,几乎没有预处理或后处理。

在这里插入图片描述

所提出的模型命名为超分辨率卷积神经网络(SRCNN)。 SRCNN具有几个吸引人的特性。

  • 它的结构在设计时考虑到了简单性,并且与最先进的基于实例的方法相比,提供了更高的准确性。
  • 通过适度数量的滤波器和层,该方法即使在CPU上实现了实际在线使用的快速速度。我们的方法比一系列基于示例的方法更快
  • 当使用更大的数据集或者更大的模型时,可以进一步改善网络的恢复质量。

本文的三个主要贡献为:

  • 提出了将卷积神经网络用于图像超分辨。网络直接学习了低分辨到高分辨图像的端到端映射,并且在优化过程中几乎不需要预处理或者后续处理;
  • 建立了基于深度学习的超分辨方法和传统的基于系数编码的方法。这种关系为设计网络结构提供了一种指导;
  • 证明了深度学习在超分辨这一经典计算机视觉问题上是有用的,并且能够达到很好的质量和速度。

2 Related Work

Image Super-Resolution

这一部分介绍了传统的SR方法:

  • 字典直接表示为低/高分辨率的patch对,输入patch的最近邻居在低分辨率空间中找到,其相应的高分辨率patch用于重建。
  • 流形嵌入技术作为NN策略的替代方法。
  • 将上述NN对应进展到更复杂的稀疏编码公式。

Convolutional Neural Networks

卷积神经网络(CNN)普及的部分原因和至关重要的因素:

  • 现代强大GPU的有效训练实施
  • 整流线性单元(ReLU的提出,它使收敛更快,同时仍然表现良好质量
  • 轻松访问大量数据(如ImageNet )以训练大型模型。

Deep Learning for Image Restoration

已经有一些使用深度学习技术进行图像恢复的研究。

多层感知器(MLP),其所有层都是完全连接的(与卷积相反),用于自然图像去噪[3]和后去模糊去噪[19]。
与本文的工作更密切相关的是,卷积神经网络应用于自然图像去噪并消除噪声模式。

3 Convolutional Neural Networks for Super-Resolution

3.1 Formulation

我们首先使用双立方插值将其放大到所需的大小,这是我们执行的唯一预处理。让我们将插值图像表示为Y.我们的目标是从Y中恢复与真实的高分辨率图像X尽可能相似的图像F(Y)。为了便于呈现,我们仍称Y为“低分辨率的“图像,虽然它与X具有相同的大小。我们希望学习映射F,它在概念上由三个操作组成:

  • 图像块提取和表示:该操作从低分辨率图像Y中提取(重叠)图像块,并将每个图像块表示为高维向量。这些向量包括一组特征图,其数量等于向量的维数。
  • 非线性映射:该操作是每个高维向量到另一个高维向量的非线性映射。每个映射的矢量在概念上是高分辨率图像块的表示。
  • 重建:该操作聚合高分辨率补丁表示以生成最终的高分辨率图像。该图像应该与真实标记X相似。

在这里插入图片描述

Patch extraction and representation*

图像恢复中的流行策略(例如,[1])是密集地提取patch,然后通过一组预先训练的基础(例如PCA,DCT,Haar等)来表示它们。这相当于通过一组过滤器对图像进行卷积,每个过滤器都是基础。在我们的表述中,我们将这些基础的优化包括在网络的优化中。形式上,我们的第一层表示为操作F1:

F_{1}(Y)=max(0,W_{1}*Y+B_{1})

其中W1和B1分别代表滤波器和偏置。
W1的大小为c×f1×f1×n1,其中c是输入图像中的通道数,
f1是滤波器的空间大小,n1是滤波器的数量。
W1在图像上应用n1个卷积,并且每个卷积具有内核大小c×f1×f1。 输出由n1个特征映射组成。
B1是n1维向量,其每个元素与滤波器相关联。我们在滤波器响应上应用整流线性单元(ReLU,max(0; x))。

Non-linear mapping

第一层为每个patch提取n1维特征。在第二操作中,我们将这些n1维向量中的每一个映射为n2维向量。这相当于应用具有1×1的平凡空间支持的n2个滤波器。 第二层的操作是:

F_{2}(Y)=max(0,W_{2}*F_{1}(Y)+B_{2})

W2的大小为n1×1×1×n2,B2为n2维。
每个输出n2维向量在概念上是将用于重建的高分辨率图像块的表示。

可以添加更多卷积层(其空间支持为1×1)以增加非线性。 但这会显着增加模型的复杂性,因此需要更多的训练数据和时间。 在本文中,我们选择在此操作中使用单个卷积层,因为它已经提供了很高的质量。

Reconstruction

在传统方法中,经常对预测的重叠高分辨率图像块进行平均以产生最终的完整图像。 平均可以被视为一组特征图上的预定义滤波器(其中每个位置是高分辨率图像块的展平矢量形式)。 由此推动,我们定义卷积层以产生最终的高分辨率图像:

F(Y)=W_{3}*F_{2}(Y)+B_{3}

W3的大小为n2×f3×f3×c,B3是c维向量。

如果高分辨率图像块的表示位于图像域中(即,我们可以简单地重塑每个表示以形成图像块),我们期望滤波器就像平均滤波器一样; 如果高分辨率patch的表示在某些其他域中(例如,根据某些基础的系数),我们预期W3的行为类似于首先将系数投影到图像域上然后求平均。 无论哪种方式,W3都是一组线性滤波器。

尽管上述三种操作都是由不同的直觉驱动的,但它们都导致与卷积层相同的形式。 我们将所有三个操作放在一起并形成卷积神经网络)。

3.2 Relationship to Sparse-Coding-Based Methods**

在这里插入图片描述

这部分证明了基于稀疏编码的SR方法可以被视为卷积神经网络。

在基于稀疏编码的方法中,让我们考虑从输入图像中提取f1×f1低分辨率patch。 该patch按其均值减去,然后投影到(低分辨率)字典上。 如果字典大小为n1,这相当于在输入图像上应用n1个线性滤波器(f1×f1)。

然后将稀疏编码求解器应用于投影的n1系数。 该求解器的输出为n2个系数,在稀疏编码的情况下通常为n2 = n1。 这些n2系数是高分辨率patch的表示。 在这个意义上,稀疏编码求解器表现为非线性映射运算符。参见图的中间部分。然而,稀疏编码求解器不是前馈,即,它是迭代算法。 相反,我们的非线性算子是完全前馈的,可以有效地计算。 我们的非线性算子可以被认为是像素方式的完全连接层。

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

上面的讨论表明,基于稀疏编码的SR方法可以看作是一种卷积神经网络(具有不同的非线性映射)。 但并非所有操作都在基于稀疏编码的SR方法的优化中考虑过。 相反,在我们的卷积神经网络中,低分辨率字典,高分辨率字典,非线性映射,以及平均减法和平均,都涉及要优化的滤波器。 因此,我们的方法优化了包含所有操作的端到端映射。

上述类比也可以帮助我们设计超参数。 例如,可以将最后一层的滤波器大小设置为小于第一层的滤波器大小,因此我们更多地依赖于高分辨率patch的中心部分(如果f3 = 1,我们是使用没有平均的中心像素)。 我们也可以设置n2 <n1,因为它预计会更稀疏。 典型设置为f1 = 9,f3 = 5,n1 = 64,n2 = 32。

3.3 Loss Function

学习端到端映射函数F需要估计参数\Theta ={}{W_{1},W_{2},W_{3},B_{1},B_{2},B_{3}}
这是通过最小化重建图像F(Y;θ)和相应的地面实况高分辨率图像X之间的损失来实现的。给定一组高分辨率图像Xi及其对应的低分辨率图像Yi,我们使用Mean Squared Error(MSE)作为损失函数:
L({\Theta})=\frac{1}{n}\sum_{i=1}{n}||F(Y_{i};\Theta)-X_{i}||{2}

其中n是训练样本的数量。 使用标准反向传播的随机梯度下降使损失最小化[16]。
使用MSE作为损失函数有利于高PSNR。 PSNR是用于定量评估图像恢复质量的广泛使用的度量,并且至少部分地与感知质量相关。

4 Experiments

Datasets

为了与传统的基于示例的方法进行公平比较,我们使用与[20]中相同的训练集,测试集和协议。 具体而言,训练集由91个图像组成。 Set5 [2](5个图像)用于评估上采样因子2,3和4的性能,Set14(14个图像)用于评估上采样因子3。除了91图像训练集之外,我们还在第5.2节中研究了更大的训练集。

Comparisons

我们将SRCNN与最先进的SR方法进行比较:Yang等人的SC(稀疏编码)方法,基于K-SVD的方法[28],NE + LLE(邻域嵌入+局部) 线性嵌入)[4],NE + NNLS(邻域嵌入+非负最小二乘)[2],以及ANR(锚定邻域回归)方法[20]。 这些实现都来自作者提供的公开代码。 对于我们的实现,训练使用cuda-convnet包实现。

Implementation Details

根据3.2节,我们在主要评估中设置f1 = 9,f3 = 5,n1 = 64和n2 = 32。 我们将在第5节中评估替代设置。对于每个上采样因子2、3、 4,我们为该因子训练特定网络。

在训练阶段,真实图像{Xi}被准备为从训练图像中随机裁剪的32×32像素子图像。 这些样本被视为小图像而不是图像块,因为图像块是重叠的并且需要一些平均作为后处理但是子图像不需要。
为了合成低分辨率样本{Yi},我们通过适当的高斯核模糊子图像,通过上采样因子对其进行子采样,并通过双三次插值将其放大到相同的因子。91个训练图像提供大约24,800个子图像。 子图像是从原始图像中以14的步幅提取的。
我们尝试了更小的步幅但没有观察到显着的性能改进。 根据我们的观察,训练集足以训练拟议的深层网络。

在实验中只考虑亮度通道(在YCrCb颜色空间中),因此在第一层/最后一层中c = 1。 两个色度通道是双三次上采样的,仅用于显示,但不用于训练/测试。 注意,我们的方法可以扩展到通过设置c = 3直接训练彩色图像。我们在本文中使用c = 1主要是为了与以前的方法进行公平比较,因为它们中的大多数仅涉及亮度通道。

为了避免训练期间的边界效应,所有卷积层都没有填充,网络产生较小的输出(20×20)。MSE损失函数仅通过{Xi}的中心20×20裁剪与网络输出之间的差异来评估。 在处理测试图像时,卷积神经网络可以应用于任意大小的图像。在测试期间,所有卷积层都被赋予足够的零填充,因此输出图像与输入的大小相同。 为了解决边界效应,在每个卷积层中,每个像素的输出(在ReLU之前)由有效输入像素的数量归一化,这可以预先计算。

通过从具有零均值和标准偏差0.001(和偏差为0)的高斯分布中随机绘制来初始化每个层的滤波器权重。 前两层的学习率为10-4,最后一层的学习率为10-5。 我们凭经验发现,最后一层中较小的学习速率对于网络收敛很重要(类似于去噪情况)。

在这里插入图片描述

4.1 Quantitative Evaluation

如表1和2所示,所提出的SRCNN在所有实验中产生最高的平均PSNR。 请注意,我们的SRCNN结果基于8×108反向传播的检查点。具体来说,如表1(Set5)所示,SRCNN实现的平均增益分别为0.51 dB,0.47 dB和0.40 dB,高于下一个最佳方法ANR [20],对所有三个放大因子均有影响。我们注意到由于测试样本的数量有限,Set5可能不是最终的测试集,但结果表明所提出的模型可以很好地处理不同的放大因子。 在较大的Set14数据集上,我们的SRCNN始终优于其他方法(平均≥0.3dB)。 当我们使用SSIM [22,21]作为性能指标时,观察到类似的趋势,其结果可在补充文件中找到。值得指出的是,SRCNN在学习阶段的最初阶段超过了双三次基线(见图1),并且在适度训练的情况下,SRCNN优于现有的最先进方法(见图6)。 然而,表现远非趋同。 我们推测,如果训练时间更长,可以获得更好的结果(见图6)。 在5.2节中,我们将展示我们的方法也受益于更多的训练数据。

图7,8和9示出了通过放大因子3的不同方法的超分辨率结果。可以观察到,SRCNN产生比其他方法更锐利的边缘,而没有任何明显的图像伪影。尽管具有最佳的平均PSNR值,但是所提出的SRCNN在图像"婴儿"和"头部"来自Set5时没有达到最高的PSNR。 尽管如此,我们的结果仍然具有视觉吸引力(见图10)。

4.2 Running time

图4显示了几种最先进方法的运行时间比较,以及它们的恢复性能。 所有基线方法都是从相应作者的MATLAB实现中获得的,而我们的是在C ++中。 我们使用同一台机器(Intel CPU 3.10 GHz和16 GB内存)分析所有算法的运行时间。 我们的方法在Set14中平均每个图像需要0.39秒(表2),而其他方法则慢几倍甚至几个数量级。注意速度差距主要不是由不同的MATLAB / C ++实现引起的; 相反,其他方法需要解决使用上的复杂优化问题(例如,稀疏编码或嵌入),而我们的方法是完全前馈的。 我们还注意到,我们的方法的处理时间与测试图像分辨率高度线性,因为所有图像都经历相同数量的卷积。

在这里插入图片描述

5 Further Analyses

5.1 Learned Filters for Super-resolution

图5显示了通过上采样因子2在91个图像(24,800个子图像)上训练的学习的第一层滤波器的示例。请参考我们公布的关于上采样因子3和4的模式的实现。有趣的是,每个学习的滤波器具有其特定的功能。 例如,滤波器a和f类似于拉普拉斯高斯滤波器,滤波器b,c和d类似于不同方向上的边缘检测器,并且滤波器e类似于纹理提取器。 我们观察到一些死滤波器,它们的权重几乎都是零,类似于[27]中观察到的那些。 然而,在训练时间足够长的情况下,某些死滤波器中可能会出现模式。 我们将在未来的工作中调查这一现象。

5.2 Learning Super-resolution from ImageNet

如文献所示,深度学习通常受益于大数据训练。 在上述实验中,我们使用由91个图像组成的标准训练集,以确保与现有方法的公平比较。 在本节中,我们展示了我们的深层模型可以在大型训练集的情况下获得更好的性能。 我们使用来自ILSVRC 2013 ImageNet检测训练分区的总共395,909张图像进行SRCNN学习。 使用33的步幅将这些图像分解成超过500万个子图像。我们使用与上述实验相同的网络设置,即f1 = 9,f3 = 5,n1 = 64和n2 = 32。ImageNet上的训练时间与91张图像上的训练时间大致相同,因为反向传播的数量是相同的。 在Set5上使用升级因子3测试实验。在ImageNet上训练的测试收敛曲线和其他方法的结果如图6所示。可以观察到,具有相同数量的反向传播(即,8×10^8), SRCNN + ImageNet达到32.52 dB,高于在91幅图像(或24,800个子图像)上训练的原始SRCNN产生的32.39 dB。 结果肯定地表明,使用更大和更多样化的图像训练集可以进一步提高SRCNN性能。

在这里插入图片描述

5.3 Filter Number

与其他CNN结构[14]相比,我们使用相对较小的网络规模来实现超分辨率的最先进性能。 一般而言,如果我们扩大网络规模,性能仍会提高,例如: 以运行时为代价添加更多图层和过滤器。 在这里,我们评估使用不同数量的过滤器的性能。 具体来说,基于我们的网络默认设置为n1 = 64且n2 = 32,我们进行了两个额外的实验:(i)一个是更大的网络,n1 = 128,n2 = 64,(ii)另一个网络更小,n1 = 32 并且n2 = 16。与5.2节类似,我们还在ImageNet上训练两个模型,并在Set5上使用上采样因子3进行测试。结果如表3所示。很明显,使用更多滤波器可以实现卓越的性能。 然而,如果需要快速恢复速度,则优选小的网络规模,其仍然可以实现比现有技术更好的性能。

在这里插入图片描述

5.4 Filter Size

在本节中,我们将检查网络对不同过滤器大小的敏感度。 在之前的实验中,我们将第一层的滤波器大小设置为f1 = 9,将最后一层的滤波器大小设置为f3 = 5.这里,我们将滤波器大小放大到f1 = 11和f3 = 7.所有其他设置保持不变 第5.2节。 Set5的上采样因子3的结果为32.57 dB,略高于5.2节中报告的32.52 dB。这表明相当大的过滤器尺寸可以抓住更丰富的结构信息,从而产生更好的结果。 然而,使用更大的过滤器大小,部署速度也会降低。 因此,网络规模的选择应始终是性能和速度之间的权衡。

在这里插入图片描述

6 Conclusion

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值