2020 图像超分最新综述及上采样技术一览
作者丨科技猛兽编辑丨极市平台
极市导读
本文对超分网络的数据集,常用的4种框架,上采样的方法,训练策略等进行了综述,同时详细解读了如何在多个金字塔级别上逐步重建高分辨率图像以及如何同时设计渐进式的超分网络架构和训练策略。>>加入极市CV技术交流群,走在计算机视觉的最前沿
目录
Literature Review for Super Resolution
综述超分网络的数据集,常用的4种框架,上采样的方法,训练策略等等。
渐进式方法1:Laplacian金字塔超分辨率网络
如何在多个金字塔级别上逐步重建高分辨率图像。
渐进式方法2:ProSR:完全渐进式超分辨率网络
如何同时设计渐进式的超分网络架构和训练策略。
1 Literature Review for Super Resolution
1.1 超分问题的定义
超分任务是从给定的低分辨率(LR)图像中恢复高分辨率(HR)图像的过程, 我们使用LR来代表低分辨率图像,HR代表高分辨率图像。那么,对这个高分辨率图像做一步操作 来得到低分辨率图像:
上面这个式子把高分辨率图像通过退化映射函数degradation mapping function变成了低分辨率图像, 代表超参数或者噪声。但是在多数情况下, 的具体形式都是未知的,只有LR是已知的。具体来说, 这个退化过程也受很多因素的影响:压缩伪影,各向异性退化、传感器噪声和散斑噪声等等,但是我们在对 建模的时候,一般采用最原始的downsampling操作,如下式所示:
其中, 为比例因子为 的降采样操作,最常用的降采样操作是双三次插值,也有其他方法将退化映射建模为几个操作的组合:
其中, 代表模糊kernel,代表模糊核 与HR图像之间的卷积操作。 为可加的带标准差 的高斯白噪声,3式与2式相比,更接近实际情况,对SR更加有利。
此时,我们需要得到高分辨率图像的真值的近似估计(HR approximation) :
这里的 代表超分模型, 代表模型参数。
因此,SR的目标函数为:
其中,损失函数为逐像素差的均方误差, 是正则化项,更强大的模型往往采用将多种损失函数相结合的方式, 下文会详细地介绍。
1.2 超分问题的数据集
如下表所示:
超分问题常见数据集
除了上述数据集以外,还有许多常见的数据集也能应用在超分任务中,它们是:ImageNet,MS-COCO , VOC2012 , CelebA 等。另外,在训练超分网络时我们也常常需要结合多个数据集一起训练,比如 T91 和 BSDS300,结合DIV2K 和 Flickr2K。
1.3 超分问题的质量评估方法
图像质量是指图像的视觉属性,主要关注对观众的感知评价。一般来说,图像质量评估方法包括基于人类感知的主观方法(即图像看起来有多逼真)和客观计算方法。前者更符合我们的需要,但往往费时费钱,因此后者是当前主流。然而,这些方法并不一定相互一致,因为客观方法往往不能非常准确地捕捉人类的视觉感知,这可能导致IQA结果的巨大差异。
大概可以分为3个类别:
full-reference methods:利用相关的图片评价
reduced-reference methods:利用提取的特征评估
no-reference methods:blind IQA,不使用相关的图片
1. 峰值信噪比 Peak signal-to-noise ratio (PSNR):
峰值信噪比(PSNR)是一种常用的客观指标,通常用来衡量有损变换(比如image compression, image inpainting)的图像质量。
对于超分任务,PSNR是通过通过图片间的最大像素值 和图像之间的均方误差 定义,PSNR与ground truth图像与生成图像的均方误差(MSE)的对数成反比。假设HR图像 和重建图像 ,两者的像素都是 ,PNSR(db)的计算方法如下所示:
如果8bit表示一个像素点的取值,那么 应取为255,因为这时像素点的取值的范围在0-255之间。PSNR的典型值从20到40不等,越高越好。值得注意的是,当 一定时,PNSR只与像素间的MSE有关,所以,PSNR只关心像素值之间的差异,它并不能很好地代表感知质量。它往往导致在真实场景中效果较差,但由于缺乏感知衡量标准,运用最为广泛。
2. 结构相似度 SSIM
结构相似度(SSIM)是想要衡量图像之间的结构相似性,包括亮度、对比度和结构这三个方面。
假设HR图像 和重建图像 ,两者的像素都是 ,我们先定义图像的均值和方差:
亮度的对比计算为:
对比度的对比计算为:
结构的对比是通过归一化的像素值实现的:
SSIM公式可以表示为亮度、对比度和结构比较的加权乘积,分别计算。
式中, 分别为亮度、对比度和结构比较函数的权重。C1, C2是设置的常量,避免计算的不稳定。SSIM从HVS的角度来评价重建质量,更符合视觉感知,被广泛应用。
由于图像统计特征可能分布不均或失真,局部评估图像质量比全局更可靠。均值SSIM (MSSIM)是一种局部评估质量的方法,它将图像分割成多个窗口,并对每个窗口获得的SSIM进行平均。
3 Mean Opinion Score
直接由人来打分,分数在1-5之间。
1.4 超分网络的4种框架
图像超分辨率是一个ill-posed problem(病态问题),超分网络离不了上采样,上采样在超分网络中是非常关键的一点,但是上采样的时机,次数,以及方式千变万化。尽管现有模型的体系结构差异很大,但基于所采用的上采样操作及其在模型中的位置,它们可以归属于四个模型框架(如下图1所示)。
以往的超分模型可以归结为以下4类:
图1:超分框架
立方体代表的是输出的大小,虚线框中的表示可堆叠的块。绿色块代表可学习的上采样块,黄色块代表下采样的块,蓝色块代表一般卷积。
1 Pre-upsampling Super-resolution:
图2:Pre-upsampling Super-resolution
这种方法考虑到了直接学习低分辨率图像到分辨率图像的困难,所以采用传统的上采样方法(双线性插值法,双三次插值法) 先将图像直接上采样到高分辨率,再利用深度神经网络进行精调。具体而言,LR图像被使用传统方法上采样到粗糙的HR图像,然后CNN应用到这些粗糙的HR上面,用于重建高质量细节的图像。典型的工作是:
董超老师SRCNN:TPAMI 2015: Image super-resolution using deep convolutional networks
ICCV 2015: Deep networks for image super-resolution with sparse prior
VDSR ICCV 2016: Accurate image super-resolution using very deep convolutional networks
DRCN CVPR 2016: Deeply-recursive convolutional network for image super-resolution
DRRN ICCV 2017: Image super-resolution via deep recursive residual network
这种方法的优点是:
因为最困难的上采样操作交给了传统方法来解决,深度神经网络只需要来对粗糙的生成图片进行精调,所以说大大降低了训练的难度。
这种做法可以得到任意大小的HR图片,处理任意维度的LR图片,并灵活调节超分任务的scale factor。
这种方法的缺点是:
传统的上采样操作会带来很多副作用,比如噪声放大和模糊的问题。
增加了不必要的计算成本,并且不提供用于重建高分辨率图像的附加高频信息。
2 Post-upsampling Super-resolution:
图3:Post-upsampling Super-resolution
这种方法的提出是为了解决Pre-upsampling Super-resolution的计算成本太高的问题,并充分发挥深度学习的优势,Post-upsampling的做法希望把主要的计算任务放在在低分辨率的位置,把上采样的操作放在模型的最后方。并把上采样的操作换成可学习的层。典型的工作是:
CVPR 2016: Real-time single image and video super-resolution using an efficient sub-pixel convolutional neural network
CVPR 2017: Enhanced deep residual networks for single image super-resolution
ECCV 2016: Accelerating the super-resolution convolutional neural network
这种方法的优点是:
大量的计算在低分辨率的空间进行,这样可以提高计算的效率。
这种方法的缺点是:
上采样仅在一个步骤中执行,那么当放大倍数比较大时(4,8),极大地增加了学习难度。
每一种放大因子都需要训练一个独立的模型,无法满足多尺度超分任务的需求。
3 Progressive upsampling Super-resolution:
为了解决Post-upsampling Super-resolution的问题,后人开始尝试渐进式地进行上采样,也就是本文所介绍的主题。具体而言,该框架下的模型是基于深度卷积神经网络的级联,并逐步重建高分辨率图像。该方法一般分几个阶段,在每个阶段,图像被上采样一次,得到更高的分辨率,并且后面接上CNN做一次精调。典型的工作是:
CVPR 2017: Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution
TPAMI 2018: Fast and accurate image super-resolution with deep laplacian pyramid networks(上篇的扩大版)
CVPR 2018: A Fully Progressive Approach to Single-Image Super-Resolution
这种方法的优点是:
通过把复杂的上采样任务分解为几步进行,渐进式操作减少了学习的困难,尤其是在上采样比较多的情况。
这种方法的缺点是:
多阶段上采样导致模型的设计复杂,存在很多种不同的情况,以及训练稳定性的问题。
需要更加复杂,先进的训练策略和指导(详见后文介绍的2篇工作)。
4 Iterative Up-and-down Sampling Super-resolution:
为了更好地捕捉LR-HR图像对的相互依存性,也有学者使用了back-projection的操作,即:迭代地在上采样之后进行back-projection操作并精调 (refinement),通过计算reconstruction error来调整HR 图像。
比如,DBPN通过交替连接上采样层和下采样层,并使用所有intermediate reconstruction来重建最终的HR结果。SRFBN采用迭代上下采样feedback block,这些feedback block包括更密集的跳跃连接,以学习更好的表示。主要的工作有:
DBPN CVPR 2018: Deep back-projection networks for super-resolution
SRFBN CVPR 2019: Feedback network for image super-resolution
RBPN CVPR 2019: Recurrent back-projection network for video super-resolution
该框架下的模型能够更好地挖掘LR-HR图像对之间的深层关系,从而提供更高质量的重建结果。然而,back-projection的设计标准仍然不清楚。由于该机制刚刚被引入到基于深度学习的SR中,该框架具有很大的潜力,需要进一步探索。
对比:
图4:各类方法的结构对比,a,c,d属于1类模型;b属于2类模型;e属于3类模型
1.5 常见的上采样方法
1.5.1 插值法:
上采样是超分网络中最关键的操作,主要有传统的基于插值的算法和基于深度学习的上采样方法。传统的上采样技术包括最近邻插值和双线性插值等等。
最近邻插值:每个待插值的位置选择最相邻的像素值,而不考虑其他像素,这种策略很直觉,它的优势是:处理速度快。但缺点是:生成图片质量低、块状化。
双线性插值:首先对图像的一个轴进行线性插值,然后在另一轴上执行,如图3所示。 感受野为2*2,且保持速度较快。
双三次插值:首先对图像的一个轴进行三次插值,然后在另一轴上执行,如图3所示。使用4x4的像素进行计算,与双线性插值相比,得到的图片质量更平滑,但速度更慢。anti-aliasing的双三次插值是目前构造SR数据集的主流方法。
事实上,基于插值的上采样方法仅基于图像的本身内容提高图像的分辨率,不带来任何更多的信息。但是,还会引入许多的副作用:计算复杂度增加,噪声增强,模糊等等。
1.5.2 可学习的上采样方法:
转置卷积层
为了克服基于插值方法的缺点,端到端地学习上采样,在SR领域引入了转置卷积层。
转置卷积
转置卷积(transpose convolution),也叫反卷积 (deconvolution),先对低分辨率图像插入0值,再通过卷积 (kernel=3,stride=1,padding=1) 的过程获得输出。转置卷积的方法在超分任务里面广泛应用。然而,很容易在每个轴上引起“不均匀重叠”,并且两个轴上的相乘结果进一步创建了大小变化的棋盘状图案,从而损害了SR性能。
亚像素层sub-pixel layer
亚像素层
核心思想是通过卷积操作产生大量的channel之后,再通过reshape得到最终的输出。比如说要上采样 倍,那么就需要先得到 个不同的channel。设输入的维度是 ,则输出的维度是 。接下来进行一步reshaping的操作(比如shuffle)把特征最终变为: 。亚像素层的方法在超分任务里面广泛应用。
与转置卷积层相比,亚像素层具有更大的感受野,它提供了更多的上下文信息以帮助生成更多逼真的细节。然而,由于感受野的分布是不均匀的,并且块状区域实际上共享相同的感受野,因此可能会导致在不同块的边界附近出现一些伪影,也可能会导致不平滑的输出结果。
Meta upscale module
Meta upscale module
上述方法需要预先定义缩放因子 (scale factor),即针对不同的因子训练不同的上采样模块,效率低下,因此不符合实际需要。具体来说,使用RDN (residual dense network)作为超分网络,RDN网络结构包含3个卷积层以及16个residual dense blocks (RDBs) ,RDB结构如上图所示,每个RDB包含8个卷积层,channel数为64。
利用Feature Learning Module提取特征,假设上采样尺度因子为,对HR图像中的每个像素点的值,都由中的像素点和相对应的卷积核决定。
因此,首先,up-scale module需要将与对应,然后利用一个特殊的卷积核,根据 的值求得HR图像中位置的像素值。up-scale formulate如下:
其中,代表feature mapping function用来计算pixel value。代表计算SR中像素点时的卷积核。本文提出了基于尺度因子和坐标的Meta-Upscale Module来动态预测权重 。Meta-Upscale Module由三个重要的模块组成:Location Projection, Weights Prediction以及Feature Mapping。
Location Projection 就是对于HR图像中的每个像素点 , 均需找到 中的一个像素点与之相对应,即: 。
Weights Prediction是利用一个网络预测上采样网络的权重。 对于传统的可学习的上采样方法,不同的尺度因子都有与之对应的、从训练集中学到的卷积核。但是,本文的Meta-Upscale Module利用神经网络来预测weights。
Feature Mapping:在得到、利用weight prediction network得到卷积核后,要做的最后一件事情就是将权重作用在feature map上面,即:mapping feature to the value of the pixel on the HR image。公式如下:
总结下这种方法的思路:
对于HR图像上的每个目标位置,此模块将其投影到LR特征图上的一个小块( ),根据密集层的projection offsets和scale factor预测卷积权重 ( )并执行卷积。使用这种方式,Meta upscale module可以通过单个模型实现连续放大。并且由于有大量的训练数据,该模块在固定放大倍数上可以表现出相当甚至更好的性能。首次通过动态预测权重 (dynamically predict weights),实现了单一模型对输入图片进行任意尺度的上采样。
如今,这些可学习的上采样方法已成为应用最广泛的上采样方法。特别是在Post-upsampling Super-resolution框架中,这些图层通常用于最终上采样阶段,基于低维空间提取的高层表示重建HR图像,从而在避免高维空间的巨大的计算量的情况下,实现端到端的SR。
1.6 常见的网络架构设计
1.6.1 Residual Learning
全局残差学习:
只学习两幅图像的残差,这样就避免了学习完整图像到另一个完整图像之间复杂的变换,简化了任务难度。神经网络只需要学习丢失的高频细节信息即可。
局部残差学习:
是ResNet网络的技巧,提出的目的是为了解决网络的梯度消失、梯度爆炸的问题,增强网络的学习能力。主要由skip-connnection和逐像素加法进行计算,前者连接输入与输出,后者在不同网络层之间进行连接。
1.6.2 Recursive Learning
模块设计的主要目的是:减少网络的参数量以及实现更大的感受野。具体做法是:将递归引入模型,多次使用相同权重的模块,这些模块之间是参数共享的。
DRCN采用16次单卷积层递归,感受野达到41×41,远大于SRCNN的13×13,并且没有过多参数。
DRRN将残差块作为递归单元进行25次递归,性能优于17个残差块的baseline。
MemNet是基于记忆块而设计,记忆块由6个recursive ResBlock组成,每个递归的输出拼起来,再经过一个额外的1×1卷积进行记忆和遗忘。CARN也采用了包含多个残差块的递归单元。
CARN也使用了相似的几个ResBlock作为递归单元。
递归学习在不引入额外参数的情况下学习到更先进的表示,但并没有带来计算量的减少,同时ye也带来了梯度消失和梯度爆炸的问题。因此通常将残差学习和递归学习结合来缓解这些问题。
1.6.3 Attention Mechanism
在带有Attention Mechanism的block中,feature map的每个channel通过Global Average Pooling变成一个值,再经过2个FC层变成一个scale factor,与这个feature map相乘。
更进一步,Non-Local Attention是针对超分网络中感受野较小的问题,为了capture the long-range dependencies between pixels。具体使用一个主干分支提取特征,和一个non-local的mask分支与主干分支作用 (相乘)。local分支通常是个encoder-decoder的结构,输出作为attention使用。non-local的mask分支通过Gaussian Function或Embedded Gaussian Function(如下)来计算特征图中任意2个位置之间的pairwise relationships来输出scaling weights。如下图所示:
Non-local操作可以看成attention
Gaussian:
Embedded Gaussian: ,其中 和 为两个embedding。
1.6.4 Dense Connections
密集连接有助于缓解梯度消失、增强信号传播和鼓励特征重用。通过采用小增长率(growth rate,即密集块中的信道数)和在级联所有输入特征映射后对channel number进行压缩来极大程度地减少模型的大小。
1.6.5 Multi-path Learning
Multi-path Learning是指通过模型的多个路径传递特性,这些路径执行不同的操作,以提供更好的建模能力。具体来说,它可以分为以下3种类型:
Global Multi-path Learning:
全局多路径学习是指利用多个路径提取图像不同方面的特征。这些路径在传播过程中可以相互交叉,从而大大提高了特征提取的能力。
LapSRN
包含一种从粗到细预测子带残差的特征提取分支,以及信息重构分支用来重构HR图像。
同样,DSRN利用LR路径和HR路径分别在低维空间和高维空间中提取信息。这两条路径不断交换信息,进一步提高学习能力。
Local Multi-path Learning:
MSRN采用了一种新的多尺度特征提取块,如上图所示,在该块中,采用核大小为3×3和5×5的两个卷积运算同时提取特征,然后将输出拼接起来,再次进行相同的运算,最后再进行一个额外的1×1卷积。skip-connection通过elementwise加法连接输入和输出。通过这种局部多路径学习,SR模型可以更好地从多个尺度提取图像特征,进一步提高性能。
Scale-specific Multi-path Learning:
考虑到Local Multi-path Learning要经过相同的特征提取环节,后人直接在不同尺度上使用相同的特征提取过程,它们共享模型的主要部分。不同尺度的操作的区别在于一开始的pre-processing环节和最后的上采样环节,换句话讲,在网络的开始端和结束端分别附加特定尺度的预处理路径和上采样路径。训练时,只启用和更新所选比例对应的路径。通过这种方式,大多数参数可以在不同的尺度上共享。
通过这种方式,MDSR通过共享不同scale的参数极大地减少了模型参数,同时获得了single scale相似的性能。
1.6.6 Advanced Convolution
Dilated Convolution. 空洞卷积: 增大感受野,有助于生成逼真的细节
Group Convolution:分组卷积: 可以在little performance loss的情况下减少大量的参数和运算,而CARN-M在性能损失很小的情况下将参数数量减少了5倍,运算减少了4倍。
1.6.8 Pyramid Pooling
受空间金字塔池层的激励,提出了金字塔池模块,以更好地利用全局和局部上下文信息。
Pyramid的思路就是把不同size的feature concat在一起。对于尺寸是 的feature map,每个channel被划分成 块并通过GAP全局池化,生成 的结果。再通过 卷积把输出压缩为single channel。之后,再经过双线性插值把结果进行上采样到原来feature map的维度。当 变化时,模块结合全局和局部的上下文信息以提升性能。
1.7 常见的损失函数
损失函数用来测量生成的高分辨率图像与ground truth高分辨率图像之间的差异。然后用这个差(误差)来优化监督学习模型。早起研究人员使用pixel-wise的 损失,但后来发来不能准确地评估损失。因此出现了损失函数的改进:
Pixel Loss:
Content Loss:希望生成的图片从视觉上看更像是真实的图片
是特征提取网络,往往是分类网络,用来提取网络的高维特征。
content loss代表2副图像高维特征之间的欧氏距离。它把分类网络引入超分中,不再关注pixel之间的匹配,而是使生成的图片从视觉上看更像是真实的图片。
Texture Loss:希望重构的图片与原图有相同的风格
使用不同feature channel之间的相关性correlation来衡量。设feature map有 个channel,则:先使用19式计算Gram矩阵,这个矩阵的维度是 的:
这里的 指的是第 层的第 个channel。
Total Variation Loss:希望生成1的图片更平滑
利用Total Variation (TV)损失抑制生成图像中的噪声。它取相邻像素之间的绝对差值之和,并测量图像中有多少噪声。对于生成的图像,TV loss计算如下:
这里, 分别对高度,宽度和通道进行迭代。
Adversarial Loss:希望重构的图片与原图有相同的风格
基于GAN的超分网络的损失函数,我们一般把超分模型作为生成器,并且额外定义一个判别器来评价图像是不是真实的。SRGAN的GAN Loss是:
其中, 和 分别代表生成器和判别器的损失函数。
后人将其改进为least square error:
ESRGAN进一步使用了:relativistic GAN作为GAN Loss:
C为判别器的输出, 是sigmoid函数,ESRGAN取得不是判别器的输出,而是输出的相对值Ra。
值得注意的是尽管使用GAN Loss和content Loss的PSNR不如使用Pixel Loss的结果,但是这样做的生成图片的视觉效果会更优。
上面我们对超分任务进行了一个简单的综述,因为渐进式上采样的方法与其他方法在效果,实现难度上相比最优,所以在超分领域应用最为广泛。因此本文重点关注的是Progressive upsampling的工作,也就是对应上文的1.4的第3类方法。
2 渐进式方法1:Laplacian金字塔超分辨率网络
TPAMI 2018: Fast and accurate image super-resolution with deep laplacian pyramid networks (Ming-Hsuan Yang团队)
贡献:Laplacian金字塔超分辨率网络(LapSRN):
在多个金字塔级别上逐步重建高分辨率图像的子带残差。
利用recursive layer在金字塔级别之间和内部共享参数,从而大大减少了参数的数量。
这篇工作(MS-LapSRN)与作者之前的Deep Laplacian Pyramid Networks(LapSRN)相比,为了使结果进一步提升,作者加了3点改进,下文都会一一介绍:
Parameter sharing
Local skip connections
Multi-scale training
详细解读:
图5:Laplacian金字塔超分辨率网络(LapSRN)
模型由2部分组成,特征抽取分支和图像重构分支。
特征抽取分支:
图6:特征抽取分支
就是一堆用来提特征的CNN网络的级联;应用转置卷积层来进行上采样,后面再跟上卷积层来预测子带残差(上采样图片和GT之间的差异)。注意这里解释一下子带的含义,带其实是频带的意思,超分网络预测的其实是上采样图片和对应大小的GT之间的差异,而这个差异从低频到高频都有,每个频段都有,所以说超分网络模型其实是逐步地去预测这些差异的,具体来说就是浅层预测的是差异的低频部分,而深层预测的是差异的高频部分。
下面详细看下特征抽取分支的结构:
首先是一个卷积层 ,它的作用是把三维的输入转化为一个高维的特征。
接下来进入循环,循环的次数为 , 是放大倍数。
Feature embedding的作用是上采样之前的特征提取。
然后是转置卷积,即图中的Feature Upsampling,用来上采样,每次上采样2倍。
然后是转置卷积之后的卷积层 ,它的作用就是之前讲到的预测上采样图片和对应大小的GT之间的差异。
问: Feature embedding的结构是什么?
答: 在Deep Laplacian Pyramid Networks for Fast and Accurate Super-Resolution这篇工作中,作者使用的是CNN的堆叠。但是这样做的坏处是显而易见的:即参数的数量会随着上采样的数量成比例增长,所以作者使用了2种办法解决这个问题:
第1个办法:共享参数于不同尺度之间: 就是图6中的红色剪头,表示这些层都是共享参数的,以减少网络的Params。
第2个办法:共享参数于同一尺度内部: 比如说在scale=4的这个阶段,Feature embedding应该由一堆Conv layers堆叠而成,可是还是那个问题:参数量太大。所以作者想到了Deep recursive layers来增加深度的同时而不增加参数量。
谈道Deep recursive layers就不得不说:DRCN和DRRN这2篇工作,上面有全称。
图7:DRCN
图8:DRRN
DRCN和DRRN的结构分别如图7和图8所示:
为了节约参数量,DRCN(图7,图8.c)堆叠了16个conv,这些conv是参数共享的,之后再把它们的输出值连同Input信息整合在一起。这么做虽说节约了参数,可是也占用了大量的显存,而且前向传播过程很慢。
DRRN(图8.d)直接共享Block的参数,一个Block是2个conv,128个filter。identity分支都来自first block的输出,如此多的残差连接很好地解决了梯度消失和梯度爆炸的问题,因为梯度在反向传播时存在多个路径。
作者实际在共享参数时,采用的是DRCN的做法:我们一起来计算下LapSRN的深度是多少。
图9:Recursive Block的结构
我们假设每个Feature embedding块有 个Recursive Block,每个Recursive Block有 个卷积层,超分的倍数是 ,则LapSRN的深度是:
式中, 代表上采样的转置卷积, 代表 和最后一层卷积。
你可能会问为什么 没有计算,因为它不在网络的path中,所以不计算深度。
对于Local skip connections的问题,作者试验了以下3种方式:
图10:Local skip connections的3种方式
注意:LapSRN依旧使用的是pre-activation和without BatchNormalization。
图像重构分支:
由 个阶段组成,每个阶段的输入首先上采样,采样的方式是转置卷积。
将上采样的图像与预测的残差图像相加(element-wise addition),以生成高分辨率输出图像。作为下个阶段的输入图像。
图像重构分支,就是图5下面绿色框中的部分。我们站在作者的角度想想是怎么设计的:首先浅层网络预测了上采样的图片和对应大小的GT之间的残差的低频部分,那么为了更好地逼近对应大小的GT,你得到的残差就应该加上上采样的图片。所以我们看到图像重构分支的add操作,如下图11所示:
图11:图像重构分支的add操作
损失函数:
对于损失函数这方面,作者并没有使用 损失,因为它会使得超分结果过度平滑且视觉感知质量差。所以这里作者使用了Charbonnier损失函数:
Charbonnier Loss的表达式如下所示:
损失函数定义为:
式中, 表示超分的倍数, 表示Charbonnier Loss。 表示放大 倍的输出。 为放大 倍的GT,是真值 通过下采样得到的。
还使用了multi-scale的训练方法:
对比实验:
1 模型设计对比:
图12:模型设计对比实验
Pyramid structure: 作者对比了去除金字塔结构但保留Global Residual learning。结果如棕色曲线所示,性能变差许多。
Global Residual learning: 作者对比了去除全局残差连接的模型。结果如蓝色曲线所示,发现收敛缓慢,并且在训练期间波动很大。
损失函数: 作者对比了使用损失函数的模型。结果如绿色曲线所示。
multi-scale training: 作者对比了不使用多重损失函数来监督每个金字塔级别的中间输出,结果如下图13所示:
图13:没有多尺度监督的模型不能很好地减少空间混叠伪影
2 参数共享对比:
图14:参数共享的对比实验结果
作者比较了不同尺度之间的共享参数和同一尺度下的共享参数的效果:
LapSRN-D10R1(Recursive=1, conv=10)代表不在不同尺度之间的共享参数,也不在同一尺度下共享参数。
LapSRN-D5R2(Recursive=2, conv=5)代表不在不同尺度之间的共享参数,但在同一尺度下的2个Recursive Block之间共享参数。
LapSRN-D2R5(Recursive=5, conv=2)代表不在不同尺度之间的共享参数,但在同一尺度下的5个Recursive Block之间共享参数。
3 更深的模型对比:
使用不同的local residual learning方式的结果: 注意这里local residual learning方式指的就是上文描述的No Skip-connection,Distinct Source Skip-connection和Shared Source Skip-connection。
图15:使用不同的local residual learning方式的结果
作者发现Shared Source local Skip-connection 方法取得了最好的效果。
和 数量的影响: 前文提到 代表的是Recursive Block的数量,代表的是每个Recursive Block中的卷积层数量。不同的Recursive Block之间的参数是共享的。
图16:不同D和R数量对结果的影响
如上图16所示为不同D和R数量对结果的影响,全部使用的是shared source skip connection,可视化的结果如图17所示,发现 的performance是最优的。
图17:不同D和R数量对结果的影响
3 渐进式方法2:ProSR:完全渐进式超分辨率网络
CVPR 2018: A Fully Progressive Approach to Single-Image Super-Resolution
贡献:ProGANSR:多尺度渐进式的单图像超分辨率(SISR)方法。
在2018年的SISR挑战赛中,ProSR在SSIM方面排名第2,在PSNR方面排名第4。
运行速度比Top-ranking模型快5倍。
与LapSRN模型的区别:
区别1:Asymmetric Pyramid Structure
在LapSRN模型中,一张低分辨率的图是逐渐地超分到高分辨率的。比如要超分8倍,那么就分成3个阶段,每个阶段执行的动作是一致的,都是首先通过Feature embedding这个模块进行特征提取,然后通过Feature Upsampling这个模块进行上采样一次,最后跟一个卷积层 得到与对应维度真值之间的残差。
在LapSRN模型模型中,3个Feature embedding,3个Feature Upsampling,3个 是共享参数的,它们的网络结构是一致的。
我们称上述这种结构为symmetric pyramid structure。
可是,每个超分level上完全一致的结构一定是次优的。我们直觉上认为,当特征level比较低时( ),Feature embedding应该具备更深的结构;当特征level比较高时( ),Feature embedding应该具备更浅的结构。这样做一方面可以节约计算量,另一方面有利于增加原图的receptive field,提升图片的质量。
我们称上述这种结构为asymmetric pyramid structure,如下图18所示:
图18:Asymmetric pyramidal architecture
另一个Laplacian Pyramid SR 网络和ProSR的主要区别是:Lap-SRN使用得到的中间结果(intermediate reconstructed images)作为后续模块的输入,比如我想把一张图片放大8倍,那么Lap-SRN会先用特征提取分支和图像重构分支把图片放大2倍,接着放大2倍之后的图片再经过相似的操作到4倍,再到8倍;而ProSR有一条主线(就是图18中的浅橘红色结构),这条主线代表的是残差信息,注意这个残差信息是不同scale factor的, 即可以是×2,×4,×8的残差信息。它靠的是各个独立的individual head(图18中下方的蓝色结构)来重构中间结果(intermediate-resolution images)。
区别2:标签
这个模型与LapSRN不一样的地方除了Feature embedding深度不一致以外,训练方式也有一些差别:
在LapSRN中,我们把HR(GT)进行下采样,得到相应维度的真值,作为标签参与训练。这样,对于一个 的超分网络来讲,我们就有3个标签来训练。但是这篇工作作者并没有这样做,只用了HR image作为单标签。原因是这样能够简化反向传播的过程,降低训练难度。
区别3:Dense Compression Units
作者在每个Feature embedding里面使用的是Dense Compression Units(DCU)而不是原来的RDB。
原始的Dense Layer的组成是:
这里先去掉Batch Normalization和第一层ReLU,得到:
区别4:GAN的训练方法
图19:ProGAN的生成器(Top)与判别器(Bottom)的结构
如图19所示为ProGAN的Generator和Discriminator的具体结构,注意 指的是生成器输出的残差,注意只是残差,模型得到的结果应该是:
这里 指的是LR经过2次双三次插值的结果。
那么在判别器Discriminator中,以残差 作为输入,利用 进行下采样,最后Discriminator会输出一个Patch,类似于PatchGAN的操作。
这里作者解释了为什么要以残差 作为输入,而不是 作为输入?
答: 因为以残差 作为输入,使得Generator和Discriminator真正去学习那些插值后的图片和GT之间的差异。这些差异没能很好地被Upsampling层(即转置卷积)所学习到。反之,如果你是 作为输入,那么你的Generator要拟合的数据将会加上一个data-dependent baseline,学习难度更大。
除了输入的不同之外,在GAN的损失函数方面,作者使用了Least Square Loss以取代Cross Entropy Loss,所以Discriminator的损失函数可以写成:
Generator的损失函数可以写成:
其中 表示VGG16的第 个池化层,这里是Perceptual Loss。
区别5:Curriculum Learning
Curriculum Learning是通过逐渐增加学习任务的难度来提高培训的策略。它通常用于序列预测任务和序列决策问题,在这些问题中可以获得训练时间的大幅加速和泛化性能的提高。
具体是先训练 的超分网络,当训练好以后,如果还想训练 的超分网络,就在原来的Generator的基础上加上一个Pyramid,将它的输出与原来Pyramid的输出线性组合,得到的超分网络Generator的输出。
与LapSRN的简单的多尺度训练相比,这种渐进的训练策略大大缩短了总的训练时间。此外,产生了进一步的性能增益,并减轻了GAN训练中的不稳定性。
对比实验:
图20:不同方法的作用
第2行:Dense Compression Units数量的对比: 证明了DCU数量的增加可以在不影响PSNR的前提下显著降低模型的参数。
第3行:Asymmetric Pyramid Structure的对比:
这里 就是Dense Compression Units, 就是UpSampling Layer,显然后者使用了Asymmetric Pyramid Structure,PSNR得到了提升。
第4行:Curriculum Learning的对比:
下图21为对比试验的结果,Curriculum Learning对于放大倍数比较高的任务效果更好。对于放大倍数比较低的任务效果不好,甚至是负面的影响。
图21:Curriculum Learning的对比
与LapSRN的multi-scale training训练方式结果的对比:
我们之前提到LapSRN采用的是multi-scale training,loss取在所有的scale上面。表达式可以写作:
式中, 指的是把真值下采样 后的结果,且有:
这里 是上采样操作。
结果如下图22所示,使用LapSRN的multi-scale training训练方式会使PSNR变差。
图22:multi-scale training会降低PSNR
总结
Progressive upsampling Super-resolution的基本思想主要是2点:
Feature embedding与UpSampling交替进行。
主干网络输出的是残差,与插值结果进行相加操作得到最终的输出结果。
至于模型的训练方式,可以使用Curriculum Learning,也可以使用multi-scale training,取决于任务。
至于Feature embedding的结构,可以使用Recursive Residual Block,也可以使用Dense Compression Units。
无论模型如何设计,都要遵循上述基本思想。
参考文献:
[1] TPAMI 2018:Fast and accurate image super-resolution with deep laplacian pyramid networks (Ming-Hsuan Yang团队)
[2] CVPR 2018:A Fully Progressive Approach to Single-Image Super-Resolution
[3] TPAMI 2020:Deep Learning for Image Super-resolution: A Survey◎作者档案
作者:科技猛兽