Deep Learning for Single Image Super-Resolution:A Brief Review
原文链接:Deep Learning for Single Image Super-Resolution:A Brief Review
本文章为原创文章,转载请说明出处:https://loushengtao.github.io/2022/03/9409a7cc/
一些专有名词
1 |
|
1 概述
单幅图像超分辨率(SISR)是一个总所周知具有挑战性的问题,他的目的是从一个低分辨率(LR)版本种获得高分辨率(HR)输出。近年来,强大的深度学习用法已经应用于SISR,并取得了非常不错的效果。
在典型的SISR框架中,如下图所示,低分辨率LR图片模型如下:
\[y=(x\otimes k)\downarrow_{s}+n \tag{1}\]
其中,\(x\otimes k\)是模糊卷积核和原图像x之间的卷积,s是具有比例因子s的下采样算子,n是独立噪声项。
文章中指出,迄今为止,SISR的主流算法主要分为三类:基于插值的方法、基于重构的方法以及基于学习的方法。
基于插值的SISR方法,如双三次插值和Lanczos重采样,非常快速和简单,但是存在精度不足的问题。
基于重构的SISR方法,它们通常采用复杂的先验知识来限制可能的解空间,具有生成灵活和清晰细节的优势。然而,当比例因子增加时,许多基于重建的方法的性能迅速下降,并且这些方法通常是耗时的。
基于学习的SISR方法,也称为基于样例的方法,由于其快速的计算和出色的性能而备受关注。这些方法通常利用机器学习算法分析来自大量训练实例的LR和其对应的HR对应物之间的统计关系。
1.2 深架构SISR介绍
1.2.1 SRCNN
论文选择了SRCNN架构作为基准,SRCNN的整体架构如下图所示:
如上图所示,SRCNN是一个三层的CNN,每层的卷积核大小分别为:
\(64\times1\times9\times9\)
\(32\times64\times5\times5\)
\(1\times32\times5\times5\)
这三种线性变换的作用分别是块提取、非线性映射和重建
SRCNN的成功很大程度上归功于SRCNN的强大的学习能力。尽管SRCNN取得了成功,但仍然存在一下问题:
- 1.SRCNN的输入是双三次(bicubic)插值的LR,它是HR的近似值。然而,这些插值具有三个缺点:
- a 这些输入引入的细节平滑效应可能导致对图像结构的进一步错误估计;
- b 采用内插版本作为输入非常耗时
- c 当下采样内核未知时,一个特定的插值输入作为原始估计是不合理的。
- 2.SRCNN只是一个三层的架构,如果对模型架构进行加深,加宽并且增加拓扑结构,能否获得更好的结果?如果是,那么如何设计这种更复杂的模型?
- 3.损失函数中反映HR图像属性的先验项是不够的。是否可以将SISR过程的任何属性集成到CNN框架或SISR算法中?
1.2.2 ESPCN
针对上述的第一个问题,即SRCNN的输入是一个双三次插值的LR问题,解决方案是在CNN架构中设计一个模块,以自适应地提高分辨率。
池化卷积和步幅卷积是基本CNN架构中常见的下采样算子。自然地,人们可以实现上采样操作,这被称作反卷积(deconvolution)或转置卷积(transposed convolution)。
如图所示,给定上采样因子,反卷积层由任意插值算子(图中采用的为最邻近插值为简单起见),和步长为1的后续卷积算子组成。
需要注意的是,反卷积层可能无法完全恢复池化或者步幅卷积中的信息,关于反卷积层更详细的说明Is the deconvolution layer the same as a convolutional layer?
To the best of our knowledge,FSRCNN是第一个使用这种正常的反卷积层从LR 特征图重建HR图像的工作。如前所述,使用反卷积层主要有两个主要优点:一是实现了计算量的减少,因为只需要在网络末端增加分辨率,而不需要在其他步骤中用较大的计算量增加分辨率。二是是当下采样内核未知时,许多论文已经表明输入的不准确估计将会对最终性能产生副作用。
在使用最邻近插值进行上采样时,上采样特征中的点在每个方向都上重复了几次,这种操作是多余的。为了规避这个问题,有人提出了一种有效的亚像素卷积层,称为ESPCN2。
ESPCN的结构如上图所示,ESPCN不是像反卷积层那样通过显示放大特征图来提高分辨率,而是扩展输出特征的通道以存储额外点以提高分辨率,然后重新排列这些点以获得通过特定映射标准的HR输出。
上面的黄色箭头是作者从零插值角度理解的亚卷积层卷积过程,而下面的黑色箭头是ESPCN原文中的具体过程,即先卷积,然后再排列。
上图为ESPCN原论文的整体架构,下面对具体放法进行阐述:
\(I^{LR}\)为LR图像,在新的网络架构中,对于L层组成的网络,前L-1层可以描述如下: \[f^{1}(I^{LR};W_{1},b{1})=\phi (W_{1}*I^{LR}+b_{1}) \tag{1}\]
\[f^{l}(I^{LR};W_{1:l},b{1:l})=\phi (W_{l}*f^{l-1}(I^{LR})+b_{l}) \tag{2}\]
假设目标的通道数为\(c\),单个边长放大的倍数为\(r\),则通过卷积,会生成通道数为\(r^{2}c\),大小为原图大小的特征层,最后再经过特定的顺序进行排列,生成最终的HR图像。
对于最终的\(I^{SR}\),有公式如下:
\[I^{SR}=f^{L}(I^{LR})=\mathcal{PS}(W_{L}*f^{L-1}(I^{LR}+B_{L})) \tag{3}\]
其中\(\mathcal{PS}\)是将形状为\(H\times W\times C\cdot r^{2}\)的张量元素排列成形状为\(rH\times rW\times C\)的张量的一个周期性混洗算子(periodic shuffling operator)。在数学上,该操作可以用以下方式描述:
\[\mathcal{PS}_{x,y,c}=T_{[x/r],[y/r],c\cdot r\cdot mod(y,r)+c\cdot mod(x,r)} \tag{4}\]
1.2.3 VDSR——基于VGG
在深度学习的研究中,有理论工作[3]表明DNN(Deep NN)深度升级网络的解空间可以通过增加其深度或者宽度来扩展。在某些情况下,为了更有效地获得更多的层次表示,许多工作主要集中在通过增加深度来获得改进。VDSR[4]是SISR中第一个使用非常深的网络架构的模型。
对于SR的图像重建,VDSR的作者受到了Simonyan和Zisserman的启发[5]。VDSR使用了d层,除了第一层和最后一层外,其他层都为相同类型:
如图所示,第一层对输入图像进行操作,最后一层用于图像重建。中间的每一层使用了64个大小为\(3\times 3\times 64\)的卷积核,其中卷积核在64个通道上的\(3 \times 3\)空间区域上操作(特征图)。
1.2.4 DRCN——基于VDSR的优化
经过研究,有学者发现,VDSR的非线性映射部分的卷积核非常相似,为了减少参数,Kim等人进一步提出了DRCN
如图所示,DRCN在非线性映射部分使用了16次相同的卷积核,同时,为了克服训练深度递归CNN的困难,DRCN采用了多重监督策略,最后的结果可以看作是16个中间结果的融合,用于融合的结果是一系列总和为1的可训练正标量。实验结果证明DRCN与VDSR有着非常相似的性能,与此同时DRCN比VDSR的参数更少。
1.2.5 SRResNet——基于ResNet
像VGG网络这样的简单架构很难再通过继续加深神经网络来实现效果上的优化。由何明恺等人提出的ResNet在许多任务中实现了最先进的性能。基于"skip-connections"的ResNet也被用于超分领域,被提出为SRResNet。
它由16个残差单元组成,每个残差单元由两个带残差学习的非线性卷积组成,同时BatchNormalization批量标准化被用于稳定训练的过程
1.2.6 DRRN——基于ResNet的拓扑优化
基于ResNet的原始残差单元,Tai等人提出了DRRN:
在DRRN中,基于拓扑,原始残差单元在递归过程中重新排列形成递归快。然后,为了实现参数的缩减,每个块共享相同的参数,并且被递归的重用,例如在DRCN的单个递归卷积核中。
1.2.7 EDSR——基于ResNet的优化
EDSR是由Lee等人提出的有更好的表现的模型。
EDSR在整体框架上主要做了三点改进:
- 与之前工作中使用的残差单元相比,EDSR去除了BN的使用——BN的原始ResNet被设计用于分类,其中内部表示是高度抽象的,并且这些表示可能对BN引入的位移不敏感。对于SISR这样的图像到图像的任务,由于输入和输出是密切相关的,网络的收敛不再是一个难题,所以这种BN引入的偏移会损害最终的性能。
- 除了有规律的深度增加。EDSR还大规模增加了各层输出特征数量。为了消除训练如此宽的ResNet的困难,采用了[6]提出的残差放缩技巧"Scale"。
- SISR不同的尺度因子具有很强的联系,当训练\(\times3\)和 \(\times4\)尺度的模型时,EDSR的作者用预训练\(\times2\)网络来初始化参数。这种预训练策略加快了训练速度,提高了最终成绩
ESDR的预训练策略的有效性意味着不同尺度的模型可以共享许多中间表示
1.2.8 DenseSR
除了ResNet之外,DenseNet是另一种基于跳过连接的有效架构,在DenseNet中,每一层都所有前面的层相连接,瓶颈层(通常为\(1\times1\)卷积核,为了改变深度减少计算量)以单元核块的形式使用,以减少参数数量。有学者指出,ResNet与DenseNet不同之处在于ResNet更多的是支持功能重用,而DenseNet支持新功能探索。
如图所示,DenseSR在反卷积层之前进一步连接来自不同块的所有特征,实验证明这样做提高了网络的性能。
1.2.9 MDSR——不同尺度共享表示的初步探寻
在EDSR不同尺度因子的预训练有效的情况下,ESDR的作者进一步提出了MSDR:
如图所示,在MDSR中,用于非线性映射的卷积核在不同尺度撒谎给你共享,其中只有由于提取特征的前卷积核和最后的子像素上采样卷积是不同的。在训练MDSR期间的每次更新时,随机选择\(\times2\)、\(\times3\)、\(\times4\)的小Batch,并且仅更新MDSR的对应部分。
1.2.10 MemNet
MemNet是另一种基于DenseNet的SISR模型。Tai等人提出的MemNet使用残差单元递归地替换基本的DenseNet的正常卷积块,并在不同块之间添加密集连接,如下图所示。
MemNet的作者解释说,统一区块中的局部连接层类似于短期记忆,而与先前区块的连接类似于长期记忆。
2.超分模型衡量标准
2.1 PSNR
PSNR——Peak Signal-to-Noise Ratio 即峰值信噪比,假设都拥有\(N\)个像素的两张图片\(I\) 和 \(\hat{I}\) MSE和PSNR 定义如下:
\[MSE=\frac{1}{N}||I-\hat{I}||_{F}^{2}\]
\[PNSR=10log_{10}^{(\frac{L^{2}}{MSE})}\]
其中\(||.||_{F}^{2}\)为佛罗贝尼乌斯范数(Frobenius Norm) 并且L的值通常为255
2.2 SSIM
SSIM——Structural Similarity Index,即度量结构相似性的指标。假设都拥有\(N\)个像素的两张图片\(I\) 和 \(\hat{I}\) SSIM 定义如下:
\[SSIM(I,\hat{I})=\frac{2\mu_{I}\mu_{\hat{I}}+k_{1}}{\mu_{I}^{2}+\mu_{\hat{I}}^{2}+k_{1}} \cdot \frac{\sigma_{I\hat{I}}+k_{2}}{\sigma_{I}^{2}+\sigma_{\hat{I}}^{2}+k_{2}}\]
其中,\(\mu_{I}\)和\(\sigma_{I}^{2}\)是图片I的均值和方差,\(\sigma_{I\hat{I}}\)是图片\(I\)和\(\hat{I}\)的协方差,\(k_{1}\)和\(k_{2}\)为常数松弛项(constant relaxtion terms)
2.3 参数量
\(Number\ of\ parameters\ of\ NN\ for measuring\ storage\ efficiency\)
即网络参数量,也是衡量网络模型的一个标准
2.4 Mult&Adds
\(Number\ of\ composite\ multiply-accumulate\ operations\ for\ measuring\ computational\ efficiency\)
顾名思义,即模型中用于运算的复合乘法累加操作数。
一些重点
- 用于训练的数据集会影响模型效果
References
[1] Deep Learning for Single Image Super-Resolution:A Brief Review
[4] Accurate Image Super-Resolution Using Very Deep Convolutional Networks