0、基础知识
像素(pixel)----像素是指由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。
是指在由一个数字序列表示的图像中的一个最小单位。
图像分辨率(Resolution)----单位英寸中所包含的像素点数。
1、Image Super-resolution的问题定义
给定一张低分辨率的图像(low-resolution image),通过计算机视觉中的方法、模型将其恢复成一张高分辨率的图像(high-resolution image),要求恢复后的高分辨率图像要尽可能真实。
2、问题的形式化
其中大部分的SR模型采用的Loss Function是pixel-wise mean squared error(像素均方误差)。
3、数据集
有些提供HR-LR图像对,有些只提供HR图像,这时使用退化映射函数生成相应的 LR 图像。
退化映射函数通常用matlab的双三次采样插值与抗反锯齿(bicubic interpolation with anti-aliasing)
4、图像质量评估(Image Quality Assessment )
从大的方面可以分为主观方法和客观方法两类。主观方法就是请人对模型生成的 HR 图像进行打分,客观方法就是给出一套计算公式或模型来对模型生成的 HR 图像质量进行量化。
主观方法的优势在于评价标准与人的感知一致,大部分的应用中 image super-resolution 的结果还是要给人看的,最好的 image super-resolution 模型生成的 HR 图像应该让人无法分辨出合成的痕迹;但是主观方法的劣势同样明显,不仅费时费力,而且请不同的人来打分偏差和方差都很大。客观方法的优势在于其确定性和省时省力,劣势在于与人的感知存在偏差。
4.1 客观方法(the objective IQA methods )
Structural Similarity:
PSNR 只关心像素级的差异,但是人类视觉系统对从图像的结构信息也很敏感。SSIM 和 MSSIM 分别从全局和局部评价两个图像的结构相似性。
SSIM 和 MSSIM 同人类视觉的感知更一致,也被广泛应用于 image super-resolution 模型的评价中。SSIM 和 PSNR 是评价 image super-resolution 模型的最常用的两个标准。
4.2 主观方法
Mean Opinion Score
4.3 基于任务的评价方法
基于任务的评价方法借助于其他计算机视觉任务的模型对 image super-resolution 的结果进行评价。例如,我们把 image super-resolution 模型生成的 HR 图像和 ground truth 一起送入一个图像分类的模型中,两者对于分类器分类结果的影响大小,可以作为两者差异的评价标准。我们也可以使用目标检测、语义分割、人脸识别等其他计算机视觉任务来进行评价。
基于任务的评价通常只关注特定的任务,对于图像的性质有所偏好。如果这种偏好与 image super-resolution 模型要解决的任务具有类似的目标,通常会带来积极的效果。例如,我们使用人脸识别任务来评价一个 image super-resolution 模型的表现,而这个 image super-resolution 模型恰好用于提升监控视频的分辨率。
4.4 其他的 IQA方法
MS-SSIM、IFC、VIF、FSIM 等。
5 监督学习方法
尽管各种监督学习的 image super-resolution 方法千差万别,但是归结起来,它们都是由不同的模型框架、上采样方法、网络设计、学习策略组合而成的。下面分别从这几个方面总结这些方法的不同。
5.1 模型框架
这里的模型框架指的是模型是如何进行上采样的,可以分为四类方法:pre-upsampling、post-upsampling、progressive upsampling 和 iterative up-and-down sampling。
Pre-upsampling 方法,具体而言,使用传统方法(例如,双三次插值)将LR图像上采样为具有所需大小的粗略HR图像,然后将深CNN应用于这些图像以重建高质量的细节。Pre-upsampling方法的优势在于,上采样由传统算法完成,深度学习方法只需对粗糙的结果进行完善,降低了深度学习模型的学习难度。Pre-upsampling 方法的劣势是:第一,传统上采样方法会带来很多的副作用(例如,放大噪声、模糊);第二,深度学习方法需要一直处理高分辨率图像,增加了网络的规模和计算量,使得这一类方法通常比其他方法要慢得多。
Post-upsampling 方法首先将 LR 图像送入卷积神经网络中进行学习,在网络的最后加入一个可学习的上采样层生成最终的 HR 图像。Post-upsampling 充分利用了深度学习模型的学习能力,卷积神经网络大部分时间都在处理低分辨率的图像或特征,大大节省了计算效率,提高了训练和推理的速度。但是,只通过一个可学习的上采样层学习 LR 特征到 HR 图像的映射,大大增加了在上采样因子较大情况下的学习难度。
Progressive upsampling 方法在上采样因子大于 2 的情况下,把上采样过程分解为了多个步骤,单个子网络的上采样因子为 2。这样的策略可以降低学习的难度,在上采样因子较大的情况下获得更好的结果,而且可以同时进行多尺度的上采样学习。另外,progressive upsampling 可以非常方便地与一些特定的学习策略相结合,例如 curriculum learning 和 multi-supervision,使模型的性能获得进一步提高。
Iterative up-and-down sampling 方法为了更好地获得 LR-HR 对之间的相互依赖关系,在网络中对特征进行采样,重建,然后利用重建结果的错误对采样结果进行改善。例如下图中的 up-projection unit 中,先对 LR 特征 进行上采样得到
,然后对
进行下采样卷积得到
的重建
,求
与其重建结果之间的差
,利用对
进行反卷积的结果对
进行改善。Iterative up-and-down sampling 方法能够挖掘 LR-HR 对之间的深层关系,提高重建结果的质量,但是其机制上不清楚,且需要复杂的人工设计。
5.2 上采样方法
第一类是基于插值的方法,主要包括 nearest-neighbor interpolation、bilinear interpolation、bicubic interpolation。基于插值的方法只根据图像的局部内容进行计算,无法利用图像的语义信息,而且会带来很多副作用(例如计算的复杂性、噪声放大、模糊)。
(抗锯齿的BCI是构建SR数据集的主流方法。(将HR图像分解为LR图像),并广泛应用于SR预采样框架中)
第二类方法是基于学习的方法,主要包括反卷积法和 sub-pixel layer。基于学习的方法可以进行端到端的训练学习。但是,反卷积方法也有自己的问题,can easily cause "uneven overlapping" on each axis, and the multiplied results on both axes further create a characteristic checkerboard-like pattern of varying magnitudes and thus hurt the SR performance。Sub-pixel layer 相对于反卷积法,可以获得更大的感受野,能够根据更多的 contextual information 来获得更准确的细节。Nevertheless, the distribution of the receptive fields of sub-pixel layers if uneven, blocky regions actually share the same receptive field, which may result in some artifacts near the boundaries of different blocks.
5.3 网络设计
网络设计是目前深度学习模型的重要部分。Image super-resolution 模型中也引入了许多先进的卷积神经网络设计思想,主要包括:残差学习,递归学习,多路径学习,密集连接,通道注意力机制,高级卷积,像素递归学习,金字塔池化,小波变换。
残差学习(Residual Learning)
包括全局残差学习(globe)和局部残差学习(local)两种方法,通常通过shortcut connection和element-wise addition来实现。残差学习可以降低网络训练的难度。
递归学习(Recursive Learning )
为了获得更大的感受野和更抽象的特征,同时不过度增加参数数量,同一网络模块以递归的方式重复使用多次被引入到了 image super-resolution 模型中。但实践中,递归学习会同时带来梯度消失和梯度爆炸问题,因此残差学习、multi-supervision 等方法通常会和递归学习结合使用。
多路径学习:(Multi-path Learning)
多路径学习指的是通过多个路径把特征在模型中传递,每个路径上采用不同的操作,这样可以增加模型的容量。多路径学习可以分为全局多路径学习、局部多路径学习、特定尺度多路径学习。
密集连接(Dense Connections)
将 DenseNet 运用到 image super-resolution 中。
DenseNet中的每一个密集块,之前所有层的特征映射都作为输入,从而低级特征和高级特征融合提供更丰富的信息来重构高质量的图片。密集连接可以缓解梯度消失,提高信号传递和特征重用,减小模型规模。
通道注意力机制(channel attention Mechanism)
squeeze-and-excitation 运用到 image super-resolution中。
高级卷积(Advanced Convolution)
空洞卷积(Dilated Convolution)替代普通卷积增大感受野。组卷积(Group Convolution)代替普通卷积减少模型参数数量。
像素递归学习(pixel recursive learning)
许多 image super-resolution 模型把问题建模为一个像素之间相互独立的任务,没有充分利用像素间的相互依赖关系。像素递归学习收到图像分割中的 PixelCNN 模型的启发,通过递归学习逐像素生成 SR 图像。
虽然像素递归学习能够在一定程度上提高模型的表现,但是递归过程增大了反向传播路径,增加了计算开销和训练的难度,尤其是对于生成高分辨率的 HR 图像更是如此。
金字塔池化:(Pyramid Pooling )
使用金字塔池化来获得不同尺度的 contextual information,以提升模型的表现。
小波变换:(Wavelet Transformation)
小波变换可以将图像分解为高频信号和低频信号,高频信号代表全局的拓扑信息,低频信号代表纹理细节信息。第一类使用小波变换的 image super-resolution 模型通过小波变换将 LR 图像分解为子频带,然后从 LR 图像的低频信号学习出HR 图像的低频信号,从 LR 图像的高频信号学习出 HR 图像的高频信号,然后利用小波反变换恢复出 HR 图像。 第二类使用小波变换的 image super-resolution 模型将 LR 图像小波变换后的信号作为卷积神经网络的输入,以期望能够更好地学习 LR 图像低频信号和高频信号之间的依赖关系。
5.4.1 Loss Functions
Pixel Loss:
直接计算输入的 HR 图像与 ground truth 之间对应像素的不同。主流的两种方法为 L1 Loss(mean absolute error)和 L2 Loss (mean square error)。与 L1 Loss 相比,L2 Loss 惩罚较大的像素差而容忍较小的像素差。在实践中,使用 L1 Loss 比使用 L2 Loss 能获得更好的性能和收敛。
因为 pixel loss 与最常用的 IQA 方法 PSNR 直接相关,所以成为了最广泛使用的损失函数。但是,pixel loss 与 PSNR 一样,未考虑像素之间的相互依赖关系和人类真实的视觉感受,所以使用 pixel loss 进行训练的模型最终生成的 HR 图像也会存在各种各样的失真问题。
Content Loss:
将模型输出的 HR 图像和其对应的 ground truth 输入到一个提前训练好的分类模型中,计算两者在分类模型中的高层特征之间的差异。
content loss 能够将分类模型中的学习到的高层图像特征表示迁移到 image super-resolution 模型中。不同于 pixel loss 追求每一个像素的精确匹配,content loss 追求输入的 HR 图像与 ground truth 之间在感知上的相似性。因此 content loss 能够生成视觉感知效果更好的结果。
Texture Loss:
将图像风格迁移中的 texture loss 运用到 image super-resolution 模型中。
Adversarial Loss:
一言以蔽之,将 image super-resolution 模型当做 GAN 的生成器,使用 GAN 中常见的损失函数和训练方法。优点同 content loss 相同,能够生成视觉感知效果更好的结果。GAN 有的缺点也全都存在,比如训练不稳定。
Cycle Consistency Loss:
一言以蔽之,将 CycleGAN 引入 image super-resolution 领域。
Total Variation Loss:
一言以蔽之,可以用来压制噪声,获得更平滑的结果。
Prior-Based Loss:
将特定应用领域的先验知识引入到损失函数的计算中。
以上损失函数各自的优缺点分明,实践中往往把多个损失函数结合起来和稀泥。但是怎么和好这个稀泥仍然是一个 open problem。
5.4.2 Batch Normalization
对每个微型批处理执行归一化,并为每个通道训练两个额外的转换参数以保留表示能力。也有人认为BN会损失尺度信息
5.4.3 Curriculum Learning
Curriculum learning 是 Bengio 大神提出的方法,一句话概括就是机器学习模型的学习过程也要像人类一样从易到难。假设我们要解决一个 8x 的 image super-resolution 问题,直接训练这样的模型非常困难,我们不妨先训练得到一个 2x 的模型,然后在此基础上 fine-tune 出一个 4x 的模型,最后在 4x 的模型的基础上 fine-tune 出最终的 8x 模型。
同一般的训练过程相比,curriculum learning 可以大大降低训练的难度,减少训练的时间,提高模型在所有尺度上的表现。
5.4.4 Multi-supervision
除了在模型的最后设置一个监督信号,还可以使用 Multi-supervision 方法在模型中增加多个监督信号。例如,我们要解决一个 8x 的 image super-resolution 问题,我们不仅可以在模型的损失函数中计算最后的输出结果与 ground truth 之间的差异,还可以计算模型的中间结果 (4x 的中间结果、2x 的中间结果)与其对应的 ground truth 之间的差异。
Multi-supervision 可以增加额外的反向传播路径,从而缓解梯度消失和梯度爆炸问题,减小训练的难度。
5.5 其他提升方法
5.5.1 Context-wise Network Fusion
训练不同的模型,然后使用一个卷积层对各个模型的输出结果进行集成。
5.5.2 Data Augmentation
随机剪切、翻转、尺度变换、旋转、色彩抖动、通道随机抖动等。
5.5.3 Multi-task Learning
与相关的其他视觉任务一起训练。
5.5.4 Network Interpolation
基于 PSNR 的 卷积神经网络模型和基于 GAN 的模型各有优缺点,简而言之就是将两者的结果进行勾兑,以达到取其精华去其糟粕的效果。
5.5.5 Self Ensemble
通过旋转不同角度得到多个 LR 图像作为输入,得到多个旋转角度不同的 HR 图像,将它们集成起来作为最终结果。