Deep Learning for Image Super-resolution: A Survey
超分辨简介
图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题,在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。随着深度学习技术的发展,基于深度学习的图像超分方法在多个测试任务上,取得了目前最优的性能和效果。本篇综述给出了一个统一的深度学习视角,来回顾最近的超分技术进展,主要包括三个方面:
给出了综合性的基于深度学习的图像超分技术综述,包括问题设置、数据集、性能度量、一组基于深度学习的图像超分方法集合,特定领域的图像超分方法应用等等。
为最近基于深度学习的图像超分算法提供了系统性、结构化的视角,并总结了高效图像超分解决方案中的优势与劣势。
-
讨论了这个领域的挑战与开放问题,并总结了最近的新趋势与未来的发展方向。
最新进展
1. 超分网络的升采样结构
根据升采样(upsampling)在网络结构中的位置和使用方式,可以把超分网络结构设计分为四大类:前端升采样(pre-upsampling)超分网络、后端(post-upsampling)升采样超分网络、渐进式升采样(progressive upsampling)超分网络、升降采样迭代式(iterativeup-and-down sampling)超分网络。
前端升采样网络,一般使用双三次(bicubic)插值直接将低分辨率图像插值到目标分辨率,然后深度卷积网络等模型重建高质量细节信息,这类方法显著降低了学习的难度,但是预先设定的升采样方法会引入模糊(noise)、噪声放大(noise amplification)等问题,同时因为网络在前端即进行插值到高分辨率空间,所需的存储空间和耗时都远高于其他类型超分网络。
后端升采样网络,一般在网络结构的最后一层或几层,使用端到端可学习的升采样层,绝大部分映射变换都在低分辨率空间进行,计算复杂度和空间复杂度都明显降低,同时训练和测试速度也都明显提高,被多前主流超分网络框架所使用。
渐进式升采样网络,主要是解决多个超分倍增系数(scaling factor)和大的超分倍增系数,升采样不是一步完成的,而是采用拉普拉斯金字塔或者级联CNN等方式,产生一些中间(intermediate)的重建图像作为后续模块的输入图像(“base images”),另外诸如课程学习(curriculum learning)和多级监督(multi-supervision)等学习策略也可以被引入进来,这类方法可以降低学习难度,特别是在大的超分倍增系数时。另外,在多尺度超分问题上也可以减少参数量和耗时。
升降采样迭代式超分网络,借鉴了反向投影(back-projection)的思想,通常会交替地使用升采样和降采样层,最终重建的高分辨率结果会用到之前全部中间层得到高分辨率特征图,这类方法的思想刚被引入图像超分问题不久,已经取得了非常好的性能和效果,有很大的潜力,值得关注和探索。
2. 可学习的升采样方法
转置卷积(transposed convolution),也就是所谓的反卷积(deconvolution),相当于正常卷积的反向操作,可以嵌入到端到端的网络结构中,但是容易产生棋盘格效应。
-
亚像素(sub-pixel)卷积,同样可以嵌入到端到端的网络结构中,使用正常的卷积结构,但是输出的通道数(channel)与目标分辨率有关,随后对这些通道进行“洗牌”(shuffle)操作,类似于像素重排,得到与目标分辨率相同的输出。亚像素卷积与转置卷积相比,最大的优势在于神经元的感受野较大,可以为超分辨率重建提供更多上下文信息,但是这些神经元感受野的分布是不均匀的,像素“洗牌”操作中同一个小块状区域(blocky region)的感受野相同,容易在一些边缘区域产生伪影现象。
3. 全局和局部网络结构设计
残差学习(residual learning),在ResNet被提出之前,在超分领域对残差进行学习的思想已经在很多研究工作中出现。其中,全局残差学习(global residual learning)只是学习插值后得到的图像和高分辨率图像之间的残差,通过学习一张残差图来恢复高频细节;而局部残差学习(local residual learning)则类似于ResNet中的短连接(shortcut connection)。
递归学习(recursive learning)可以不引入额外参数的同时,大大增加网络的感受野,做法就是递归地多次使用同个模块,例如对同一卷积层递归使用多次,还有将大的超分倍增系数的问题,分解成多个子问题,使用递归的网络子结构来解决等等。但是,递归学习容易出现梯度消失和爆炸的问题,需要将残差学习和多级监督等策略融入进来以减轻这些问题。
多支路学习(multi-path learning)主要思路是为网络设计多条支路来提升模型的容量和表达能力,分为全局多支路学习(global multi-path learning)、局部多支路学习(localmulti-path learning)、尺度相关的多支路学习(scale-specificmulti-path learning)等
稠密连接(dense connections),是与DenseNet紧密联系的,稠密连接被引入图像超分问题,不仅可以减轻梯度消失的问题,还可以对特征进行重用,提升效果,在使用小的增长率(growth rate)时,可以很好地控制参数量,目前越来越受到关注和使用。
通道重缩放(channel attention)是考虑特征表达中不同通道之间的关系,通常是引入一些额外的小结构来按通道(channel-wise)进行重缩放(rescale)。
高级卷积结构(advanced convolution),近来受到关注的主要是空洞卷积(dilated convolution)和成组卷积(group convolution)两种。
像素递归学习(pixel recursive learning),这类方法是逐像素生成(pixel-by-pixel generation)高分辨率图像的,可以更好地捕获全局上下文信息和像素序列生成时的相关性,但是计算代价很高,同时训练也比较复杂。
金字塔池化(pyramid pooling)通常使用多个不同的尺度参数,来聚合全局和局部上下文信息。
小波域变换(wavelet transformation)分别对高分辨图像和低分辨率图像进行小波变换,在不同的子频带(sub-bands)进行映射学习。
4. 损失函数设计
像素级(pixel loss),主要比较两幅图像像素级的差别,包括L1和L2损失,近来研究表明L1损失可以取得更好的性能和收敛速度。这类损失没有对图像内容和语义进行评价,通常会产生过于平滑的超分结果。
内容损失(content loss),主要是从图像内容理解和感知层面对图像质量进行评价,通常使用预训练好的图像识别(如VGG和ResNet等)网络,比较中间某些层的特征图之间的欧式空间距离。
纹理损失(texture loss),想法来源于风格迁移工作中,重建图像应该与原始图像有相同的风格(颜色、纹理、对比度等)。因此,纹理损失又称为风格重建损失(style reconstruction loss),一般使用不同特征通道的相关性来度量。
竞争生成损失(adversial loss),随着GAN的兴起,竞争生成网络中生成器和判别器的思路被引入超分问题,超分网络即是生成器(generator),另外定义一个判别器来判断输入的图像是否为生成的。在这种损失函数中,也可以借鉴内容损失的想法,判别器使用图像的高层表达来进行判断。
往复一致性保持损失(cycle consistency loss),受CycleGAN的启发,通常是在两阶段生成时,保持再次生成的图像和原始输入相同。
全变分损失(total variation loss),主要是为了抑制生成图像中的噪声,一般定义是相邻像素之间差的绝对值,引入全变分损失可以使图像变得平滑。
基于先验知识的损失(prior-based loss),通过一些外部已知的先验,作为一些约束放入损失函数,例如人脸超分对关键点的约束等。
5. 批归一化
批归一化(BatchNormalization,BN)层在很多视觉任务中被验证有效,但是在最近关于超分中使用BN层存在一些争议,部分研究者指出使用BN层会丢失图像的尺度信息和网络参数的自由范围变化,导致超分效果下降。
6. 课程学习
课程学习(curriculumlearning)从简单的子任务开始逐渐增加难度,因为图像超分问题存在很多困难情形,如大的超分倍增系数,噪声,模糊等,这种从易到难的策略可以起到很大帮助。例如,可以将8x的超分问题分解成三个子问题,1x到2x,2x到4x,4x到8x,为每个子问题单独学习一个网络。
7. 多级监督
多级监督(multi-supervision)为网络的学习增加多个额外的监督信号,可以有效减轻梯度消失和爆炸问题,例如在递归式结构中就可以使用多级监督策略,对每一级递归产生的结果进行监督,通常多级监督的表现形式是在损失函数里添加了若干相关项。
8. 其他网络设计和学习策略
上下文融合网络(context-wise network fusion,CNF),将多个超分网络模型的结果使用stacking的策略融合起来。
数据增强(data augmentation),常见的随机裁剪、翻转、缩放、旋转、颜色微小抖动等,最近也出现了随机打乱RGB三个通道的方法。
多任务学习(multi-task learning),通过训练数据中和超分相关联的任务蕴含的专有领域的信息来提升模型的泛化性能。例如可以分别训练一个去噪网络和一个超分网络,或者嵌入预训练好的语义分割网络来提供语义信息等。
网络插值(network interpolation),为了平衡视觉质量和图像保真度,可以对两个网络相应参数进行插值,来生成中间模型,不需要重训练就可以得到折中的超分结果。
图像自融合(self ensemble),又称预测增强(enhanced prediction),将一张图像多种旋转角度后,得到一组图像,分别得到超分辨图像,然后逆旋转回到原始角度,将所有这组超分辨率图像进行加权平均或者取中值,得到最终的超分结果。
9. 无监督图像超分辨率
监督学习的图像超分辨率,基本上是学习了人为设计的图像降质过程的逆过程,需要LR-HR的图像对(image pairs),与实际场景中的图像超分问题不太符合。实际中的超分问题,只有不成对(unpaired)的低分辨率和高分辨图像可以用来进行训练。无监督的图像超分辨率也受到越来越多关注。
- 零样本学习的图像超分
考虑到图像自身内容就可以为超分提供统计信息,因此,可以不用在大数据集上训练一个普适超分模型,而是在测试阶段训练一个专有图像的超分网络,比如可以使用核估计(kernel estimation)的方法在单张测试图像中估计降质过程,但是这类方法每张图像测试时都需要学习一个网络,非常耗时。
- 弱监督学习的图像超分
近来弱监督学习的图像超分主要有两类方法,一类是学习HR到LR的降质过程,一类是同时学习LR到HR,HR到LR这种往复的映射(cycle-in-cycle)关系。
- 深度图像先验
深度图像先验(DeepImage Prior)目前主要是使用随机初始化的CNN作为手工设计的先验去进行超分。
10. 超分在专有领域的应用
目前图像在专有领域的超分,主要有深度图像超分、人脸图像超分、高光谱图像超分、视频图像超分、检测分割中的小物体超分等。
发展趋势
下面从超分网络结构设计、学习策略、评价指标、无监督学习、实际场景等几个方面,来阐述一下图像超分领域的发展趋势。
1. 网络结构设计
融合局部和全局信息
融合底层和高层信息
不同上下文信息区别对待的注意力机制
轻量化网络结构
升采样层的改进
2. 学习策略
精确表达图像差异的损失函数设计
适合图像超分的归一化方法
3. 评价指标
全面评价超分图像质量的主客观统一指标
无参考图像的图像质量评价
4. 无监督的图像超分
- 不成对的低分辨率和高分辨图像之间的降质过程进行学习,而不再使用人工设计好的降质过程去生成低分辨率和高分辨率图像对。
5. 实际场景中的图像超分
适应多种多样的降质过程
专有领域图像超分的应用
任意尺寸缩放的图像超分