(SRCNN)Learning a Deep Convolutional Network for Image Super-Resolution

图像超分辨率深度卷积网络学习

摘要

提出了一种用于单幅图像超分辨率的深度学习方法:直接学习低/高分辨率图像之间的端到端映射。该映射表示为一个深度卷积神经网络,以低分辨率图像作为输入输出高分辨率图像。

进一步证明了传统的基于稀疏编码的SR方法也可以被视为一个深度卷积网络。

介绍

目前的单幅图像超分辨率方法大多是基于实例的,外部的基于实例的方法通常具有丰富的样本,但却面临着数据有效、紧凑建模的困难。

以前的SR方法特别关注字典的学习和优化或对字典进行建模的替代方法。然而,管道中的其余步骤很少得到优化,或在统一的优化框架中进行考虑。

我们的方法从根本上不同于现有的外部基于实例的方法,因为我们没有显式地学习字典或流形来建模补丁空间。这些都是通过隐藏层实现的。此外,patch的提取和聚集也被表述为卷积层,因此涉及到优化。在我们的方法中,整个SR管道是完全通过学习获得的,很少进行预处理和后处理。

所提出的SRCNN有几个吸引人的特性

(1)它的结构设计得很简单,但与最先进的基于实例的方法相比,它提供了更高的准确性。

(2)通过适当数量的过滤器和层,我们的方法实现了快速的实际在线使用,即使在CPU上。比一系列基于实例的方法更快,因为它是完全前馈的,在使用上不需要解决任何优化问题。

(3)实验表明,当有更大的数据集和/或使用更大的模型时,网络的恢复质量可以进一步提高。相反,更大的数据集/模型会给现有的基于实例的方法带来挑战。

主要贡献

(1)提出了一种用于图像超分辨率的卷积神经网络。该网络直接学习低分辨率和高分辨率图像之间的端到端映射,除了优化之外几乎没有预处理/后处理。

(2)建立了基于深度学习的识别方法与传统的基于稀疏编码的识别方法之间的关系。这种关系为网络结构的设计提供了指导。

(3)证明了深度学习在经典的超分辨率计算机视觉问题中是有用的,并且可以获得良好的质量和速度。

相关工作

图像超分辨率

在Freeman等的开创性工作中,字典直接表示为低/高分辨率patch对。在低分辨率空间中找到输入patch的最近邻(NN),并将其对应的高分辨率patch用于重建。

Chang等人引入流形嵌入技术作为替代NN策略。

在Yang等人的工作中,上述NN对应提出了一种更复杂的稀疏编码公式。这种基于稀疏编码的方法及其若干改进是目前最先进的SR方法之一。在这些方法中,补丁是优化的重点;patch的提取和聚集步骤被认为是前/后处理,并单独处理。

卷积神经网络

ReLU使收敛速度更快,同时仍然呈现良好的质量

图像恢复的深度学习

用于超分辨率的卷积神经网络

规划

一张低分辨率的图像。首先使用双三次插值将其提升到所需的大小,这是我们执行的唯一预处理。插值后的图像表示为Y。目标是根据Y得出图像F(Y),它是尽可能的接近真实的高分辨率图像X,我们仍然叫Y“低分辨率”的形象,即使它和X有相同的大小,我们希望学习一个映射F,包含三个操作:

  1. patch提取与表示
  2. 非线性映射
  3. 重建

patch提取与表示

用一组预先训练好的基(如PCA,DCT,Haar等)来表示密集提取的patches。这相当于用一组滤波器对图像进行卷积,每个滤波器都是一组基,我们将这些基的优化纳入到了网络优化中。

形式上,第一层被表示为一个操作F1:

F1(Y) = max(0, W1 * Y + B1)

W1和B1分别表示滤波器和偏差。W1的大小是c×f1×f1×n1,其中c是输入图像中通道的数量,f1是一个滤波器的空间大小,n1是滤波器的数量。

直观地说,W1对图像应用了n1个卷积操作,每个卷积的内核大小为c×f1×f1。输出由n1个特征图组成。B1是一个n1维向量,它的每个元素都与一个过滤器相关联。我们将整流线性单元(ReLU, max(0, x))应用于滤波器响应。

非线性映射

每个映射矢量在概念上是一个高分辨率斑块的表示。

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

F2(Y) = max(0, W2 * F1(Y) + B2)

W2的大小是n1×1×1×n2,而B2是n2维的。

每个输出的二维向量在概念上是用于重建的高分辨率补丁的表示

重建

在传统的方法中,通常将预测的重叠高分辨率斑块平均生成最终的完整图像。平均可以被认为是一组特征图上的一个预先定义的过滤器(其中每个位置都是高分辨率斑块的“扁平”矢量形式)。基于此,我们定义了一个卷积层来产生最终的高分辨率图像:

F(Y) = W3 * F2(Y) + B3

W3的大小是n2xf3xf3xc,而B3是一个c维向量。

如果高分辨率patches的表示是在图像域(即,我们可以简单地重塑每个表示来形成patch),我们期望滤波器像一个平均滤波器;如果高分辨率补丁的表示在一些其他的域中(例如,一些基的系数),我们认为W3的行为类似于先将系数投影到图像域,然后进行平均。不管怎样,W3都是一组线性滤波器。

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

在基于稀疏编码的方法中,我们考虑从输入图像中提取一个f1× f1的低分辨率patch。这个补丁被它的平均值减去,然后被投影到一个(低分辨率)字典上。如果字典大小为n1,这相当于在输入图像上应用n1个线性滤波器(f1× f1)(均值减法也是一个线性操作,因此可以被吸收)。

稀疏编码求解器将应用于投影的n1系数(例如,参见特征符号求解器[17])。该求解器的输出为n2个系数,在稀疏编码的情况下通常为n2= n1。这些n2系数代表了高分辨率patch。在这个意义上,稀疏编码求解器表现为一个非线性映射算子。参见图3的中间部分。然而,稀疏编码求解器不是前馈的,即是一种迭代算法。相反,我们的非线性算子是完全前馈的,可以高效地计算。我们的非线性算子可以看作是一个像素级的全连接层。

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

以上讨论表明,基于稀疏编码的SR方法可以看作是一种卷积神经网络(具有不同的非线性映射)。但在基于稀疏编码的SR方法的优化中,并没有考虑到所有的操作。相反,在我们的卷积神经网络中,低分辨率字典、高分辨率字典、非线性映射以及均值减法和平均法都涉及到待优化的滤波器。因此,我们的方法优化了包含所有操作的端到端映射。上述类比也可以帮助我们设计超参数。例如,我们可以设置过滤器最后一层的大小小于第一层,因此我们更加依赖中央部分的高分辨率补丁(极端,如果f3 = 1,我们使用该中心像素没有平均)。我们也可以设置n2< n1,因为它会更稀疏。一个典型的设置是f1= 9, f3= 5, n1= 64, n2= 32(我们在实验部分评估更多的设置)。

损失函数

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

n为训练样本的个数。

采用标准反向传播的随机梯度下降法使损耗最小化。使用MSE作为损耗函数有利于提高PSNR。

PSNR是一种广泛用于定量评价图像恢复质量的度量指标。

值得注意的是,卷积神经网络并不排除使用其他类型的损失函数,只要损失函数是可导出的。如果在训练过程中给出了一个更好的感知动机度量,那么网络就可以灵活地适应这个度量。我们以后会研究这个问题。相反,这种灵活性通常很难实现传统的“手工制作”方法。

实验

实现细节。设f1= 9, f3= 5, n1= 64, n2= 32。

对于每个提升因子∈{2,3,4},我们针对该因子训练一个特定的网络。在训练阶段,ground truth images {Xi}从训练图像中随机裁剪成32×32像素子图像。所谓“子图像”,我们指的是这些样本被当作小的“图像”而不是“补丁”,也就是说,“补丁”是重叠的,需要一些平均值作为后处理,但“子图像”不需要。

为了合成低分辨率的样本{Yi},

(1)我们通过适当的高斯核对子图像进行模糊处理

(2)再通过缩放因子对其进行下采样

(3)然后通过双三次插值对同一因子进行上采样。

91张训练图像提供了大约24800子图像。子图像从原始图像中提取,步长为14。

我们尝试了更小的步长,但没有观察到显著的性能改进。根据我们的观察,训练集足以训练所提出的深度网络。在GTX 770 GPU上,训练(8 × 10^8backpropagation)大约需要3天。

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

为了避免训练过程中的边界效应,所有的卷积层都没有填充,网络产生较小的输出(20 × 20)。MSE损失函数仅由Xi的中心20 × 20crop与网络输出之间的差值来评估。在处理测试图像时,卷积神经网络可以应用于任意大小的图像。在测试过程中,所有卷积层都被给予足够的零填充,从而使输出图像与输入图像具有相同的大小。

为了解决边界效应,在每个卷积层中,每个像素处的输出(ReLU之前)被归一化为可以预先计算的有效输入像素的数量。

每一层的滤波器权值通过随机抽取一个均值为零、标准差为0.001(偏差为0)的高斯分布来初始化。前两层的学习速率为1e−4,后一层为1e−5。我们的经验发现,较小的学习率在最后一层是重要的收敛(类似于去噪的情况[12])。

定量评价

如表1、表2,我们提出的SRCNN在所有实验中获得了最高的平均PSNR

图5展示了通过升级因子2对91幅图像(24800个子图像)进行训练的学习的第一层滤波器的示例。请参考我们发布的实现来了解升级因子3和4的模式。有趣的是,每个学习过的过滤器都有其特定的功能。例如,滤波器a和f就像拉普拉斯/高斯滤波器,滤波器b、c和d就像不同方向的边缘检测器,滤波器e就像纹理提取器。我们观察到一些“死的”过滤器,它们的权值都接近于零,类似于[27]中观察到的那些。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值