从入组到现在,读了十余篇SR相关的最新论文了,但是感觉自己对整个SR问题还没有一个特别清晰的脉络,特别是在读一些论文的related work部分的时候感受尤为明显。于是这几周我找来的这篇2019年的SR综述来阅读,想借此全面地了解一下SR领域的工作,并挑一些经典工作深入理解。
如题目所示,这篇论文就是一个领域综述,主要调研了基于深度学习的图像超分辨方法。作者把现有的方法归为三大类:有监督的SR、无监督的SR和特定领域的SR。另外总结了目前SR领域公开可用的基准数据集和性能评估指标。最后提出了未来的几个可能的SR方向和有待进一步解决的问题。
问题定义与相关术语
整个综述的结构如图:
问题定义
LR图像都是由对应的HR图像由某个退化过程得到的: \[ I_x=\mathcal {D}(I_y;\delta) \] 其中\(I_x\)是LR图像,\(I_y\)是HR图像,\(\delta\)是退化过程中的参数(比如放缩倍数、噪声等)。当\(\mathcal D\)与\(\delta\)都是未知的时候,就是盲SR(blind SR),即从一个LR图像\(I_x\)去求一个对应HR图像\(I_y\)的估计值\(\hat I_y\): \[ \hat I_y = \mathcal F(I_x;\theta) \] \(\mathcal F\)是SR模型,\(\theta\)是\(\mathcal F\)的参数。
退化过程是未知的,并且可能被很多因素影响,比如图像压缩时产生的伪影(artifacts)、各向异性退化(anisotropic degradations)、传感器噪声、斑点噪声(speckle noise)等。
但是研究者们都尝试去给退化过程建一个特定的模型。大多数的工作都是使用一个简单的下采样的操作作为退化模型: \[ \mathcal D(I_y;\delta)=(I_y){\downarrow_s},{s}\subset\delta \] 其中\(\downarrow_s\)是使用缩放因子s的下采样。大多数的SR数据集都是按照这种模式建立的。而常用的下采样操作是抗锯齿的双三次插值(bicubic interpolation with antialiasing)。但是也有工作(SRMD)是使用另外的退化模型: \[ \mathcal D(I_y;\delta)=(I_y \otimes \kappa)\downarrow_s+n_\varsigma,\{\kappa,s,\varsigma\}\subset\delta \]
\(\kappa\)是模糊核(blur kernel),\(n_\varsigma\)是一个标准差为\(\varsigma\)的高斯噪声。这种退化模型更接近于真实世界的情况。
最后,SR模型的优化目标如下: \[ \hat\theta = \mathop {\arg \min}_{\theta} \mathcal L(\hat I_y,I_y)+\lambda\Phi(\theta) \] 其中,\(\mathcal L(\hat I_y,I_y)\)代表生成的HR图像与GT(ground-truth)图像\(I_y\)的损失函数。\(\Phi(\theta)\)是正则项,\(\lambda\)是trade-off参数。
SR的相关数据集
各种数据集的不同主要体现在图像数量、质量、分辨率、多样性等。有的提供LR-HR图像对,有的只提供HR图像(在这种情况下,LR图像通常通过MATLAB中的imresize函数的默认设置(即,抗走样的双三次插值)获得)。
作者总结了常用的SR图像数据集如下表,主要体现了图像数量、平均分辨率、平均像素数、图像格式、图像类别的关键词。
图像的质量评价标准(Image Quality Assessment, IQA)
图像的质量评价标准主要分为两大类:基于人类感知的主观方法、客观的计算方法。前者非常耗时比起昂贵,所以后者成为主流。但是这两类方法并不总是一致的,因为客观的方法往往不能很准确地捕捉到人类的视觉感知,这可能会导致IQA结果存在较大差异。基于客观计算的方法又分为了三类:
- 基于人类感知的主观方法
- 客观的计算方法
- 使用参考图像进行评估的全参考方法(full-reference methods)
- 基于提取特征比较的约简参考方法(reduced-reference methods)
- 无参考图像的无参考方法(no-reference methods),即盲IQA
峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)
峰值信噪比(PSNR)是有损变换中最常用的重构质量测量方法之一。对于图像超分辨率来说,PSNR由最大像素值(记作\(L\))和图像间的均方误差(mean squared error, MSE)定义。给定\(N\)个像素的图像\(I\),重构图像的\(\hat I\)的PSNR定义如下: \[ {PSNR} = 10\cdot \log_{10}(\frac{L^2}{\frac 1 N \sum^N_{i=1}(I(i)-\hat I(i))^2}) \] 在8-bit的灰度图像中,\(L=255\)。由于PSNR只与像素级的MSE有关,往往会导致在真实场景中重建质量表现不佳,而在真实场景中我们通常更关心人的感知。然而,由于缺乏完全准确的感知度量,且一般提出的方法都需要与其他文献进行比较,所以PSNR仍是目前SR模型使用最广泛的评价标准
结构相似性(Structural Similarity, SSIM)
SSIM是根据人类视觉系统(Human Vision System, HVS)提取图片结构的特点设计的,它基于亮度(luminance)、对比度(contrast)、结构(structures)三者的独立比较。
对于\(N\)个像素的图像\(I\),亮度\(\mu_I\)是像素值的均值,对比度\(\sigma_I\)是像素值的标准差。定义亮度、对比度的独立比较如下: \[ \mathcal C_l(I,\hat I)=\frac {2\mu_I\mu_{\hat I} + C_1} {\mu_I^2+\mu_{\hat I}^2+C_1} \]
\[ \mathcal C_c(I,\hat I)=\frac {2\sigma_I\sigma_{\hat I} + C_1} {\sigma_I^2+\sigma_{\hat I}^2+C_1} \]
其中,\(C_1=(k_1L)^2,\ C_2=(k_2L)^2,\ k1\ll 1,\ k2\ll1\)。
结构的独立比较定义如下: \[ \sigma_{I\hat I}=\frac 1 {N-1}\sum_{i=1}^N{(I(i)-\mu_I)(\hat I(i)-\mu_{\hat I})} \]
\[ \mathcal C_s(I,\hat I)=\frac {\sigma_{I\hat I}+C_3}{\sigma_I\sigma_{\hat I} + C_3} \]
最后的SSIM定义如下: \[ { SSIM}(I,\hat I)=[\mathcal C_l(I,\hat I)]^\alpha[\mathcal C_c(I,\hat I)]^\beta[\mathcal C_s(I,\hat I)]^\gamma \] 于SSIM是从HVS的角度来评价重建质量,因此较好地满足了感知评估的要求,也得到了广泛的应用。
平均意见得分(Mean Opinion Score, MOS)
在这种方法中,人类评分者被要求给被测试图像分配感知质量分数。通常,分数是1(差)到5(好)。最后的MOS是计算所有评级的算术平均值。
基于学习的感知质量
研究者们尝试通过在大数据集上学习来评估感知质量 。比如Ma和Talebi分别提出了无参考的评价方法Ma和NIMA,它们根据视觉感知分数直接预测质量分数,而不考虑地面真实图像。Zhang收集了一个大规模的感知相似度数据集,通过训练过的深度网络,根据深度特征的差异对感知图像patch相似度(LPIPS)进行评估,通过CNNs学习到的深度特征对感知相似度的模型要比不使用CNNs的测度好得多。
虽然这些方法在捕捉人眼视觉感知方面表现出了更好的表现,但是需要什么样的感知质量(例如更真实的图像,或者与原始图像的一致性)仍然是一个有待探索的问题,因此客观的IQA方法(例如PSNR, SSIM)仍然是目前的主流。
基于任务的评估
由于SR模型总是可以用来帮助其他视觉任务,所以通过其他任务来评估重建效果也是一种有效方法。具体说就是,研究人员分别把原始的图像、重构的HR图像喂给某个任务的已训练好的模型,通过比较结果的性能来评估重构的质量。常用的任务由目标检测、面部识别、面部对齐与解析等。
其他的IQA方法
- 多尺度结构相似性(MS-SSIM)考虑到观察条件的变化,提供了比单一尺度结构相似性规模更大的灵活性。
- 特征相似度(FSIM)基于相位一致性和图像梯度大小提取人类感兴趣的特征点来评价图像质量。
- 自然图像质量评估器(NIQE)利用在自然图像中观察到的统计规律的可测量偏差
CVPR 2018的一篇工作(The Perception-Distortion Tradeoff)用数学方法证明了这种数值特征(如PSNR、SSIM)和感知质量(如MOS)是彼此不一致的(即不可兼得)。因此,如何准确地测量SR质量仍然是一个迫切需要解决的问题。
SR的操作通道(Operating Channels)
- 常用的RGB色彩空间
- YCbCr颜色空间:Y、Cb、Cr通道分别表示亮度、蓝差和红差色度分量
早期的工作经常使用前者,而近年的工作一般对后者操作。值得注意的是,对不同的颜色空间或通道进行操作(训练或评估)会使评估结果差异很大(有时候甚至高达4 dB)
SR问题中的两个最大的挑战
NTIRE(The New Trends in Image Restoration and Enhancement)
NTIRE一般是CVPR的热点(?),包括了SR、去噪、着色等多个任务。对于SR来说,NTIRE挑战体现在DIV2K数据集上,因为DIV2K数据集由双三次下采样和具有实际未知退化的下采样组成,NTIRE挑战的实质即是在理想的条件和现实的不利情况下的SR研究。
PIRM(The Perceptual Image Restoration and Manipulation)
PIRM一般是ECCV的热点(?)。PIRM的一个子挑战是生成精度和感知质量平衡;另一个是智能手机的SR。
(The Perception-Distortion Tradeoff)证明了,以失真为目标的模型经常会产生视觉上欠佳的结果,而以感知质量为目标的模型在信息保真度方面表现较差,下面是这篇工作的一副插图:
在另一个子挑战,智能手机上的SR中,参与者被要求在有限的智能手机硬件上进行SR(包括CPU、GPU、RAM等),评估指标包括PSNR、MS-SSIM、MOS测试。
有监督的SR
有监督的SR,即:可使用LR与其对应的HR图像进行训练。虽然有监督SR模型各不相同,但它们本质上都是一些组件的组合,比如模型框架、上采样方法、网络设计、学习策略等。下文中作者对于每种组件进行了集中的总结。
SR框架
对于SR这个病态问题,如何体现上采样过程是一个关键问题。作者根据上采样操作的位置,把SR框架分为了四类。
预上采样(Pre-upsampling)
由于学一个从低维空间(像素少的LR图像)到一个高维空间(像素多的HR图像)的映射比较困难,预上采样框架先使用传统的上采样算法获得HR图像,再使用深度网络将其改进。比如最早的SRCNN就是使用这种框架。
由于最复杂的上采样操作已经完成了,CNN只需要细化粗糙的图像,这就显著的减小了学习的难度。此外,该模型可以将任意尺寸和缩放因子的插值图像作为输入,得到与单尺度SR性能相当的结果。
然而,预先定义的上采样通常会引入副作用(例如,噪声放大和模糊),而且由于大多数操作都是在高维空间中执行的,时间和空间成本要比其他框架高得多。
后上采样(Post-upsampling)
为了提高计算效率,充分利用深度学习技术自动提高分辨率,研究者提出将预先定义的上采样替换为在模型末端集成的端到端可学习的层,在低维空间中进行大部分计算。比如最早使用这种框架的有FSRCNN(使用转置卷积)、ESPCN(亚像素卷积)。
由于计算量大的特征提取过程只发生在低维空间,直到网络末尾分辨率才会提高,这使得计算量和空间复杂度大大降低。所以近年很多工作都是采用这种框架,比如SRGAN、EDSR、SRDenseNet、DSRN等。
逐步上采样(Progressive Upsampling)
虽然Post-upsampling的SR框架极大地降低了计算量,但仍存在一些不足:一方面,上采样只进行了一步,大大增加了大尺度因子(如4、8)的学习难度;另一方面,每个比例因子都需要训练一个单独的SR模型,不能满足多尺度SR的需求。为了解决这些缺点,LapSRN首先采用了逐步上采样框架。具体来说,该框架下就是基于串联的CNN,逐步重构出更高分辨率的图像。其余的还有MS-LapSRN、ProSR。
通过把一个复杂的任务分解成简单的任务,这类框架在不引入过多的空间和时间成本的前提下,大大减小了大尺度、多尺度的学习难度。此外,有一些特别的学习策略被应用在这个框架中,比如curriculum learning、multi-supervision,进一步降低学习难度,提高最终的性能。
但这些模型也存在着多阶段模型设计复杂、训练稳定性差等问题,需要更多的建模指导和更高级的训练策略。
迭代的上-下采样
迭代的上采样是为了更好地捕捉LR-HR对的相互依赖性,首先在CVPR 2016的Seven ways to improve example-based single image super resolution这篇工作中首先提出把反向投影(back-projection)引入到SR中,即迭代的计算重构误差,再将其融合回网络的开始,继续调整后续的HR图像。
DBPN采用的就是这种框架,即交替连接上采样层和下采样层,利用所有中间重构结果去重构最终的HR结果。SRFBN采用了一个具有更密集skip连接的迭代上-下采样反馈块;视频超分辨率的一篇工作RBPN从连续视频帧中提取上下文,并通过反向投影模块将这些上下文组合起来。
此框架可以更好地挖掘LR-HR图像对之间的深层关系,从而提供更高质量的重建结果。然而,反向投影模块的设计标准尚不明确。由于该机制刚刚被引入到基于深度学习的SR中,因此该框架具有巨大的潜力,需要进一步探索。
各类上采样方法
作者介绍了一些传统的基于插值的算法和基于深度学习的上采样层。
基于插值的上采样
- 最近邻插值
- 双线性插值
- 双三次插值
基于插值的上采样方法仅根据自身的图像信号来提高图像分辨率,而不提供其他额外的任何信息。所以它们经常引入一些副作用,如计算复杂度、噪声放大、结果模糊等。因此,目前的趋势是用可学习的上采样层代替基于插值的方法。
基于学习的上采样
- 转置卷积层(Transposed Convolution Layer)
- 转置卷积在保持与普通卷积兼容的连通性模式的同时,以端到端的方式增大了图像的大小
- 使用这种上采样方式的工作:SRDenseNet、DSRN、DBPN
- 然而,这一层很容易导致每个轴上的“不均匀重叠”(?)。
- 亚像素层(Sub-pixel Layer)
- 使用这种上采样方式的工作:SRGAN、CARN、SRMD、RDN
- 与转置卷积相比,亚像素层具有更大的感受野,进而提供了更多的上下文信息,帮助生成更真实的细节。
- 然而,由于感受野的分布不平坦(?)并且每个block(上图的1234)共享同一个感受野,所以在每个block之间会有artifact;另外,在同一个block中,独立地计算相邻像素,会导致输出不平滑。
- 所以Gao在Pixel transposed convolutional networks中提出了PixelTCL,将同一个block中各个像素的独立预测改为相互依赖的顺序预测,得到更平滑、更一致的结果。
- Meta Upscale 模块
- 由于之前的两种上采样都需要预先设定放大因子(为不同的因子训练不同的上采样模型),于是Meta-SR提出了Meta Upscale模块,利用元学习解决了任意因子的SR
- 但是,该方法基于几个独立于图像内容的值(?),对每个目标像素预测了大量的卷积权值,因此在面对较大的放大时,预测结果可能不稳定,效率较低
网络设计
残差学习(Residual Learning)
分为以下两类:
- 全局残差学习
- 由于SR本质上是一个“图像”到“图像”的转换过程,LR图像和HR图像是高度相关的,所以研究者们想只学一个他们之间的残差。由于大部分区域的残差接近于零,大大降低了模型的复杂性和学习难度。
- 局部残差学习
- 这和何凯明原始的ResNet中很像,用于缓解网络深度不断增加带来的梯度消失问题
递归学习(Recursive Learning)
即递归地使用同样的模块多次,从而在学到更高级的特征的同时不引入过多的参数:
例子:DRCN、DRRN、MemNet、CARN、SRFBN、DSRN、MS-LapSRN
但递归学习仍然不能避免高昂的计算成本,一定程度上造成了梯度爆炸/消失,因此残差学习和多监督(multi-supervision)经常和递归学习一起使用。
多路径学习(Multi-path Learning)
多路径学习利用多条路径提取特征,然后融合起来,从而获得更好的模型容量。多路径学习可以分为以下:
- 全局多路径学习(Global Multi-path Learning)
- 使用多条路径去提取图像不同方面的特征
- 在传播过程中可以相互交叉,从而极大地提高学习能力
- 局部多路径学习(Local Multi-path Learning)
- 是从inception模块中产生的启发,在MSRN中首先使用
- 不同的路径使用concat操作连接起来,最后加个额外的1x1卷积
- 能较好地从多个尺度提取图像特征
- 特定尺度的多路径学习(Scale-specific Multi-path Learning)
稠密连接(Dense Connections)
注意力机制(Attention Mechanism)
- 通道注意力机制(Channel Attention)
- 非局部注意力机制(Non-local Attention)
高级卷积
- 空洞卷积(Dilated Convolution)
- IRCNN首先在CVPR 2017把空洞卷积引入SR模型,将感受野增加了两倍以上,获得了更好的表现
- 分组卷积(Group Convolution)
- 分组卷积减少了参数和操作的数量,但损失了一点性能
- Depthwise Separable Convolution:
- 它由一个分解的深度卷积和一个点态卷积(即1x1卷积)组成,因此减少了大量的参数和操作
Region-recursive Learning
- 大多数SR模型将SR视为一个与像素无关的任务,因此无法正确地获取生成的像素之间的依赖关系。
- 受到PixelCNN的启发,Pixel recursive super resolution首先提出了像素递归学习来进行逐像素生成图片。它在非常低的像素面部图片SR中得到了很好的MOS结果。
- Attention-FH也使用了循环策略网络(recurrent policy network),按顺序地发现参与补丁,实现局部patch增强。这样就能够根据每幅图像自身的特点自适应地采用最优的搜索路径,从而充分利用图像的全局差异性。
- 但由于递归过程需要较长的传播路径,大大增加了计算量和训练难度
金字塔池化
受何凯明的空间金字塔池化层的启发,Zhao提出了金字塔池化模块(pyramid pooling module):
有效地集成了全局和局部上下文信息。EDSR-PP也利用了这种模块。
小波变换(Wavelet Transformation)
- 小波变换(WT)是一种高效的图像表示方法,将图像信号分解为表示纹理细节的高频子带和包含全局拓扑信息的低频子带。
- 在2016年,Beyond deep residual learning for image restoration: Persistent homology-guided manifold simplification这篇工作首次把小波变换和深度学习结合在一起,应用到了SR模型中,以插值的LR小波子带为输入,预测相应HR子带的残差。
- 在SR中,小波变换常用于分解LR图像;而小波逆变换常用于重构HR的过程
- 由于小波变换的表示比较高效,在兼顾性能的同时,往往大大降低了模型的规模和计算量。
逆亚像素(Desubpixel)
- 顾名思义,就是亚像素卷积层的逆过程
- Desubpixel对图像进行空间分割,将其作为额外的通道堆叠,从而避免了信息的丢失。
- 通过这种方式,他们在模型的开始通过Desubpixel向下采样输入图像,学习低维空间的表示,并在最后向上采样到目标大小。
- 这种方法的主要目的是提升推理速度,应用于智能手机等性能受限的场景。
xUnit
xUnit的本质是在每个卷积的激活函数处增加参数,相比于原来只是使用一个relu的没有参数的激活函数,其表现力更强大:
通过这种方式,作者在没有任何性能下降的情况下将模型大小减少了近50%。
学习策略
损失函数
早期,研究者们总是用像素级别的L2损失,但后来发现这不能准确的衡量重构的质量,于是又提出了content loss、adversarial loss等
像素损失(Pixel Loss)
通常的L1、L2:
Charbonnier损失:
相较于L1损失,L2损失惩罚更大的误差,容忍较小的误差。实践表明L1 loss能得到更好的性能
像素损失实际上并不影响图像质量(比如感知质量),因此,结果往往缺乏高频细节,而且纹理经常过于光滑
内容损失(Content Loss)
使用一个预训练的图像分类网络来衡量:
内容损失实质上是将从分类网络中学到的图像层次特征转移到了SR网络上
VGG和ResNet最常用
纹理损失(Texture Loss)
重构的图像需要有相同的"style"(颜色、纹理、对比度)
图像的“纹理”被视作不同特征通道的相关性,于是定义为格拉姆矩阵(Gram Matrix)\(G^{(l)} \in \R^{c_l\times c_l}\),\(G^{(l)}_{ij}\)定义为第\(l\)层中,被向量化的特征通道\(i\)和\(j\)的内积:
于是纹理损失定义为:
(下面这段我不是很理解,为什么突然冒出了patch size)
Despite this, determining the patch size to match textures is still empirical. Too small patches lead to artifacts in textured regions, while too large patches lead to artifacts throughout the entire image because texture statistics are averaged over regions of varying textures.
对抗损失(Adversarial Loss)
在SR领域,将SR模型作为生成器,再额外定义一个鉴别器来判断输入图像是否生成的。
SRGAN首先提出了如下的对抗损失函数:
\(I_s\)是从ground-truth中随机采样的图像
Unsupervised image super-resolution using cycle-in-cycle generative adversarial networks利用基于最小二乘误差的对抗式损失可以使训练过程更稳定,结果质量更高:
Learning to Super-Resolve Blurry Face and Text Images一文中使用了由一个生成器和多个类特定判别器组成的多类GAN
ESRGAN采用relativistic GAN来预测真实图像比虚假图像更真实的概率,而不是输入图像真实或虚假的概率,从而恢复更详细的纹理。
虽然对抗性损失和内容损失训练的SR模型的PSNR比损失像素训练的模型要低,但在感知质量上有显著的提高。
本质上说,判别器提取出了HR图像的一些很难学习到的隐含模式(latent patterns),进而迫使生成器去适配这种模式
然而,目前GAN的训练过程仍然困难而且不稳定,如何确保整合到SR模型中的GANs得到正确的训练,仍然是一个待解决的问题
循环一致损失(Cycle Consistency Loss)
Unsupervised image super-resolution using cycle-in-cycle generative adversarial networks这篇工作首先把CycleGAN应用到了SR领域
不仅有LR->HR,也把HR重新下采样到LR。需要重新生成的LR图像与输入LR图像的相同,因此引入循环一致性损失:
TV损失(Total variation loss)
目的是抑制生成图像中的噪声
定义为相邻像素之间的绝对差之和,用于测量图像中噪声的大小:
基于先验的损失(Prior-Based Loss)
- 比如在脸部SR任务中,引入面部对齐网络(face alignment network, FAN),作为先验与SR联合进行训练,从而提高了LR人脸对齐和人脸图像SR的性能。
- 本质上,内容损失和纹理损失也都引入了一个图像分类网络,也是提供了图像层次特征的先验知识
在实际应用中,研究人员经常采用加权平均的方法将以上多个损失函数组合起来。然而,不同损失函数的权重需要大量的实证探索,如何合理有效地组合仍是一个问题。
批标准化(Batch Normalization, BN)
- 由于BN校准中间特征的分布,并且缓解了梯度消失现象,它允许使用更高的学习率和比较粗糙的初始化。因此该技术被广泛应用于SR模型
- 然而,Lim等人认为BN丢失了每张图像的尺度信息,并且去掉了网络的范围灵活性。删除了BN并使用节省下来的内存成本(高达40%)来开发更大的模型,从而大幅提高了性能。
Curriculum Learning(?)
- Curriculum learning是指从较容易的任务开始,逐步增加难度。
- 由于超分辨率是一个ill-posed问题,经常会遇到尺度因子大、噪声和模糊等不利条件,因此采用Curriculum learning来降低学习难度。
- 例子:ProSR、ADRSR等
- 与一般的训练程序相比,Curriculum learning大大降低了训练难度,缩短了总训练时间,特别是在scale factor较大的情况下。
多监督(Multi-supervision)
- 多监督是指在模型中加入多个监督信号(?),以增强梯度传播,避免梯度的消失和爆炸。
- DRCN就使用了多监督来对抗递归学习的梯度问题
- 另外,对于LapSRN这种逐步上采样框架,传播过程中产生不同尺度的中间结果,也能采用多监督策略(即期望中间结果与从ground truth HR图像中下采样的中间图像相同)
- 在实践中,这种多监督技术通常通过在损失函数中添加一些项来实现,这样可以更有效地将监督信号反向传播,从而降低训练难度,增强模型训练。(?这里没有例子,不是很理解)
其他的一些提升
除了网络设计和学习策略,还有其他技术可以进一步改进SR模型。
基于上下文的网络融合(Context-wise Network Fusion, CNF)
- 上下文感知网络融合(CNF)指的是一种叠加技术,将来自多个SR网络的预测进行融合(也可以看做上文中提到的多路径学习的一个特例)
- 分别训练具有不同架构的单个SR模型,将每个模型的预测输入到单独的卷积层中,最后将输出相加,成为最终的预测结果。
数据增广(Data Augmentation)
裁剪、翻转、缩放、旋转、颜色抖动(cropping, flipping, scaling, rotation, color jittering)
值得注意的是Bei的一篇工作还使用了对RGB通道进行随机洗牌的数据增广方法。
多任务学习(Multi-task Learning)
多任务学习是指利用某些相关任务(比如如目标检测和语义分割、头部姿态估计和面部属性推断等任务)训练中包含的特定领域的信息,从而提高泛化能力
比如在SR中,SFTGAN使用了一个语义分割网络,用于提供语义知识和生成语义特定细节。
- 加入了空域特征变换(Spatial Feature Transform, SFT),以利用语义分割的结果
考虑到直接超分辨有噪图像可能会导致噪声放大,DNSR提出分别训练去噪网络和SR网络,然后将其拼接并进行微调。
将相关的任务与SR模型结合起来,通常可以通过提供额外的信息和知识来提高SR性能。
网络插值(Network Interpolation)
基于PSNR的模型产生的图像更接近地面事实,但引入了模糊问题;而基于GAN的模型带来了更好的感知质量,但引入了artifacts
为了平衡失真和感知损失,Wang等[103],DIN提出了一种网络插值策略
- 分别训练一个基于PSNR的模型和一个基于GAN的模型,然后对两个网络的所有相应参数进行插值,得到中间模型。
通过调整插值权值而无需对网络进行再训练。
自集成(Self-Ensemble)
- 自集成,又称增强预测
- 在LR图像上加以不同角度(0,90,180,270)的旋转和水平翻转,得到一组8张图像。然后将这些图像输入到SR模型中,对重构后的HR图像进行相应的逆变换得到输出结果
- 我的理解:数据增强是制造多个训练数据,而这些训练数据之间没有关系;而自集成是在训练、测试过程中均制造多个数据输入,且把这些数据整合起来(取平均、中值等)生成最终的结果
SOTA SR模型(有监督)
作者把截止19年的SOTA的有监督SR模型总结如下表:
无监督SR
有监督SR都是使用LR-HR图片对进行学习的。然而,对于同一个场景,很难获取两个不同分辨率的图像(想象一下使用两个摄像机拍摄同一个场景的照片),所以SR数据集中的LR图像总是通过把HR图像经过预定的退化方法得到的。因此在这种情况下,SR模型实际上学到的只是预定好的退化模型的反向过程。
因此,为了不人工引入任何的退化先验,从而学到真实世界的LR-HR映射,即无监督的SR,也就是在训练过程中只提供不成对的LR-HR图像。
下面介绍几个典型的无监督SR
ZSSR(Zero-shot Super-resolution)
ZSSR顾名思义就是一个零样本学习,即只使用待超分辨的LR图像,在test time训练一个image-specific的网络,从而完成SR任务。具体而言,就是使用了ICCV 2013的一篇工作估计了退化核,然后使用这个退化核,利用不同的尺度(scaling factors)完成一个数据增强,建立一个小数据集,进而学到一个小的CNN网络用于最后的预测。
这样一来,ZSSR利用了图像内部的跨尺度信息,在非理想的情况下(比如LR不是由双三次退化得到/图像加了模糊、噪声、压缩伪影)得到了比先前的模型更好的效果(若已知模糊核,提高2db;模糊核未知,提高1db)。但是每张图片都需要训练不同的网络,因此需要更多的时间。
弱监督的SR
所谓弱监督就是使用不成对的HR-LR图片(unpaired LR-HR images)进行学习。有两种思路:
- 学习退化过程:
- ECCV 2018的一篇就提出了一个方法,分两步:
- 首先从一个unpaired LR-HR图像中学一个退化过程。即给Generator输入一个HR,产生LR,不仅要与输入的平均池化下采样匹配,还要符合真实的LR的分布(由Discriminator完成)
- 然后使用上述学好的Generator,作为一个“真实的”退化模型,去构造LR-HR对,从而再训一个LR to HR的GAN,完成超分辨过程
- ECCV 2018的一篇就提出了一个方法,分两步:
- Cycle-in-cycle超分辨率:
深度图像先验(Deep Image Prior, DIP)
DIP中认为,CNN结构本身就足够捕获大量的低级图像信息,并应用于反问题上(比如去噪、图像超分辨等),于是作者使用了一个随机初始化的CNN作为SR问题的先验。具体来说就是,建立了一个生成器网络,输入一个随机噪声z,生成HR图像。直接在训练过程中要求这张HR图像的下采样版本需要与LR图像相同。虽然这种方法的性能仍然比有监督的方法差(2 db),其性能明显优于传统的双三次上采样(1 dB)。
特定领域的应用
深度图(depth maps)的图像超分辨
深度图记录了视点与物体对象在实际场景中的距离,在姿势估计和语义分割中有重要作用。然而,由于经济和生产方面的限制,深度传感器制作的深度图往往分辨率低,并受到噪声、量化和缺失值等退化影响。因此,引入超分辨率来提高深度图的空间分辨率。
深度地图的SR现在最流行的做法之一是使用另一个经济的RGB相机来获得HR图像的相同场景,用于指导超分辨LR深度地图
结论与未来可能的方向
在本节,作者指出一些SR领域尚未解决的问题。
网络设计
一些网络设计的可能的方向:
- 结合局部和全局的信息
- 结合低级(low-level)和高级(high-level)的信息
- CNN的浅层提取颜色和边缘之类的低级信息
- 深层提取目标检测之类的高级信息
- 上下文相关的注意力机制
- 在不同的上下文,人们往往会关注图像的不同方面
- 举个例子:在草地区域,人们可能更关注当地的颜色和纹理;而在动物身体区域,人们可能更关注物种和相应的毛发细节。
- 在不同的上下文,人们往往会关注图像的不同方面
- 效率更高的架构
- 上采样方法
- 插值方法计算开销大,不能端到端学习;
- 转置卷积产生棋盘状伪像;
- 亚像素层带来接受场分布不均;
- Meta Upscale模块可能造成不稳定或效率低下。
另外,近年来,用于深度学习的神经结构搜索(neural architecture search, NAS)技术越来越流行,在很少人工干预的情况下极大地提高了性能或效率。对于SR领域,将上述方向与NAS结合探索具有很大的潜力。
学习策略
- 损失函数:现有的损失函数可以看作是建立LR/HR/SR图像之间的约束,并根据这些约束条件是否满足进行引导优化。在实际应用中,这些损失函数往往是加权组合的,对于SR的最佳损失函数仍然不清楚。
- 标准化(Normalization):既然BN不大行,那有其他的标准化方法吗?
评价指标
- 更准确的指标
- PSNR倾向于导致过度平滑,可能会在几乎无法区分的图像之间有很不同的PSNR结果
- SSIM对亮度、对比度和结构进行了评价,但仍不能准确地测量感知质量。
- MOS是最接近人类视觉反馈的,但需要付出大量的成本,而且不可复制。
- 盲IQA方法
- 现在SR的大多数度量都是全参考(all-reference)方法,也就是说,假设我们已经有Paired方法。但是有时候数据是难以取得的,并且常用的评价数据集往往是通过人工退化的方式构建的,我们执行的评估任务实际上是预定义降级的逆过程。
无监督的超分辨
对真实世界场景的超分辨
- 多样的退化过程:已经一些工作,如CinCGAN等,但这些方法存在固有的缺陷,如训练难度大,假设过完美等。这个问题迫切需要解决。
- 特定应用场景的超分辨:视频监控,目标跟踪,医学成像和场景渲染