Image Super-Resolution Using Deep Convolutional Networks 论文总结
提示:
文中【】中的内容表示我没读懂的内容或不知道怎么翻译的内容
若文中有错误或知道【】中内容的正确含义,希望能在评论区中指出
Abstract
摘要讲了讲论文写了些啥:
-
作者提出了一种针对单图像超分辨的深度学习方法,即SRCNN。该方法直接学习低/高分辨率图像之间的端到端映射。映射是用一个低分辨率图像为输入,高分辨率图像为输出的深度卷积神经网络来表示的。
-
证明了传统基于稀疏编码的SR方法也可以看作是一个深度卷积网络。
-
传统方法是分别处理每个组件,而SRCNN联合优化所有层。
-
SRCNN具有轻量级的结构,同时有最先进的恢复质量,并且实现了快速的实际在线使用。
-
作者探索了不同的网络结构和参数设置,以实现性能和速度之间的权衡。
-
SRCNN可以同时处理三个颜色通道,表现出更好的整体重建质量。
超分辨率问题本质是不适定的( inherently ill-posed)或者说超分辨率是个欠定逆问题( underdetermined inverse problem)。意思就是超分辨率是个解不是唯一的问题,因为对于任何给定的低分辨率像素都存在多重解。对于这个问题通常用强先验信息约束解空间来缓解,为了学习强先验信息,现在最先进的方法大多基于例子的策略(example-based strategy),主要有两种思路:
-
利用同一图像的内部相似性;
-
从外部低分辨率和高分辨率样例图片对中学习映射函数
基于外部实例的方法可用于一般图像的超分辨率,也可以设计成适合特定领域的任务,例如人脸超分辨率。基于稀疏编码的超分辨率方法是基于外部实例方法的一种代表方法,该方法流程如下:
1. 从输入图片中密集地进行采样形成大量的重叠的patches,并且对这些patch进行预处理(例如减去均值、标准化);
2. 用一个低分辨率的字典对patches进行编码;
3. 稀疏系数被传递到一个高分辨率字典中,用来重构高分辨率的patches;
4. 将重叠的patches进行聚合(平均权重)产生最终的输出;
很多基于外部实例的方法都采用了上述的流程,但这些方法特别注重学习和优化字典或构建高效的映射函数。但流程中剩下的步骤却很少在统一的优化框架中进行优化或考虑。
由于作者证明了上述流程等价于深度卷积神经网络,受此启发,作者考虑了一个可以直接学习低分辨率和高分辨率图像之间的端到端映射的卷积神经网络。于是他们就提出了SRCNN,并且与稀疏编码的方法进行了比较:
-
SRCNN没有显式地学习用于【modeling the patch space的字典或manifolds】。这些都是通过隐藏层隐式实现的。
-
patch的提取和聚合也被表示为卷积层,因此也被包含在了优化过程中。
-
在我们的方法中,整个SR管道完全是通过学习获得的,几乎没有预处理或后处理。
然后作者又开始夸SRCNN:
-
SRCNN不仅结构简单而且准确率还比一些基于实例的先进方法的高;
-
SRCNN有合适的卷积核数和层数,即使是在使用CPU的实际线上应用中,也能有很快的速度;
-
SRCNN是完全前馈(feed-forward)的,在使用上不需要解决任何优化问题,因此要比其他基于实例的方法快
-
当数据集更大、更多样化或者模型更大、更深时,网络的恢复质量可以进一步提高。相反,较大的数据集或模型对于现有的基于实例的方法是一大挑战
-
SRCNN可以同时处理彩色图像的三通道,提高了超分辨率性能
夸了还不够,作者又总结性的说了说自己做的贡献:
-
我们提出了一种用于图像超分辨率的全卷积神经网络。该网络直接学习低分辨率和高分辨率图像之间的端到端映射,除了优化之外几乎没有什么预处理/后处理。
-
我们建立了基于深度学习的SR方法与传统基于稀疏编码的SR方法之间的关系。这种关系为网络结构的设计提供了指导。
-
我们证明了深度学习在超分辨率的经典计算机视觉问题中是有用的,并且可以达到良好的质量和速度。
最后又讲了相比早些版本的SRCNN的改进:
-
通过在非线性映射层中引入更大的卷积核尺寸来改进SRCNN,并通过增加非线性映射层来探索更深层次的结构
-
将SRCNN扩展为同时处理三个颜色通道(在YCbCr或RGB颜色空间中)
-
扩展到200张测试图像
Related work
这部分感觉没有什么重点,就是在介绍其他方法
Image Super-Resolution
单图像超分辨率算法可分为四种类型:预测模型、基于边缘的方法、图像统计方法和基于patch(或基于实例)的方法。基于实例的方法有最先进的性能。
Convolutional Neural Networks
使用CNN的好处在于:
-
利用现代强大的GPU实现高效训练
-
ReLU的提出不仅使得收敛速度更快,同时保持了良好的质量
-
易于获取丰富的数据(如ImageNet)来训练更大的模型
Convolutional Neural Networks for Super-Resolution
构想
首先使用双三次插值法(bicubic interpolation)将输入图片放大到想要的大小,这是唯一需要做的预处理,经过预处理后的图片记作Y。我们的目标是学习一个映射F,使得F(Y)和真实高分辨率图片X尽可能的相似。
备注:
双三次插值也是卷积运算,因此可以将其表示为卷积层。但是,该层的输出大小大于输入大小,所以存在一个分数步长。为了利用流行的、经过良好优化的实现,如cuda-convnet,我们将这个“层”排除在学习之外。
学习的这个函数F,可以分解成三部分操作:
1. Patch Extraction and Representation
从Y中提取(有重叠的)patches,然后将每个patch映射成一个高维向量。这些向量形成一组feature maps,并且feature maps的数量等于向量的维度。
一种流行的图像恢复策略是密集提取patches,然后用一组预先训练好的基(如PCA、DCT、Haar等)来表示它们。这相当于用一组卷积核对图像进行卷积,每个卷积核都是一组基。在我们的公式中,我们将这些基的优化纳入到网络的优化中。我们的第一层表示为一个操作F1:
其中W1、B1分别表示为卷积核和偏置,*表示卷积运算;W1对应于n1个大小为c × f1 × f1的卷积核,c表示输入图片的通道数,f1是卷积核尺寸。B1对应一个n1维的向量。并且运用 了ReLU (max(0, x) )
备注:
如果将ReLU归入操作二中,那操作一将变成一个线性的卷积
2. Non-linear mapping
将每个高维向量非线性地映射到另一个高维向量上。每个映射后的向量表示一个高分辨率的patch。这些向量构成了另一组feature maps。
将从第一层的每个patch所提取的n1维向量映射到另一个n2维向量。【相当于用n2个尺寸为1x1的卷积核进行卷积】。这很容易推广到像3x3或5x5的大卷积核,【这意味着非线性映射不再单独作用于输入图像的一个patch,而是在feature map上的3x3或5x5的patch】
其中W2对应于n2个大小为n1×f2×f2的卷积核。B2对应一个n2维的向量。
3. Reconstruction
在传统的方法中,预测出的重叠高分辨率patches往往取平均值得到最终的完整图像。取平均值可以看作是一组feature maps上的预定义卷积核(feature maps的每个位置都是高分辨率patch的扁平化向量的形式)受此启发,我们用一个卷积层来产生最终的高分辨率图像:
其中W3对应于c个(chanel个)大小为n2 x f3 x f3的卷积核,B3对应一个c维的向量。
【如果高分辨率patches的表示(representations)在图像域中(即,我们可以简单地重塑每个表示以形成patch),我们期望卷积核的作用类似于平均卷积核;如果高分辨率patches的表示在某些其他域中(例如,根据某些基的系数),我们期望W3的行为类似于先将系数投影到图像域,然后进行平均。不管怎样,W3都是一组线性卷积核。】
与基于稀疏编码方法的关系
在基于稀疏编码的SR方法模型中,我们可以把f1×f1低分辨率的patch看成是从输入图片提取出来的,然后稀疏编码求解程序将patch投影到一个字典上,如果这个字典的大小为n1,那么相当于在输入图片上使用n1个大小f1×f1的卷积核进行卷积运算,如图3的左半部分所示。稀疏编码求解程序会迭代的处理n1维度的向量,从而得到一个n2维度的向量,一般来说n1、n2是相等的,这个时候稀疏编码求解程序起的作用就是一个大小为1×1的非线性映射运算符,如图3的中间部分所示。然后再对n2维度的向量投影到另一个字典空间目的是产生高分辨率的patch,重叠部分的patch会进行平均操作,如图3的右半部分所示。
在SRCNN中,以上的低分辨率字典、高分辨率字典、非线性映射、减去均值和平均化的操作都包括在需要优化的卷积核里了,所以说该模型是一个包括所有操作的端到端的映射。而且之所以SRCNN的表现更好是因为SRCNN使用更多的像素信息用于图像重构。【例如当我们设置f1=9,f2=1,f3=5,n1=64,n2=32时,高分辨率像素使用了(9+5-1)^2=169个像素的信息,而传统的方法只使用了(5+5-1)^2=81个像素的信息。】
训练
该模型的参数有:W1, W2, W3, B1, B2, B3。给定一组高分辨率图片Xi以及对应低分辨率图片Yi,我们使用MSE(mean squared error)作为损失函数
其中n是训练样本的数量。损失函数使用随机梯度下降进行优化
其中l∈{1,2,3},i是层和迭代的索引,每层的卷积核权重都由均值为0标准差为0.001的高斯分布进行初始化,每层偏置都初始化为0,η是学习率,前两层的学习率为10^-4 ,最后一层的学习率为10^-5。并且作者发现在最后一层使用小的学习率对于SRCNN收敛很重要。
在训练阶段,训练图片中的高分辨率标签图片{Xi}被随机裁剪成大小为fsub x fsub x c 的子图片。为了生成低分辨率的样本{Yi},我们对子图片使用了高斯模糊,以一个放大系数对其进行下采样,然后又用具有相同放大系数的双三次插值法放大它。
【为了避免训练期间边界影响,所有的卷积层没有使用padding,这就会使得输出的图片尺寸小一些(fsub-f1-f2-f3+3)^2xc),使用MSE损失函数时只比较Xi的central pixels与网络输出之间的不同。
虽然使用了修整过的图片进行训练,但SRCNN依然可以在任意尺寸的图片上进行测试。】(这里有些不太懂,如果central pixels译为中心周围的像素,那么loss只比较了中心周围像素的损失,这对预测会不会有影响?举个例子,输入一张64x64x3的图片,经预处理双三次插值先扩大至128x128x3,然后通过网络可能缩成96x96x3,那这预测出来的图是完整的还是只有中心部分?如果是完整的它边缘部分恢复质量会不会差一些?)
Experiments
实验部分主要探讨了各种因素对超分辨率性能的影响,并且也将SRCNN与其他最先进的方法进行了对比。
实验过程中以f1 = 9, f2 = 1, f3 = 5, n1 = 64, n2 = 32作为基础网络设置,以稀疏编码的方法作为基线。
1. 训练集大小
作者使用了一个24800大小的训练集(91-image)和一个5百万大小的训练集(ImageNet)进行训练。实验结果如图:
结论:
使用大型训练集对SRCNN的表现有一定提升,但影响不大,不像其他视觉问题那样明显。其原因可能是小训练集已经能充分捕获自然图像的可变性,另一方面,SRCNN是个非常小的网络,不会对91-image过拟合。
后续的实验均以ImageNet作为训练集。
2. SR中已学习的卷积核
图五展示了第一层已学习的卷积核,图六为不同层的feature maps
结论:
-
每个已学习的卷积核都有其特定的功能,例如卷积核g、h类似于拉普拉斯核或高斯核,卷积核a-e就像不同方向的边缘检测器,卷积核f类似于一个纹理提取器;
-
第一层的feature maps包含了不同的结构,例如不同方向上的边缘,第二层的feature maps主要是光照强度的不同。
3. 模型大小和性能的权衡
卷积核数量
为了验证网络宽度(即每层卷积核的数量),设置了两组不同的n1,n2与基础设置中的n1=64, n2=32进行了对比。对比结果如下图:
结论:
-
增加网络宽度能够获得更好的性能。
-
卷积核数量越多,图像重构的时间越长。如果需要较快的恢复速度,最好选择较小的网络宽度,但即使选择较小的网络宽度依然比基于稀疏编码的方法(31.42 dB)要好。
卷积核大小
我们将f1 = 9, f2 = 1, f3 = 5的基础网络记为9-1-5
首先,固定第二层卷积核大小为f2=1(为了与基于稀疏编码的方法保持一致),并设置f1=11,f3=7(11-1-7)。得到的结果为32.57 dB ,比9-1-5的网络性能(32.52 dB )稍高
其次,固定第一、三层卷积核大小为f1=9,f3=5。设置f2=3和f2=5;实验结果如下
结论:
-
较大的卷积核尺寸可以获得更丰富的结构信息,从而得到更好的结果。
-
改变f2的实验说明了在映射阶段利用邻域信息是有益的
-
更大的卷积核尺寸会降低部署速度。例如,9-5-5(57184个参数)的复杂度几乎是9-3-5(24416个参数)的两倍,但只带来了微弱的性能提升。
卷积层的数量
近期研究表明CNN受益于模型深度的增加,于是作者尝试了以下实验
-
在9-1-5,9-3-5,9-5-5的网络上添加一个n22=16, f22=1的非线性映射层,即将原来网络变为9-1-1-5,9-3-1-5,9-5-1-5。实验结果如下
-
将9-1-1-5中n22由16改为32(扩大卷积核数量),但实验结果表明这种结构会使得性能下降且不能超过三层网络的结构。
-
将9-1-5改为9-1-1-1-5,其中n22=32,n23=16,并且为了确保收敛设定了更小的学习率,但实验结果表明模型性能并不好。
-
作者又在9-3-1-5网络的基础上提高了添加层的卷积核大小,f22=3,变成9-3-3-5,然后又设置了一个9-3-3-3的网络。最终这两网络的性能都不如9-3-1-5
结论:
-
从实验1中能得出四层网络收敛的比三层的慢,但若有足够的训练时间,四层网络最终也能赶上三层的网络。
-
所有实验都表明了并不是所谓的越深越好,这可能是因为网络越深训练难度越大,训练难度越大是因为我们的CNN没有池化层和全连接层,因此网络对初始化参数和学习率比较敏感。当我们使用越深的网络(例如四层或五层的网络),我们发现很难去设置一个合适的学习率来确保网络收敛,即使模型收敛了,也可能陷入一个不好的局部最小值,并且经过足够的训练时间,已学习的卷积核的多样性会变少。而且在图像分类领域,不适当的增加模型深度也会使得准确率的下降或退化。
-
为什么“越深反而不好”仍是一个开放的问题,这需要深入研究来更好地理解深层架构中的梯度和训练动态。因此,在接下来的实验中,我们仍然采用三层网络。
4. 与最先进的方法进行比较
为了平衡性能和速度,我们的方法选用了f1=9, f2=5, f3=5, n1=64, n2=32,并且在ImageNet上进行训练。并且对每个放大系数∈{2, 3, 4},我们都训练了一个相应的网络。
补充对评价指标的介绍:
PSNR(Peak Signal to Noise Ratio)峰值信噪比:PSNR是最普遍,最广泛使用的评鉴画质的客观量测法。但这个指标只是速度快,评价效果一般
SSIM(Structural SIMilarity)结构相似性:是一种衡量两幅图像相似度的指标,用均值作为亮度的估计,标准差作为对比度的估计,协方差作为结构相似程度的度量。
IFC(information fidelity criterion)信息保真度准则:通过计算待评图像与参考图像之间的互信息来衡量待评图像的质量优劣。
NQM(noise quality measure)噪声质量测量
WPSNR(Weighted Peak Signal to Noise Ratio)加权峰值信噪比
MSSSIM(Multi Scale Structural SIMilarity )多尺度结构相似性
后面几个没有找到相关资料,可能只能到相关论文上看了,不过肯定都是些对图片质量的评价指标,但这文章是2016年的,这些指标都比较旧了。
作者又开始了吹捧环节:我们在大多数指标上都获得了最高的分数,其余没有获得最高分数那是指标的问题,比如IFC和NQM,在这两个指标下,SC的得分甚至比Bicubic差,但很明显SC的图片看起来比Bicubic的好啊,所以忽略这两个指标,我们在所有方法和所有放大系数下都获得了最好的性能。
作者还进行了收敛曲线的比较,SRCNN均有更好的表现
运行时间上的比较:
9-5-5网络有着最高的表现,9-1-5网络是最快的,并且表现还比A+好
5. 对颜色通道实验
为了探讨联合三个通道对性能是否有提升,我们探索了对彩色图像超分辨率的不同训练策略,并评估了它们在不同通道上的表现。实验结果如下:
其中
-
Y only:基线方法,是一个单通道网络(c=1),只在亮度上进行了训练。对Cb、Cr通道采用双三次插值进行了扩展。
-
YCbCr:在YCbCr空间的三个通道上进行训练
-
Y pre-train :使用Y通道的MSE作为损失来对网络进行预训练。然后利用各通道的MSE对参数进行微调
-
CbCr pre-train:使用Cb,Cr通道的MSE作为损失来对网络进行预训练,然后对所有通道的参数进行微调
-
RGB:在RGB空间的三个通道上进行训练
结论:
-
直接在YCbCr通道上训练,结果比双三次插值还要差。这是因为Y、Cb、Cr通道固有的不同特性,使得训练陷入了一个不好的局部极小值。
-
如果我们在Y或Cb、Cr通道上进行预训练,性能最终会提高,但仍然不如彩色图像上的Y only(上图的RGB color image列)。这说明在统一网络中进行训练时,Cb、Cr通道会降低Y通道的性能。
-
我们观察到Y pre-train比CbCr pre-train的Cb、Cr通道的PSNR值更高。原因在于Cb通道、Cr通道和Y通道的不同。在视觉上,Cb、Cr通道比Y通道更模糊,因此受下采样过程的影响更小。当我们在Cb, Cr通道上进行预训练时,只有几个卷积核被激活。那么在微调过程中,训练将很快陷入一个不好的局部最小值。另一方面,如果我们在Y通道上进行预训练,更多的卷积核将被激活,使得在Cb、Cr通道上的性能将更高。
-
在RGB通道上训练,在彩色图像上效果最好。与YCbCr通道不同的是,RGB通道之间具有很强的相关性。SRCNN能够在重构图像时利用通道间的这种自然关系。因此,该模型在Y通道上取得了与Y only相近的结果,以及在Cb、Cr通道上的结果优于双三次插值的结果。
-
在KK中,每个RGB通道分别应用超分辨率。当我们将其结果转换为YCbCr空间时,Y通道的PSNR值与Y only相似,而Cb的PSNR值比双三次插值差。结果表明,该算法偏向于Y通道。
-
总的来说,我们的方法在RGB通道上的训练比KK和单通道网络(Y only)有更好的性能。同样值得注意的是,与单通道网络相比,这种改进并没有那么显著(即0.07 dB)。这说明Cb、Cr通道对提高性能几乎没有帮助。
Conclusion
-
我们提出了一种新的单图像深度学习方法。
-
我们证明了传统的基于稀疏编码的SR方法可以重构为一个深度卷积神经网络。
-
SRCNN学习低分辨率和高分辨率图像之间的端到端映射,除了优化之外几乎没有额外的预处理/后处理
-
由于采用了轻型结构,SRCNN的性能优于最先进的方法。
-
我们推测,通过探索更多的卷积核和不同的训练策略,可以获得更好的性能。此外,该结构具有简单、鲁棒性强等优点,可应用于图像去模糊或同时进行SR+去噪等low-level vision问题。
参考资料
SRCNN
https://blog.csdn.net/ilovejohnny/article/details/80233111
https://blog.csdn.net/KevinZ5111/article/details/85066578
来源:https://www.cnblogs.com/aiblbns/p/12006476.html