【论文阅读】SRCNN

news2025/4/15 12:15:24

学习资料

  • 论文题目:Learning a Deep Convolutional Network for Image Super-Resolution(学习深度卷积网络用于图像超分辨率)
  • 论文地址:link.springer.com/content/pdf/10.1007/978-3-319-10593-2_13.pdf
  • 代码:作者提出的代码(matlab、caffe)Learning a Deep Convolutional Network for Image Super-Resolution其他人复现的代码(pytorch)fuyongXu/SRCNN_Pytorch_1.0: The implemention of SRCNN by pytorch1.0 (github.com)

Abstract

研究主题:这篇论文提出了一种用于单图像超分辨率(SR)的深度学习方法。

核心方法:

  • 直接学习映射(ours):方法是直接学习低分辨率和高分辨率图像之间的端到端映射。这个映射是通过一个深度卷积神经网络(CNN)来表示的,也就是把低分辨率图像作为输入,让网络输出高分辨率图像。
  • 与传统方法的关联:研究还表明传统的基于稀疏编码的超分辨率方法也能被看作是一个深度卷积网络。不过传统方法是分开处理各个组件的,而本文提出的方法是联合优化所有层

模型优势:

  • 结构轻巧且效果好:这个深度 CNN 结构很轻巧,但却展示出了最先进的恢复质量。
  • 速度快:在实际的在线使用中能够实现快速处理。

关键词:超分辨率、深度卷积神经网络

直接学习映射:想象我们有一个神奇的 “机器”(也就是深度卷积神经网络),它的任务是把模糊的小图片(低分辨率图像)变成清晰的大图片(高分辨率图像)。这个 “机器” 不是通过一些复杂的中间步骤去猜测如何变清晰,而是直接去学习模糊图片和清晰图片之间的一种对应关系,就像小孩子直接学习认识苹果和苹果的图片之间的联系一样,这就是端到端的映射。这个学习过程是让网络自己去发现规律,输入模糊的,输出清晰的,不断调整自己内部的设置来达到最好的效果。

与传统方法的关联:传统的基于稀疏编码的超分辨率方法也有点像一个处理图片的 “工具”,但这个 “工具” 的内部结构和我们提出的新方法不太一样。传统的这个 “工具” 就像一个组装不太好的玩具,它里面各个零件(组件)是分开处理的,比如先处理图片的一部分,再处理另一部分,没有整体地去优化。而我们提出的新方法呢,就像一个设计精良的智能机器人,它会把所有的零件(层)都联合起来考虑,一起优化,让整个 “机器” 运行得更好,更能准确地把模糊图片变成清晰图片。

1. 介绍 

1.1. 研究背景

单图像超分辨率(SR)是计算机视觉中的经典问题。

目前最先进的单图像超分辨率方法大多基于样例,包括利用同一图像内部相似性或外部低和高分辨率样本对学习映射函数,但外部基于样例的方法面临有效和紧凑建模数据的困难。

基于稀疏编码的方法是基于外部样本的图像超分辨率代表性方法之一,其流程包括补丁提取和预处理、编码、重建、聚合输出等步骤,以往方法主要关注字典学习和优化,对流水线其他步骤很少统一优化。

基于稀疏编码的 SR 方法流水线相当于一个深度卷积神经网络,并受此启发进行研究。

1.2. 研究内容

提出一个名为SRCNN的卷积神经网络,它是低分辨率图像和高分辨率图像之间的端到端映射。

SRCNN有几个吸引人的特性:

1. 首先,其结构故意设计为简单,但与最先进的基于实例的方法相比,提供了卓越的准确性(根据峰值信噪比(Peak Signal - to - Noise Ratio,PSNR)进行数值评估)

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

3. 对于这个网络(SRCNN)来说,如果满足以下两个条件中的一个或者两个同时满足,它的恢复质量就能进一步提高。

  • 条件一:有更大的数据集可用。就好比学生学习,如果有更多的练习题(数据),那么学生对知识的掌握和运用能力可能会更强。对于网络来说,更多的数据意味着它可以学习到更多不同的低分辨率和高分辨率图像之间的关系模式,从而更好地恢复图像。(更勤奋)
  • 条件二:使用更大的模型。可以把模型想象成一个更复杂、功能更强大的工具。更大的模型可能有更多的层、神经元或者参数,就像一个更复杂的机器能够处理更复杂的任务一样,它能够更好地学习和拟合低分辨率和高分辨率图像之间的映射关系,进而提高恢复质量。(更聪明)

3. 当有更大的数据集或者更大的模型时,不仅对提出的 SRCNN 网络有好处,同时也会给现有的基于样例的方法带来挑战。

现有的基于样例的方法往往依赖于特定的样例数据和相对固定的模型结构来学习低分辨率和高分辨率图像之间的映射关系。当出现更大的数据集时,它们可能无法像 SRCNN 那样有效地利用这些数据,因为它们的学习方式可能不够灵活。

而且如果使用更大的模型,基于样例的方法可能需要重新调整它们的算法和策略,因为它们的核心是基于样例的学习,而不是像 SRCNN 那样基于网络结构自身的优化和学习。

2. 相关工作

2.1. Image SR

先进 SR 方法的核心:一些先进的 SR 方法是学习低 / 高分辨率斑块之间的映射。

差异所在:在如何构建关联低 / 高分辨率补丁的紧凑字典或流形空间,以及在该空间中的表示方案上存在差异。

具体方法示例:

  • Freeman 等人:字典以低 / 高分辨率补丁对形式呈现,通过找最近邻居重建。
  • Chang 等人:引入流形嵌入技术替代最近邻居策略。
  • Yang 等人:将对应关系发展为稀疏编码公式,其及改进是先进方法之一,重点优化补丁,提取和聚合分别处理。

2.2. CNN

历史与流行原因:卷积神经网络(CNN)历史悠久,可追溯到几十年前。它最近非常流行,部分是因为在图像分类方面取得了成功。

关键进展因素

  • 高效训练:能够在现代强大的 gpu 上高效训练,这使得模型能够更快地学习和调整参数。
  • ReLU 单元:修正线性单元(ReLU)的应用加快了收敛速度,同时保证了良好的质量。
  • 丰富数据:容易获取如 ImageNet 等丰富的数据来训练更大的模型,从而提高模型的性能和泛化能力。

我们的方法也从这些进展中受益。

2.3. 图像恢复(深度学习)

深度学习用于去噪

多层感知器(MLP),其所有层都是全连接的(与卷积相比),用于自然图像去噪和去模糊后去噪。

卷积神经网络被应用于自然图像去噪和去除噪声模式(污垢/雨水)。

深度学习用于图像超分辨率问题

相反,就我们所知,图像超分辨率问题并没有见证深度学习技术的使用。

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

3.1. 预处理操作

原文

对于一张低分辨率图片,首先使用双三次插值将其放大到所需大小,这是唯一的预处理操作。经过插值后的图像记为Y,虽然它与真实高分辨率图像X大小相同,但仍称为 “低分辨率” 图像

笔记

双三次插值是一种基于周围像素值来估计新像素值的方法。它考虑了目标像素周围一个较大区域(通常是 4×4 的像素邻域)的像素信息,通过复杂的加权计算来确定新的像素值。这样可以使放大后的图像在一定程度上保持平滑和自然的过渡,避免出现明显的锯齿状或块状的不连续现象。

尽管经过双三次插值后图像的尺寸与真实高分辨率图像相同,但它仍然被称为 “低分辨率” 图像。这是因为仅仅通过插值操作并没有真正恢复图像的细节和清晰度,它只是在尺寸上进行了放大,图像的实质内容仍然是低分辨率的质量水平。后续还需要通过一系列的操作(如 SRCNN 中的 Patch 提取和表示、非线性映射和重建等操作)来进一步提高图像的分辨率和质量,使其真正接近或达到高分辨率图像的水平。

就比如说把 4×4 的低分辨率图像通过双三次插值变为 16×16 后,虽然图像的像素数量增多了(尺寸变大),但每个像素所包含的信息并没有实质性的改变,图像仍然缺乏高分辨率图像应有的细节和清晰度,所以分辨率还是低的。这种放大后的图像只是在空间维度上进行了扩展,但并没有在分辨率这个关键属性上得到本质提升。后续需要进一步的处理才能让它真正具有高分辨率图像的质量。

3.2. 目标任务

目标是从Y中恢复出图像F(Y),使其尽可能与真实高分辨率图像X相似,也就是要学习映射F

3.3. 映射F的组成概念★

映射F在概念上由三个操作组成,所有这些操作形成一个卷积神经网络,如图所示。

3.3.1. 第一层:Patch提取和表示

原文

从低分辨率图像中提取并以特定方式表示出多个(重叠的)Patch,为后续的非线性映射和图像重建做准备。

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

W_{1}是滤波器,大小为c\times f_{1}\times f_{1}\times n_{1},其中c是输入图像通道数,f_{1}是滤波器空间大小,n_{1}是滤波器数量。它在图像上应用n_{1}个卷积,每个卷积核大小为c\times f_{1}\times f_{1},输出由n_{1}个特征图组成。

B_{1}n_{1}维向量,每个元素与一个过滤器相关联。

在滤波器响应上应用ReLU\left ( max(0,x) \right )

笔记

理解

这个操作就像是把一张低分辨率图像拆分成很多小块(Patch),然后用一种特殊的方式来描述这些小块。

想象我们有一张低分辨率图像,就像一个由很多小方块组成的拼图。我们用一组滤波器(就像不同形状的小筛子)在这个图像上滑动,每个滤波器覆盖的区域就是一个 Patch。这些滤波器会提取出每个 Patch 的特征,然后把这些特征组合成一个高维向量。

比如说,滤波器的大小是c\times f_{1}\times f_{1}\times n_{1},这里c是图像的通道数(如果是彩色图像可能是 3,如果是灰度图像就是 1),f_{1}是滤波器的空间大小(决定了它一次覆盖图像多大的区域),n_{1}是滤波器的数量(有很多个这样的滤波器来提取不同的特征)。这些滤波器在图像上滑动后,会得到n_{1}个特征图,每个特征图上的每个点对应的向量就是一个 Patch 的一种表示方式。

滤波器Filter&卷积核kernel

“Filter” 通常更强调其作为一个整体的过滤器的概念,它是一个可以对输入数据进行某种筛选或特征提取的工具。一个 Filter 可能包含多个 Kernel(在多维卷积的情况下)。例如,在一个卷积层中,我们可能会说有多个 Filter 在并行地对输入图像进行处理,每个 Filter 都试图提取一种不同类型的特征。一个 Filter 可能是多维的,尤其是在处理彩色图像或多维数据时。例如,对于一个彩色图像的卷积层,一个 Filter 可能有三个通道(对应 RGB)以及空间维度(如 3x3)。而 Kernel 通常更强调其空间维度的小矩阵结构,对于彩色图像,可能会对每个通道分别有一个 Kernel,然后这些 Kernels 共同构成一个 Filter。

“Kernel” 更侧重于指这个小的矩阵本身的数学结构和参数。它是 Filter 在进行卷积操作时实际使用的核心部分。例如,我们会讨论 Kernel 的大小(如 3x3、5x5 等)、它的元素值(这些值是通过学习得到的)等。

为什么将图像分为 patch(小块)再进行卷积 ?

处理大规模数据,需要降低计算复杂度

图像通常是一个二维的大规模数据矩阵,如果直接对整个图像进行卷积操作,计算量会非常大。例如,对于一个较大尺寸的彩色图像,其像素数量可能达到数百万甚至数千万。直接对这样的图像进行卷积,需要大量的计算资源和时间。

将图像划分为较小的 patch 后,每次卷积操作只针对一个较小的区域进行,大大降低了计算量。这样可以在有限的计算资源下更高效地完成卷积操作,提高计算速度。

更好地捕捉局部特征

图像的很多特征是局部性的,比如边缘、纹理、角点等。这些局部特征对于图像的理解和分析非常重要。例如,在图像识别中,物体的边缘特征可能是区分不同物体的关键。

通过将图像划分为 patch,可以更专注地对每个小块区域内的局部特征进行提取和分析。每个 patch 都可以看作是一个局部的 “观察窗口”,滤波器在这些小窗口上进行卷积操作,能够更准确地捕捉到局部的边缘、纹理等特征信息,而不会被图像其他区域的信息所干扰。

神经网络的层次结构

在卷积神经网络(CNN)中,通常包含多个卷积层和池化层等。将图像划分为 patch 后,在每个卷积层中,滤波器可以对 patch 进行卷积操作,提取出不同层次的特征。这种分层的特征提取方式符合 CNN 的层次结构设计理念,使得网络能够逐步从局部特征中学习到更复杂的图像特征。

例如,在第一层卷积层中,可能提取出一些简单的边缘和纹理特征(通过对 patch 的卷积);在后续的卷积层中,这些特征会进一步组合和抽象,形成更高级的特征表示,最终实现对图像的分类、超分辨率重建等任务。

学习的局部性和并行性

神经网络的学习过程通常是基于局部信息进行更新的。将图像划分为 patch 后,网络可以针对每个 patch 的特征进行学习和调整,这种局部学习方式有助于提高学习效率和准确性。

同时,对多个 patch 的处理可以并行进行,进一步提高了计算效率。例如,在一个 GPU 上,可以同时对多个 patch 进行卷积操作,充分利用 GPU 的并行计算能力。

3.3.2. 第二层:非线性映射

原文

该操作将每个高维向量非线性映射到另一个高维向量上。每个映射的向量在概念上是一个高分辨率patch的表示。这些向量组成了另一组特征图。

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

第一层为每个 patch 提取了n_{1}-dimensional特征,第二层要将这些特征向量中的每一个映射为 n_{2}-dimensional向量。

W_{2}的大小是n_{1}\times 1\times 1\times n_{2},相当于应用n_{2}个具有1\times 1空间支持的过滤器。B_{2}n_{2}-dimensional

笔记

我们把上一步得到的每个n_{1}-dimensional特征向量当作输入,然后用另一组滤波器来处理它们。这组滤波器很特别,它们的空间支持很小,是1\times 1,就像只看每个向量中的一个小元素。这组滤波器的大小是n_{1}\times 1\times 1\times n_{2}

通过这些滤波器的作用,每个输入向量会被非线性地映射到一个n_{2}-dimensional向量。这个过程就像是把原来的特征向量按照一种新的规则重新组合和变换,得到的新向量在概念上是一个更高分辨率 Patch 的一种表示方式,它包含了更多适合重建高分辨率图像的信息。

3.3.3. 第三层:重建

原文

把第二步得到的所有代表高分辨率小块的向量再组合起来,就像把很多拼图碎片拼成一幅完整的图,最终得到一个高分辨率的图像,这个图像要尽可能和原始的高分辨率图像X相似。

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

笔记

我们有了很多经过非线性映射得到的高分辨率 Patch 的表示(以n_{2}-dimensional向量的形式存在),现在要把它们变成一张完整的图像。我们用一组新的滤波器来做这件事,这些滤波器的大小是c\times f_{1}\times f_{1}\times n_{2}

这些滤波器会把每个 Patch 的表示按照它们在图像中的位置进行组合和调整,就像把拼图的各个小块准确地拼在一起。如果高分辨率 Patch 的表示在图像域(比较容易理解的形式),这些滤波器的作用可能类似于平均滤波器,把相邻的 Patch 表示平滑地连接起来;如果是在其他一些域(比如根据某些基的系数),则会先把系数投影到图像域再进行组合。最终,通过这些滤波器的作用,就得到了我们想要的高分辨率图像。

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

3.2.1. 共同点

基于稀疏编码的SR方法与SRCNN在三个操作上的共同点

3.2.2. 不同点

基于稀疏编码的 SR 方法的优化中,没有考虑到所有的操作。

在卷积神经网络中,低分辨率字典、高分辨率字典、非线性映射,以及均值减法和平均,都涉及到要优化的滤波器中,优化了一个由所有操作组成的端到端映射。

3.3.3. 通过类比帮助设计超参数

可以将最后一层的滤波器尺寸设置为比第一层小,更依赖于高分辨率 patch 的中心部分。

可以设置n_{2}< n_{1},因为预计它会更稀疏,一个典型的设置是f_{1}=9,f_{3}=5,n_{1}=64,n_{2}=32

3.3. 损失函数

3.3.1. 定义

公式

使用均方误差(Mean Squared Error, MSE)作为损失函数

L\left ( \Theta \right )=\frac{1}{n}\sum_{i=1}^{n}\left \| F\left ( Y_{i;} \Theta \right ) -X_{i}\right \|^{2}

参数说明

给定一组高分辨率图像\left \{ X_{i} \right \}及其对应的低分辨率图像\left \{ Y_{i} \right \},再重建出图像F\left ( Y_{i} \right )

学习端到端的映射函数F需要估计参数\Theta =\left \{W_{1},W_{2},W_{3},B_{1},B_{2},B_{3}\right \}

其中n是训练样本的数量。

3.3.2. 优化方法

采用标准反向传播的随机梯度下降来最小化损失函数L\left ( \Theta \right )

3.3.3. 选择的考量

MSE 的优势

  • 使用 MSE 作为损失函数有利于获得高 PSNR(峰值信噪比)。
  • PSNR 是广泛用于定量评价图像恢复质量的度量,且至少部分与感知质量相关。

卷积神经网络的灵活性

  • 卷积神经网络并不局限于使用 MSE 作为损失函数,只要其他损失函数是可导的,就可以使用。
  • 如果在训练过程中给出更好的感知激励指标,网络能够灵活适应,这是传统方法难以做到的。

4. 实验

4.1. 实验准备

4.1.1. 数据集

原文

使用与Anchored Neighborhood Regression for Fast Example-Based Super-Resolution (cv-foundation.org)中相同的训练集、测试集和协议。

训练集由 91 张图像组成

使用 Set5(5 张图片)评估放大因子2、3、4的性能

使用 Set14(14 张图片)评估放大因子3的性能

笔记

在图像超分辨率处理中,需要将低分辨率图像放大到与高分辨率图像相近的尺寸,这个放大的倍数就是放大因子。例如,对于一个低分辨率图像,如果要将其放大到原来的 2 倍、3 倍或 4 倍大小,这里的 2、3、4 就是放大因子。

针对每个放大因子,需要训练一个特定的网络。例如,对于每个上尺度因子∈{2,3,4},为该因子训练一个特定的 SRCNN(超分辨率卷积神经网络)。在训练过程中,根据放大因子合成低分辨率样本,如通过适当的高斯核模糊子图像,通过放大因子对其进行子采样,并通过双三次插值以相同的因子对其进行放大。    

在 5.2 节还研究了一个更大的训练集(ILSVRC 2013 ImageNet 检测训练分区中的 395,909 张图像)。

4.1.2. 比较方法

将 SRCNN 与最先进的 SR 方法进行比较:

包括 Yang 等人的 SC(稀疏编码)方法

基于K-SVD的方法

NE + LLE(邻居嵌入 + 局部线性嵌入)

NE + NNLS(邻居嵌入 + 非负最小二乘)

ANR(锚定邻域回归)方法

(看到表格中还加了双三次插值(BiCubic插值)方法,应该是作为baseline,SC、K-SVD、NE + LLE、NE + NNLS、ANR、SRCNN都是在BiCubic处理后的基础上进行处理)

4.1.3. 实现细节

根据 3.2 节,设置f_{1}=9,f_{3}=5,n_{1}=64,n_{2}=32,并在第 5 节评估备选设置。

对于每个上尺度因子\in \left \{ 2,3,4\right \},训练一个特定的网络。

准备训练数据:将 ground truth imagesX_{i}裁剪为32\times 32-pixel的子图像,通过适当处理合成低分辨率样本Y_{i}。91 张训练图像提供约 24800 张子图像。

网络设置:所有卷积层无填充;网络产生更小输出\left ( 20\times 20 \right ),MSE 损失函数通过X_{i}中心20\times 20裁剪与网络输出差异评估;测试时,卷积层给予零填充使输出与输入同大小,并对输出进行归一化处理;仅考虑亮度通道\left ( c=1 \right ),可扩展到彩色图像\left ( c=3 \right );各层滤波器权重初始化,前两层学习率为10^{-4},最后一层学习率为10^{-5}

4.2. 实验结果分析

4.2.1. 定量评价(PSNR)

PSNR 指标对比

在所有实验中,本文提出的 SRCNN 平均 PSNR 最高。

Set5 数据集上,对于三个放大因子,SRCNN 实现的平均增益分别为 0.51dB、0.47dB 和 0.40dB,高于次优方法 ANR。尽管 Set5 可能不是结论性测试集,但表明模型能处理不同上尺度因子。

在更大的 Set14 数据集上,SRCNN 始终优于其他方法(平均≥0.3dB)。

当使用 SSIM 作为性能指标时,也有类似趋势,结果在补充文件中。

与其他方法对比的起始表现和训练效果

SRCNN 在学习阶段一开始就超过了双立方基线,并且在适度训练下,性能优于现有的最先进的方法。但性能还远远没有收敛,推测给定更长的训练时间,可以获得更好的结果。

超分辨率结果的视觉效果

展示了放大因子 3 下不同方法的超分辨率结果图。可以观察到,SRCNN 比其他方法产生更清晰的边缘,并且在图像上没有任何明显的伪影。

尽管 SRCNN 在 Set5 的 “婴儿” 和 “头部” 图像上并没有达到最高的 PSNR,但结果在视觉上仍然很吸引人。

4.2.2. 运行时间(Time)

运行时间比较

比较了几种最先进方法的运行时间和恢复性能。所有基线方法从相应作者的 MATLAB 实现中获得,而 SRCNN 用c++实现。在同一台机器(Intel CPU 3.10GHz 和 16GB 内存)上分析运行时间。

速度优势原因

SRCNN 在 Set14 中平均每张图像花费 0.39 秒,比其他方法快几倍甚至几个数量级。速度差距主要不是由不同的 MATLAB/c++实现引起,而是因为其他方法需要在使用上解决复杂的优化问题(例如,稀疏编码或嵌入),而 SRCNN 是完全前馈的。

还注意到 SRCNN 的处理时间与测试图像分辨率高度线性,因为所有图像都经过相同数量的卷积。

5. 进一步的分析

5.1. 滤波器功能

对SRCNN的滤波器filter进行分析。

图5展示了放大因子2在91张图像(24800个子图像)上训练的学习到的第一层滤波器的例子。(关于放大因子3和4的模式,请参阅我们发布的实现)

有趣的是,每个学习到的滤波器都有其特定的功能: 

滤波器a和f就像拉普拉斯/高斯滤波器

滤波器b、c和d就像不同方向的边缘检测器

滤波器e就像纹理提取器  

我们观察到一些“死”的滤波器,它们的权重都接近于零

然而,如果训练时间足够长,一些“死”滤波器中可能会出现模式。我们将在未来的工作中研究这一现象。

5.2. 训练集变大ImageNet

之前用的是91张图像的数据集,现在换一个数据集,看一下用ImageNet训练的SRCNN怎么样。

训练集介绍

ImageNet 是一个大规模的图像数据库,包含了大量的图像数据,涵盖了各种各样的物体类别。

使用 ILSVRC 2013 ImageNet 检测训练分区中的 395,909 张图像进行 SRCNN 学习,这些图像被分解为超过 500 万个小图像,步幅为 33。

实验设置与结果

使用与之前实验相同的网络设置\left ( f_{1}=9,f_{3}=5,n_{1}=64,n_{2}=32\right )

Set5 上进行放大系数为 3 的测试,结果表明在相同反向传播次数下,在 ImageNet 上训练的 SRCNN 达到的 PSNR 高于在 91 张图像上训练的结果,证明使用更大、更多样化的图像训练集可进一步提高 SRCNN 性能。

5.3. 滤波器数量

实验设置

基于网络默认设置n_{1}=64n_{2}=32,进行两个额外实验:一个使用n_{1}=128n_{2}=64的较大网络,另一个使用n_{1}=32n_{2}=16的较小网络。

两个模型都在 ImageNet 上训练,并在 Set5 上使用升级因子 3 进行测试。

结果分析

结果显示使用更多的过滤器可以实现更优越的性能,但如果想要快速的恢复速度,较小的网络规模是首选,且仍能实现比最先进性能更好的效果。

5.4. 滤波器大小

实验设置

将第一层的滤波器大小从f_{1}=9放大为f_{1}=11,最后一层的滤波器大小从f_{3}=5放大为f_{3}=7,其他设置保持与在 ImageNet 上训练的相关设置相同。

结果分析

在 Set5 上放大因子为 3 的结果表明,合理大的滤波器尺寸可以掌握更丰富的结构信息,带来更好的结果,但过滤器尺寸越大,部署速度会降低,因此网络规模的选择应权衡性能和速度。

6. 结论

6.1. 研究成果总结

提出新方法:提出一种新的单幅图像超分辨率(SR)深度学习方法。

建立方法关系:表明传统的基于稀疏编码的图像超分辨率方法可以重新表述为深度卷积神经网络。

介绍提出方法的特点:提出的方法 SRCNN 学习低分辨率和高分辨率图像之间的端到端映射,除优化外几乎没有额外的预处理 / 后处理;由于结构轻巧,SRCNN 的性能优于最先进的方法。

6.2. 未来研究方向探讨

1. 探索网络中更多的隐藏层/过滤器,以及不同的训练策略

2. SRCNN具有简单和鲁棒性的优点,可以将他应用于其他低层次的视觉问题(如图像去模糊,同时SR+去噪)

3. 研究一个网络来应对不同的放大因素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2212179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 一维数组作为函数参数

//一维数组的引用 #define SIZE 5 void input(int a[], int len); void output(int a[], int len);//函数的声明 int main(void) { int i 0; int arr[SIZE] { 86,85,85,896,45 };//同理五个数据只是偶然&#xff0c;可能会更多 //输入 input(arr, SIZE); …

目标检测系统操作说明【用户使用指南】(python+pyside6界面+系统源码+可训练的数据集+也完成的训练模型)

1.链接&#xff1a;上百种【基于YOLOv8/v10/v11的目标检测系统】目录&#xff08;pythonpyside6界面系统源码可训练的数据集也完成的训练模型&#xff09; 2.目标检测系统【环境搭建过程】&#xff08;GPU版本&#xff09; 3.目标检测系统【环境详细配置过程】&#xff08;CP…

241012-绿联UGOSPro-在仅无线WLAN网络条件下添加虚拟机网络

A. 新建NAT模式的虚拟子网 虚拟机-管理-网络管理-添加网络-如下设置 B. 虚拟机网络选择 C. 不同网络的对比 support.ugnas.com Virtio、e1000和rtl8139有什么区别&#xff0c;在创建虚拟机时&#xff0c;我应该如何选择&#xff1f; Virtio、e1000和rtl8139是三种不同的虚拟…

[论文阅读]SCOTT: Self-Consistent Chain-of-Thought Distillation

中文译名&#xff1a;SCOTT: 思维链一致性蒸馏 会议&#xff1a;Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers) 链接&#xff1a;SCOTT: Self-Consistent Chain-of-Thought Distillation - ACL Antholo…

MySQL【知识改变命运】05

1&#xff1a;where的基本用法练习&#xff08;比较运算符&#xff09; 基本操作&#xff1a;查询英语<60的同学 如果english为NULL&#xff0c;会自动过滤掉&#xff0c;NULL比较特殊 查询语⽂成绩⾼于英语成绩的同学 这个过程&#xff1a;先读取表中每行记录&#xf…

18925 试卷排序(双向链表)

### 思路 1. **初始化队列**&#xff1a;将编号为1的试卷放入队列。 2. **依次插入试卷**&#xff1a;从第2张试卷开始&#xff0c;根据输入的x和p&#xff0c;将试卷插入到指定位置。 3. **输出结果**&#xff1a;输出最终的试卷序列。 ### 伪代码 function reorder_papers(…

计算机的错误计算(一百二十二)

摘要 讨论 的计算精度问题。 例1. 已知 计算 不妨在 Excel 的单元格中计算&#xff0c;则有&#xff1a; 若在Python下计算&#xff0c;则输出似乎更精确&#xff1a; 然而&#xff0c;16位有效数字的正确结果为 0.4999999999940000&#xff08;ISRealsoft 提供&#…

Matlab 多机器人编队数据分析

文章目录 前言一、Function quiver not supported for code generation.二、在仿真环境中添加障碍物三、simulink中function函数初始化五、在MATLAB中&#xff0c;实现在绘图时只删除上一次绘制的图形而不是整个图形界面六、matlab simulink中&#xff0c;程序不断发出机器人位…

git的学习使用(搭建本地仓库,创建本地仓库,配置本地仓库)(附带Ubuntu云服务器git安装流程)

学习目标&#xff1a; 学习使用git&#xff0c;并且熟悉git的使用 学习内容&#xff1a; 必备环境&#xff1a;xshell&#xff0c;Ubuntu云服务器 如下&#xff1a; 搭建 git 环境掌握 Java 基本语法掌握条件语句掌握循环语句 搭建git环境&#xff1a; 1、先检查自己的云服…

vscode的一些概念和原理,插件系统简单上手指南

VScode 技术栈和架构 使用的技术栈&#xff1a; Electron。Typescript。Node.js。Monaco Editor。 代码编辑器 主进程 (Main Process): 负责应用的生命周期管理、菜单、系统托盘等操作系统相关的功能。Electron 的主进程还负责启动渲染进程&#xff0c;并提供与 Node.js 之间…

Excel:多种方法实现1列转多列表格(含vba实现)

要求&#xff1a;将A列中的名字放到右边的表格里面 一、当数据较少的时候手动实现更快 实现的步骤&#xff1a; 1.先按照下面的方式填充右边的表格 然后选中a2、a7所在的前两行进行下拉填充 2.填充完毕表格的样子 3.选中该表格所在的区域 → 点击菜单栏“开始” → 查找 → 替…

python之selenium接管打开的谷歌浏览器窗口——隐藏爬虫特征,跳过登陆弹窗验证

文章目录 引言使用selenium接管打开的谷歌浏览器总结 引言 我们知道通过selenium打开的浏览器与本地电脑上打开的浏览器是不同的&#xff0c;selenium通过插件打开浏览器页面会显示爬虫特征信息&#xff0c;且在访问某些网站时&#xff0c;很容易被检测出是一个爬虫机器&#x…

第十五周:机器学习

目录 摘要 abstrct 一、HW3——食物图片分类CNN 二、GAN计算推导 1、引入 2、最大似然估计 3、divergence的计算 4、总结 三、GAN的架构——fGAN 1、f-divergence 2、共轭函数 3、connetction with GAN 总结 摘要 本周进一步学习了GAN基本原理&#xff0c;主…

element el-tree 自定义图标

除了自定义以外,下方代码还包含 tree自动展开 点击节点后节点聚焦 节点的click事件 节点查询 <template><el-inputplaceholder"请输入要查询的节点"v-model"filterText"clearable></el-input><el-treehighlight-currentclass&quo…

【RabbitMQ】RabbitMQ 的七种工作模式介绍

目录 1. Simple(简单模式) 2. Work Queue(工作队列) 3. Publish/Subscribe(发布/订阅) 4. Routing(路由模式) 5. Topics(通配符模式) 6. RPC(RPC通信) 7. Publisher Confirms(发布确认) 上一篇文章中我们简单认识了RabbitM1: 【RabbitMQ】RabbitMQ 的概念以及使用Rabb…

【Qt】窗口关闭提示框

在关闭QWdiget窗口时弹出提示框 重写**closeEvent**函数 void closeEvent(QCloseEvent* event) override;QMessageBox *msgBox new QMessageBox(QMessageBox::Question, "信息提示", "是否保存当前数据&#xff1f;", QMessageBox::Save | QMessageBox::N…

github克隆项目中的子模块submodule时遇到“无法访问远程仓库,请检查权限“

问题描述 在拉取仓库的时候发现了新东西。 仓库中有两个文件夹提示 点击之后&#xff0c;发现跳转到了另一个仓库 &#xff0c;原来这是仓库的子模块&#xff0c;第一次见&#xff0c;也就是仓库中包含了其他的的仓库&#xff0c;就是这么简单的原理。 但是在拉取仓库以后发现…

VScode环境配置

目录 好用插件推荐 1.Auto Rename Tag 2.openbrowser 3.实时预览&#xff08;推荐&#xff09; VSCode常用的快捷键 1. 快速复制一行 2.快速复制一行代码选定多个相同的单词 3. 添加多个光标 4. 全局替换某写单词 5. 快速定位到某一行 6. 选择某个区块 7. 放大缩…

高一全栈开发;国产 Arc 浏览器;Tauri 2.0 发布 | 生活周刊 #3

发现新应用 Vectorcraftr Vectorcraftr 提供免费可商用的插画库&#xff0c;风格有很多&#xff0c;自行食用 书立 一款功能强大、特性丰富的笔记软件&#xff0c;包含富文本&#xff0c;双链&#xff0c;表格&#xff0c;富目录树&#xff0c;WebDAV &#xff0c;自由导出等…

WPF 为button动态设置不同的模板

有时候需要动态的设置一些按钮的状态模板。使一个button显示不同的内容&#xff0c;比如Button未点击安装显示&#xff1a; 安装后显示&#xff1a; 可以通过设置button的content&#xff0c;通过content来设置不同的模板来实现功能&#xff0c;以下是代码&#xff1a; MainWi…