当前位置:   article > 正文

【图像超分】论文精读:Image Super-Resolution Using Deep Convolutional Networks(SRCNN)_介绍image super-resolution的论文或者文献

介绍image super-resolution的论文或者文献

第一次来请先看这篇文章:【超分辨率(Super-Resolution)】关于【超分辨率重建】专栏的相关说明,包含专栏简介、专栏亮点、适配人群、相关说明、阅读顺序、超分理解、实现流程、研究方向、论文代码数据集汇总等)


前言

论文题目:Image Super-Resolution Using Deep Convolutional Networks —— 基于深度卷积网络的图像超分辨率

论文地址:Image Super-Resolution Using Deep Convolutional Networks

论文复现:【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流程详解,注释详细,简单修改就可以训练你自己的图像数据,有训练好的模型下载地址,随取随用

pytorch复现代码:图像超分辨率SRCNN和FSRCNN复现代码,除基本的网络实现外,还有特征图可视化,PSNR曲线图可视化,测试自己的图像数据等

基于深度学习的图像超分算法开山之作——SRCNN

Abstract

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

摘要总览:输入低分辨率图像,输出高分辨率图像。中间的映射是CNN,那我们的重点就关注CNN模型,以及对应的组件功能。即SR的原理。

1 INTRODUCTION

单幅图像超分辨率(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有几个吸引人的特性。首先,它的结构是有意设计的,与最先进的基于实例的方法相比,它提供了更高的准确性。图 1 显示了示例的比较。其次,模型有适当的过滤器和层数,我们的方法在实际的在线使用上实现了快速的速度,即使在 CPU 上也是如此。我们的方法比许多基于实例的方法更快,因为它是完全前馈的,不需要解决任何使用的优化问题。第三,实验表明,当 (i) 更大、更多样化的数据集可用时,网络的恢复质量可以进一步提高,并且/或 (ii) 使用更大更深的模型。相反,更大的数据集/模型可能会给现有的基于示例的方法带来挑战。此外,所提出的网络可以同时处理三个通道彩色图像,以实现改进的超分辨率性能。在这里插入图片描述
总体而言,本研究的贡献主要体现在三个方面:

  1. 提出了一种用于图像超分辨率的全卷积神经网络。该网络直接学习低分辨率图像和高分辨率图像之间的端到端映射,除了优化之外几乎没有预处理/后处理。
  2. 我们建立了基于深度学习的SR方法与传统的基于稀疏编码的SR方法之间的关系。这种关系为网络结构的设计提供了指导。
  3. 我们证明了深度学习在超分辨率的经典计算机视觉问题中是有用的,可以达到良好的质量和速度。

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

介绍创新点:1. SRCNN的网络模型; 2.构建基于学习的SR和传统的基于稀疏编码的SR方法的联系;3.CNN在图像超分领域的可行性

其他信息:可以同时处理三个通道(YCbCr或RGB颜色空间)—— 说明做实验写代码时候的图像预处理和最后用训练好的模型预测时需要注意图像流的转换,不同的阶段需要不同的图像格式。图像超分的数据集有Set5、Set14、BSD200。

2 RELATED WORK

2.1 Image Super-Resolution

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

基于内部示例的方法利用自相似性属性并从输入图像中生成示例补丁。它首先在Glasner的工作[16]中提出,并提出了几个改进的变体[13],[45]来加速实现。基于外部示例的方法[2]、[4]、[6]、[15]、[37]、[41]、[48]、[49]、[50]、[51]从外部数据集中学习低分辨率/高分辨率补丁之间的映射。这些研究的不同之处在于如何学习一个紧凑的字典或流形空间来关联低/高分辨率补丁,以及如何在这样的空间中进行表示方案。在Freeman等人[14]的开创性工作中,字典直接表示为低分辨率/高分辨率补丁对,输入补丁的最近邻居(NN)在低分辨率空间中找到,其对应的高分辨率补丁用于重建。Chang等人[4]引入了一种流形嵌入技术作为NN策略的替代方案。在Yang等人的工作[49],[50]中,上述NN对应促进了更复杂的稀疏编码公式。提出了核回归[25]、简单3函数[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 性能,以及恢复所有三个通道的必要性。

图像超分的相关工作:介绍了一些传统方法以及它们的缺点。主要说明SR算法以前都是处理单通道图像(灰度图)或者其他在彩色图像上的尝试,现在本文方法可以处理不同的颜色空间(YCbCr或YUV),只对亮度通道应用SR。

2.2 Convolutional Neural Networks

卷积神经网络 (CNN) 可以追溯到几十年 [27],深度 CNN 最近因其在图像分类 [18]、[26] 方面的成功而显示出爆炸性的流行。他们还已成功应用于其他计算机视觉领域,如目标检测[34]、[40]、[52]、人脸识别[39]和行人检测[35]。在这一进展中,有几个因素是核心重要性:(i)现代强大gpu[26]上的高效训练实现,(ii)整流线性单元(ReLU)[33]的提议,它使收敛更快,同时仍然显示出良好的质量[26],以及(iii)轻松访问大量数据(如ImageNet[9])来训练更大的模型。我们的方法还受益于这些进展。

2.3 Deep Learning for Image Restoration

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

3 CONVOLUTIONAL NEURAL NETWORKS FORSUPER-RESOLUTION

3.1 Formulation

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

  1. 补丁提取和表示:该操作从低分辨率图像Y中提取(重叠)补丁,并将每个补丁表示为一个高维向量。这些向量包含一组特征图,其中数字等于向量的维数。
  2. 非线性映射:该操作将每个高维向量非线性映射到另一个高维向量上。每个映射向量在概念上都是高分辨率补丁的表示。这些向量包含另一组特征图。
  3. 重建:该操作聚合上述高分辨率patch-wise表示,生成最终的高分辨率图像。预计此图像类似于 ground truth X。

我们将证明所有这些操作都形成了一个卷积神经网络。网络的概述如图2所示。接下来,我们将详细介绍我们对每个操作的定义。在这里插入图片描述

SRCNN总览:1.预处理——双三次插值;如图2所示,2.低分率图像提取特征(SRCNN的第一层);3. 将2的低分辨率特征非线性映射到高分辨率图像特征(SRCNN的第二层);4. 特征重构(SRCNN第三层),整合3的所有特征,最终生成高分辨率图像。注意:这里所说的层是大层,每一个层中有单独的层,下面我们具体来看看每步是如何实现的。

3.1.1 Patch extraction and representation

图像恢复中一种流行的策略(如[1])是密集提取补丁,然后通过一组预先训练的碱基(如PCA、DCT、Haar等)来表示它们。这相当于将图像由一组过滤器进行卷积,每个过滤器都是一个基础。在我们的公式中,我们将这些碱基的优化涉及网络的优化。形式上,我们的第一个层表示为操作 F1:
F 1 ( Y ) = max ⁡ ( 0 , W 1 ∗ Y + B 1 ) , (1) F_{1}(\mathbf{Y})=\max \left(0, W_{1} * \mathbf{Y}+B_{1}\right),\tag{1} F1(Y)=max(0,W1Y+B1),(1)
其中 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 Non-linear mapping

第一层为每个补丁提取 n1 维特征。在第二个操作中,我们将这些 n1 维向量中的每一个映射到一个 n2 维向量。这相当于应用具有平凡空间支持1 × 1的n2滤波器。这种解释只适用于1 × 1滤波器。但是很容易推广到更大的滤波器,如3 × 3或5 × 5。在这种情况下,非线性映射不在输入图像的补丁上;相反,它是特征图的3 × 3或5 × 5“补丁”。第二层的操作是:
F 2 ( Y ) = max ⁡ ( 0 , W 2 ∗ F 1 ( Y ) + B 2 ) . (2) F_{2}(\mathbf{Y})=\max \left(0, W_{2} * F_{1}(\mathbf{Y})+B_{2}\right) .\tag{2} F2(Y)=max(0,W2F1(Y)+B2).(2)
这里 W2 包含大小为 n1 × f2 × f2 的 n2 个滤波器,B2 是 n2 维。每个输出 n2 维向量在概念上都是一个高分辨率补丁的表示,用于重建。可以添加更多的卷积层来增加非线性。但是这可能会增加模型的复杂性(一层 n2 × f2 × f2 × n2 参数),因此需要更多的训练时间。我们将在第 4.3.3 节中介绍额外的非线性映射层来探索更深层次的结构。

非线性映射:特征映射是3 × 3或5 × 5。具体看4.3.3节。

3.1.3 Reconstruction

在传统方法中,通常对预测的重叠高分辨率补丁进行平均以产生最终的完整图像。平均可以被认为是一组特征图上的预定义过滤器(其中每个位置是高分辨率补丁的“扁平化”向量形式)。受此启发,我们定义了一个卷积层来产生最终的高分辨率图像:
F ( Y ) = W 3 ∗ F 2 ( Y ) + B 3 (3) F(\mathbf{Y})=W_{3} * F_{2}(\mathbf{Y})+B_{3}\tag{3} F(Y)=W3F2(Y)+B3(3)
这里 W3 对应于大小为 n2 × f3 × f3 的 c 个滤波器,B3 是一个 c 维向量。如果高分辨率补丁的表示在图像域中(即,我们可以简单地重塑每个表示以形成补丁),我们预计过滤器就像平均过滤器一样。

如果高分辨率补丁的表示在其他一些域中(例如,在某些基础方面的系数),我们预计 W3 的行为就像首先将系数投影到图像域然后平均。这样,W3 是一组线性滤波器。

有趣的是,尽管上述三个操作的动机是不同的直觉,但它们都导致了与卷积层相同的形式。我们将所有三个操作放在一起并形成卷积神经网络(图 2)。在这个模型中,所有过滤权重和偏差都将被优化。尽管整体结构的简洁性,但我们的SRCNN模型是通过绘制超分辨率[49]、[50]的重大进展而产生的大量经验来精心开发的。我们将在下一节中详细介绍关系。

3.2 Relationship to Sparse-Coding-Based Methods

我们表明,基于稀疏编码的 SR 方法 [49]、[50] 可以被视为卷积神经网络。图 3 显示了说明。

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

然后稀疏编码求解器将迭代地处理 n1 系数。该求解器的输出是 n2 个系数,在稀疏编码的情况下通常为 n2 = n1。这些 n2 系数是高分辨率补丁的表示。从这个意义上说,稀疏编码求解器表现为非线性映射算子的特例,其空间支持度为1 × 1。见图3的中间部分。然而,稀疏编码求解器不是前馈的,即它是一种迭代算法。相反,我们的非线性算子是完全前馈的,可以有效地计算。如果我们设置 f2 = 1,那么我们的非线性算子可以被认为是一个像素级的全连接层。值得注意的是,SRCNN 中的“稀疏编码求解器”指的是前两层,而不仅仅是第二层或激活函数 (ReLU)。因此,SRCNN 中的非线性操作也通过学习过程得到了很好的优化。

然后将上述 n2 个系数(稀疏编码后)投影到另一个(高分辨率)字典以产生高分辨率补丁。然后对重叠的高分辨率补丁进行平均。如上所述,这相当于对 then2 个特征图进行线性卷积。如果用于重建的高分辨率斑块的大小为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 = 169像素的信息。显然,用于重建的信息比现有基于外部示例的方法中使用的信息要大得多,例如,使用 (5+5−1)^ 2 = 81 像素 5 [15]、[50]。这是 SRCNN 提供卓越性能的原因之一。在这里插入图片描述
本节论述了基于学习的方法和传统基于稀疏编码的方法之间的关系。这是2014年的文章,深度学习发展到现在,显然我们知道,基于稀疏编码的 SR 方法可以看作是一种卷积神经网络(具有不同的非线性映射),或者说卷积神经网络整合了传统方法的主要操作,只是某些操作有区别。PS:传统的插值原理就是卷积,也会有卷积核。如果图像处理接触的多,可能会深有体会。举个例子:高斯噪声的滤波器基本等同于卷积操作中的卷积核。

此处还给出了比较不错的超参数, f1 = 9, f2 = 1, f3 = 5,n1 = 64 和 n2 = 32。这里我们就可以回答3.1.1节中的问题,即第一步特征提取的卷积核是9×9。同样的,第二层和第三层分别是1×1和5×5。卷积核的数量分别是64和32。网络结构基本上可以搭出来了,知道参数的含义后也可以反过去理解前面的公式原理。

3.3 Training

学习端到端映射函数F需要估计网络参数Θ ={W1, W2, W3, B1, B2, B3}。这是通过最小化重建图像 F (Y; Θ) 和相应的地面实况高分辨率图像 X 之间的损失来实现的。给定一组高分辨率图像 {Xi} 及其对应的低分辨率图像 {Yi},我们使用均方误差 (MSE) 作为损失函数:
L ( Θ ) = 1 n ∑ i = 1 n ∥ F ( Y i ; Θ ) − X i ∥ 2 (4) L(\Theta)=\frac{1}{n} \sum_{i=1}^{n}\left\|F\left(\mathbf{Y}_{i} ; \Theta\right)-\mathbf{X}_{i}\right\|^{2}\tag{4} L(Θ)=n1i=1nF(Yi;Θ)Xi2(4)

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

使用标准反向传播的随机梯度下降来最小化损失[28]。特别是,权重矩阵更新为
Δ i + 1 = 0.9 ⋅ Δ i − η ⋅ ∂ L ∂ W i ℓ , W i + 1 ℓ = W i ℓ + Δ i + 1 (5) \Delta_{i+1}=0.9 \cdot \Delta_{i}-\eta \cdot \frac{\partial L}{\partial W_{i}^{\ell}}, \quad W_{i+1}^{\ell}=W_{i}^{\ell}+\Delta_{i+1}\tag{5} Δi+1=0.9ΔiηWiL,Wi+1=Wi+Δi+1(5)
其中 l ∈ {1, 2, 3} 和 i 是层和迭代的索引,η 是学习率,∂L ∂W ` i 是导数。每一层的滤波器权重是通过从均值为零、标准差为 0.001(偏差为 0)的高斯分布中随机抽取来初始化的。前两层学习率为10−4,最后一层学习率为10−5。我们凭经验发现,最后一层的较小学习率对于网络收敛很重要(类似于去噪情况 [22])。

在训练阶段,将地面真实图像 {Xi} 准备为从训练图像随机裁剪的 fsub ×fsub ×c 像素子图像。通过“子图像”,我们的意思是这些样本被视为小的“图像”而不是“补丁”,因为“补丁”重叠并且需要一些平均作为后处理,但“子图像”不需要。为了合成低分辨率样本{Yi},我们通过高斯核模糊子图像,通过放大因子对其进行子采样,并通过双三次插值将其放大相同的因子。

为了避免训练期间的边界效应,所有卷积层都没有填充,网络产生更小的输出((fsub - f1−f2−f3 + 3)2 × c)。MSE损失函数仅通过Xi的中心像素与网络输出之间的差异来评估。虽然我们在训练期间使用固定的图像大小,但卷积神经网络可以在测试期间应用于任意大小的图像。

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

本节介绍了训练的一些细节:损失函数维MSE,前两层学习率为10^ −4,最后一层学习率为10 ^−5(最后一层学习率小更有利于收敛)。卷积层都无padding,MSE仅通过中心像素的输入输出评估。

4 EXPERIMENTS

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

4.1 Training Data

如文献中所示,深度学习通常受益于大数据训练。为了比较,我们使用了一个相对较小的训练集[41],[50],它由91张图像组成,以及一个由ILSVRC 2013 ImageNet检测训练分区的395,909张图像组成的大型训练集。训练子图像的大小为fsub = 33。因此,91个图像数据集可以分解为24,800个子图像,这些图像是从原始图像中提取的,步幅为14。虽然ImageNet提供了超过500万个子图像,即使使用33的步幅。我们使用基本的网络设置,即f1 = 9,f2 = 1, f3 = 5, n1 = 64和n2 = 32。我们使用Set5[2]作为验证集。即使我们使用更大的 Set14 集 [51],我们观察到类似的趋势。放大系数为3。我们使用基于稀疏编码的方法[50]作为我们的基线,其平均PSNR值为31.42 dB。
在这里插入图片描述
使用不同训练集的测试收敛曲线如图4所示。ImageNet上的训练时间与91个图像数据集上的训练时间大致相同,因为反向传播的数量相同。可以看出,在相同的反向传播次数(即8 × 10^8)下,SRCNN+ImageNet实现了32.52 dB,高于91张图像上训练的32.39 dB。结果表明,使用更大的训练集可以进一步提高SRCNN的性能,但大数据的影响并不像高级视觉问题[26]所示那样令人印象深刻。这主要是因为 91 张图像已经捕获了自然图像的充分可变性。另一方面,我们的 SRCNN 是一个相对较小的网络(8,032 个参数),不能过度拟合 91 张图像(24,800 个样本)。然而,我们采用包含更多样化数据的 ImageNet 作为以下实验中的默认训练集。

数据集:91 images(小),ILSVRC 2013 ImageNet(大)。Set5作为验证集,Set14类似。Image Super-Resolution Via Sparse Representation作为baseline。

4.2 Learned Filters for Super-Resolution

图 5 显示了通过放大因子 3 在 ImageNet 上训练的学习第一层过滤器的示例。请参阅我们发布的放大因子 2 和 4 实现。有趣的是,每个学习的过滤器都有其特定的功能。例如,滤波器 g 和 h 就像拉普拉斯/高斯滤波器一样,滤波器 a - e就像不同方向的边缘检测器,滤波器 f 就像纹理提取器一样。不同层的示例特征图如图 6 所示。显然,第一层的特征图包含不同的结构(例如,不同方向的边缘),第二层的特征图在强度上主要不同。在这里插入图片描述
在这里插入图片描述

图5展示了在放大倍数为3的条件下,数据经过第一层卷积后的特点。图6展示了经过不同层后的特征图。

4.3 Model and Performance Trade-offs

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

4.3.1 Filter number

一般来说,如果我们以运行时间为代价增加网络宽度 ,即添加更多过滤器,性能将会提高。具体来说,基于我们n1 = 64和n2 = 32的网络默认设置,我们进行了两个实验:(i)一个网络更大,n1 = 128, n2 = 64, (ii)另一个网络是一个更小的网络,n1 = 32, n2 = 16。与第4.1节类似,我们还在ImageNet上训练两个模型,并在Set5上进行测试,放大因子为3。在8 × 108反向传播下观察到的结果如表1所示。很明显,通过增加宽度可以实现优越的性能。然而,如果需要快速恢复速度,则首选较小的网络宽度,这仍然可以比基于稀疏编码的方法(31.42 dB)获得更好的性能。
在这里插入图片描述
修改卷积核的数量后做了测试,更大的网络能得到更好的性能,但是速度会慢。

4.3.2 Filter size

在本节中,我们检查网络对不同滤波器大小的敏感性。在之前的实验中,我们设置滤波器大小 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。这表明较大的滤波器尺寸可以掌握更丰富的结构信息,进而产生更好的结果。

卷积核大小由9,1,5改成11,1,7后,稍微提高性能。

然后我们进一步检查第二层过滤器大小较大的网络。具体来说,我们将滤波器大小 f1 = 9, f3 = 5 固定,并将第二层的滤波器大小扩大到 (i) f2 = 3 (9-3-5) 和 (ii) f2 = 5 (9-5-5)。图 7 中的收敛曲线表明,使用更大的滤波器大小可以显着提高性能。具体来说,8 × 108反向传播的Set5上9-3-5和9-5-5的平均PSNR值分别为32.66 dB和32.75 dB。结果表明,在映射阶段利用邻域信息是有益的。在这里插入图片描述
然而,随着滤波器尺寸的增大,部署速度也会减小。例如,9-1-5、9-3-5 和 95-5 的参数个数分别为 8,032、24,416 和 57,184。9-5-5 的复杂度几乎是 9-3-5 的两倍,但性能改进是微不足道的。因此,网络规模的选择应该始终是性能和速度之间的权衡。

卷积核大小固定1和3层,改变第2层,由9,1,5改为9,3,5和9,5,5。如图7所示,映射阶段卷积核的大小越小越好。但牺牲的速度比提升的性能更严重,所以还是9,1,5更能平衡性能和速度。

4.3.3 Number of layers

He 和 Sun [17] 最近的研究表明,CNN 可以从适度增加网络深度中受益。在这里,我们通过添加另一个非线性映射层来尝试更深层次的结构,该层具有大小为 f22 = 1 的 n22 = 16 个过滤器。我们进行了三个对照实验,即 9-1-5、9-3-1-5、9-5-1-5,分别在 9-1-5、9-3-5 和 9-5-5 上添加一个额外的层。附加层的初始化方案和学习率与第二层相同。从图 13(a)、13(b) 和 8© 中,我们可以观察到四层网络的收敛速度比三层网络慢。然而,给定足够的训练时间,更深的网络最终会赶上并收敛到三层网络。

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

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

研究网络深度对性能影响:在第二层和第三层之间加一个卷积核数量为16,大小为1的层。网络越深,收敛越慢,时间够就能收追赶上原来的三层结构。但是,效果并没有多好。所以,网络模型的层数并不是越多越好,可能与超分的学习难度有关,甚至都不能保证收敛。

4.4 Comparisons to State-of-the-Arts

在本节中,我们展示了与最先进的方法相比,我们方法的定量和定性结果。我们采用具有良好性能速度权衡的模型:在 ImageNet 上训练的 f1 = 9、f2 = 5、f3 = 5、n1 = 64 和 n2 = 32 的三层网络。对于每个缩放因子 ∈ {2, 3, 4},我们为该因子训练一个特定的网络。

比较。我们将我们的SRCNN与最先进的SR方法进行了比较:
•SC -基于稀疏编码的Yang等人[50]
•NE+LLE -邻居嵌入+局部线性嵌入方法[4]
•ANR -锚定邻域回归方法[41]
•A+ -调整后的锚定邻域回归方法[42]和
•KKK -[25]中描述的方法,根据Yang等人的工作[46]进行的综合评估,在外部基于实例的方法中取得了最好的性能。

实现都来自作者提供的公开代码,所有图像都使用相同的双三次核进行下采样。

测试集。Set52、Set1451和BSD200328用于评估缩放因子2、3和4的性能。

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

与SOTA方法比较:已经2024年了,过去十年了。这里我们大概看一下实验的做法就行,不用了解其他的对比方法。放大倍数是2,3,4。重点关注上面提到的评估指标:有一些指标感觉可以拿到图像拼接领域中,比如MSSSIM,因为图像超分也与人类感知相关。

4.4.1 Quantitative and qualitative evaluation

如表2、3和4所示,所提出的SRCNN在大多数评价矩阵中得分最高在所有实验中。注意,我们的SRCNN结果是基于8 × 10^8反向传播的检查点。具体来说,对于放大因子 3,SRCNN 实现的 PSNR 平均增益在三个数据集上为 0.15 dB、0.17 dB 和 0.13 dB,高于次优方法 A+ [42]。当我们查看其他评估指标时,我们观察到 SC 比 IFC 和 NQM 上的双三次插值获得更低的分数。很明显,SC 的结果在视觉上比双三次插值的结果更令人愉悦。这表明这两个指标可能无法真实地揭示图像质量。因此,无论这两个指标如何,SRCNN 在所有方法和缩放因子中都取得了最好的性能。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
值得注意的是,SRCNN 在学习阶段开始时超过了双三次基线(见图 1),并且训练适中,SRCNN 优于现有的最先进方法(见图 4)。然而,性能远非收敛。我们推测可以在更长的训练时间下获得更好的结果(见图 10)。
在这里插入图片描述
图14、15和16显示了不同方法的超分辨率结果,放大因子为3。可以观察到,SRCNN比其他方法产生更清晰的边缘,而图像中没有任何明显的伪影。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

此外,我们报告了Cui等人[5]最近的图像超分辨率(DNC)深度学习方法。由于它们使用不同的模糊核(标准差为0.55的高斯滤波器),我们使用与DNC相同的模糊核来训练特定的网络(9-5-5-5-5),以便进行公平的比较。缩放因子为 3,训练集为 91 张图像数据集。从图 11 所示的收敛曲线中,我们观察到我们的 SRCNN 仅用 2.7 × 10^ 7反向传播就超过了 DNC,并且在更长的训练时间下可以获得更大的余量。这也表明端到端学习优于 DNC,即使该模型已经“深度”。在这里插入图片描述

4.4.2 Running time

图12显示了几种最先进的方法的运行时间比较,以及它们在Set14上的恢复性能。获得了所有基线方法来自相应作者的 MATLAB+MEX 实现,而我们的是纯 C++。我们使用同一台机器(Intel CPU 3.10 GHz 和 16 GB 内存)分析所有算法的运行时间。请注意,我们方法的处理时间与测试图像分辨率高度成线性关系,因为所有图像都经过相同数量的卷积。我们的方法始终是性能和速度之间的权衡。为了证明这一点,我们训练了三个网络进行比较,分别是 9-1-5、9-3-5 和 9-5-5。很明显,9-1-5 网络最快,但它仍然实现了比下一个最先进的 A+ 更好的性能。与 9-1-5 网络相比,其他方法慢几倍甚至数量级。注意,速度差距主要是由不同的MATLAB/C++实现引起的;相反,其他方法需要解决复杂的使用优化问题(如稀疏编码或嵌入),而我们的方法是完全前馈的。9-5-5 网络实现了最佳性能,但代价是运行时间。我们的 CNN 的测试时间速度可以通过多种方式进一步加速,例如近似或简化经过训练的网络 [10]、[21]、[31],性能可能会略有下降。在这里插入图片描述
时间:比较了不同算法的时间。这里多说一嘴,matlab和C++实现的速度有差别,同样的,pytorch实现的SRCNN和原作者用matlab和caffee实现的结果肯定不太一样。因为从数据预处理开始,matlab和python虽然方法一样,但是数值结果就是有区别。

4.5 Experiments on Color Channels

在之前的实验中,我们遵循传统方法对彩色图像进行超分辨率。具体来说,我们首先将彩色图像转换为 YCbCr 空间。SR 算法仅适用于 Y 通道,而 Cb、Cr 通道通过双三次插值放大。有趣的是,如果我们联合考虑过程中所有三个通道,是否可以改进超分辨率性能。

我们的方法可以灵活地接受更多的通道,而不改变学习机制和网络设计。特别是,通过设置输入通道toc = 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) 我们观察到 Cb、Cr 通道对于“Y 预训练”的 PSNR 值高于“CbCr 预训练”。原因在于 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 通道比双三次插值差。结果表明该算法偏向于 Y 通道。总体而言,我们在 RGB 通道上训练的方法比 KK 和单通道网络(“仅 Y”)取得了更好的性能。还值得注意的是,与单通道网络相比的改进并不显着(即 0.07 dB)。这表明 Cb、Cr 通道几乎无助于提高性能。在这里插入图片描述
在这里插入图片描述

5 CONCLUSION

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

总结:SRCNN三个层分别为特征提取层、非线性映射层、图像重建层。超参数为9,1,5,64,32。放大倍数为2,3,4。损失函数MSE,激活函数ReLU,学习率0.0001,0.0001,0.00001,最后一层学习率小有利于收敛。评估指标主要有PSNR和SSIM。

如果只是为了应用,那么找个代码跑通知道怎么改参数就行。如果是为了科研,那么从学习知识的角度,还需要由此引出一些扩展知识。比如怎么做不同参数的对比实验,各种评估指标的实现,数据处理(不同类型的彩色通道),特征图可视化,中间层下采样可视化,时间复杂度分析

注意:1. SRCNN要求输入图像大小一致。如果你想用其他数据集或者自己数据集训练,需要将图像预处理为一致大小,办法是按图像中心裁剪。

2. 如果自己的数据集不收敛或者出现局部最小,就需要调整对应的参数,或者改变数据集的质量和数量。

3. pytorch实现的版本和原作者matlab版本的结果会有差别,不过无伤大雅,为了方便科研和以后应用,我们统一使用pytorch实现,重点是以SRCNN这个简单的网络模型作为一个引子,让大家快速入门图像超分,即使没有深度学习和pytorch的基础也可以边做边学。

下一篇文章我们将实现pytorch版本的代码,进一步加深对SRCNN的理解。

对于有科研需求的同学,帮助大家快速上手pytorch,理解原理和基本框架,提升代码能力、复现能力和调参能力。

对于需要跑通代码,得到超分结果的同学,那么仅需要知道如何跑通代码,训练自己的数据集和如何修改参数。

如果本文对你有所帮助的话,点赞收藏吧!我们下一篇文章见!

跳转链接:【图像超分】论文复现:新手入门!Pytorch实现SRCNN,数据预处理、模型训练、测试、评估全流程详解,注释详细,简单修改就可以训练你自己的图像数据,有训练好的模型下载地址,随取随用

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/693787
推荐阅读
相关标签
  

闽ICP备14008679号