论文:https://arxiv.org/abs/1902.06068
1.基于监督学习的图像超分辨率模型框架
目前的SR还是侧重于有监督的学习,根据上采样的阶段不同划分为四种类型的模型框架:
1.1Pre-upsampling 预上采样
方法:利用传统的上采样算法获得更高分辨率的图像,然后使用深度神经网络对其进行细化
优点:①较困难的上采样任务是通过预定义的传统算法完成的,深度cnn只需要对粗图像进行细化,大大降低了学习难度
②这些模型可以以任意大小和缩放因子的插值图像作为输入并给出与单尺度SR模型性能相当的精确结果
缺点:预先定义的上采样方法通常会引入一些副作用(例如,噪声放大和模糊),而且由于大多数操作是在高维空间中执行的,时间和空间成本比其他框架要高得多
典型的就是SCRNN
1.2Post-upsampling 后上采样
目的:为了解决Pre-upsampling SR计算效率低问题,使用后上采样的sr可以大大提高速度
方法:在取代先上采样操作,在低维空间进行mapping操作,然后在最后放置一个端到端可学习的上采样层
优点:计算量大的非线性卷积特征提取过程只发生在低维空间中,并且分辨率只有在网络的最末端才会增加。使得计算复杂度和空间复杂度大大降低,同时训练速度和推理速度也大大提高
缺点:一方面,上采样操作只有一步,大大增加了大尺度因子的学习难度;
另一方面,每个尺度因子都需要一个单独的SR模型,无法满足多尺度SR的需要。**在FPN中是有对不同尺度SR的需求,所有可以从这个缺点上进行改进。**典型的就是FSRCNN、EPSCN等之前做实验的均是后上采样
1.3 Progressive Upsampling渐进式上采样
目的:解决后上采样的缺点
方法:该框架下的模型基于串联的cnn,逐步重构出更高分辨率的图像。在每一阶段,图像上采样到一个更高的分辨率,并由cnn进行细化
优点:通过将困难问题分解为简单问题,该框架下的模型不仅极大地降低了学习难度,获得了更好的性能。由于计算量巨大的特征提取过程只发生在低维空间,并且分辨率只在最后增加,因此计算量和空间复杂度大大降低。而且在不引入过多的空间和时间代价的情况下解决了多尺度的超分辨率问题。
缺点:多阶段模型设计复杂,训练难度大,需要更多的设计结构设计指导和更高级的训练策略。
1.4 Iterative Up-and-down迭代式上采样
目的:为了更好地捕捉LR-HR图像对的相互依赖性
方法:一种称为back-projection的迭代过程被纳入到SR中用来缩小LR-HR之间的关系。迭代的使用这种过程来进行微调,也就是先计算重建的错误,然后用它来调节HR图像的亮度。这种思想被用来构建了DBPN(deep back-projection networks),结合着上-下采样层,可以交替的在上采样层和下采样层之间互相连通,最终使用中间的HR图像的特征图的串联得到最后的结果。
优点:可以获得LR-HR图像之间深层次的关系,并以此获得更好的重建结果
缺点:对back-projection的设计标准并不明确,结构很复杂,需要手动设计。有很大的探索与改进空间
感觉这种方式设计难度比渐进式还大,而且对理论要求更高,实用性不强
2.上采样的方法
2.1 scale基于插值的上采样
之前对基于插值的上采样进行了详细的介绍,本次就略过了。这片综述中详细的对基于插值的上采样进行了介绍。
2.2 Learning-based Upsampling基于深度学习的上采样
2.2.1 Learning-based Upsampling反卷积
反卷积是一种特殊的正向卷积,先按照一定的比例通过补0来扩大输入图像的尺寸,接着旋转卷积核,再进行正向卷积,在实现的过程中就不旋转卷积核了。
由于转置卷积层可以在保持与普通卷积兼容的连接性模式的同时以端到端的方式放大图像大小,因此在SR模型中它被广泛用作上采样层。然而,该层很容易在每个轴上引起“不均匀的重叠”,并且两个轴上的乘法结果进一步产生了不同幅度的特征棋盘状图案,从而损害了SR性能。在之前fsrcnn实验中验证了,使用反卷积效果并不好。
2.2.2 Sub-pixel Layer亚像素卷积
亚像素层也是端到端可学习的上采样层,它通过卷积生成多个信道,然后对它们进行整形来执行上采样,如图5所示。在该层中,首先应用标准卷积来产生具有s倍通道的输出,其中s是上采样倍数。假设输入大小为h×w×c,则输出大小为h×w×ssc,然后执行整形操作,以产生s*h×s*w×c大小的输出。
2.2.3 Meta Upscale Module
以往的方法都需要预先定义放大的倍数,即针对不同的倍数训练不同的上采样模块,效率低,不符合实际需要。因此Huet等提出了meta upscale模块(如图6所示),该模块首先基于元学习meta learning求解任意缩放因子的SR。
具体来说,对于HR图像上的每个目标位置,该模块将其投影到LR 特征图上的一个小patch上(即k×k×cin),根据投影偏移量和稠密层缩放因子预测卷积权值(k×k×cin×cout),并进行卷积。通过这种方式,Upscale 模块可以通过单个模型连续放大任意因素。由于训练数据量大(同时训练多个因素),该模块在固定因素上可以表现出相当甚至更好的性能。
虽然该模块在推理时需要预测权值,但上采样模块的执行时间仅占特征提取时间的1%左右。但是,该方法基于多个与图像内容无关的值预测了每个目标像素的卷积权值,因此在放大倍数较大时,预测结果可能不稳定,效率较低。
还没完整的看过meta sr这篇论文,但是感觉这种方式计算量不低,但是效果可能也不好。
3、网络设计
3.1 Residual Learning残差网络
Global Residual Learning 全局残差学习:由于超分辨率是一种图像到图像的转换任务,输入图像与目标图像高度相关,因此研究者试图只学习两幅图像之间的残差,即全局残差学习。在这种情况下,它避免学习从一个完整图像到另一个图像的复杂转换,而只需要学习一个残差映射来恢复丢失的高频细节。由于大部分区域的残差接近于零,模型复杂度和学习难度大大降低。因此,它被SR模型广泛使用,特别是在预上采样框架下。在FR上没发使用,因为FR是无监督的学习。
如VDSR,DRRN,MemNet,IDN
Global Residual Learning 局部残差学习:局部残差学习类似于ResNet中的剩余学习,用于解决网络深度不断增加带来的退化问题,提高学习能力。它也广泛应用于SR领域。暂时使用的就是这种残差学习方式
如RCAN,EDSR
3.2 Recursive Learning递归学习
为了在不引入大量参数(由于参数共享)的情况下实现更大的接受域(reception field)和更高层次的特征学习,将递归学习引入超分辨率域,即以递归方式多次应用相同的模块提取特征。同时递归结构也可以更紧凑的表示深层网络。还没看过相关的论文,感觉思想和RNN类似。
但是在实际应用中,递归学习本质上带来了梯度消失或爆炸问题,因而产生了诸如剩余学习等技术和多监督通常与递归学习相结合,以缓解这些问题。
代表:DRCN,MemNet,CARN(efficient版本),DSRN。
3.3 Recursive Learning多路径学习
多路径学习是指通过模型的多条路径传递特征,这些路径执行不同的操作,以提供更好的建模能力。具体来说,它可以分为三种类型:
Global Multi-path Learning 全局多路径学习:全局多路径学习是指利用多条路径来提取图像不同方面的特征。这些路径在传播过程中相互交叉,极大地提高了特征提取的能力。具体而言
(1)LapSRN:包括一个特征提取路径,以一种由粗到细的方式预测子带残差,以及一个基于两条路径的信息流来重建可见HR图像的图像重建路径。
(2)DSRN分LR和HR两条路径,这两条路径不断交换信息,进一步提高学习能力。;
(3)Image super resolution based on fusing multiple convolution neural networks:使用多个具有不平衡结构的路径来执行上采样,并在模型的最后融合它们;
(红色箭头:卷积进行特征提取,蓝色箭头:反卷积提升分辨率,绿色箭头:两张图片逐像素相加)
Local Multi-path Learning 局部多路径学习:MSRN采用了一个新的块来进行多尺度特征提取,如图6e所示。在该块中,采用两个核大小分别为3×3和5×5的卷积运算来同时提取特征,然后将输出串接并再次进行相同的运算,最后再进行1×1卷积。一个快捷方式通过元素加法连接这个块的输出和输入。通过这种局部多径学习,SR模型可以更好地从多尺度提取图像特征,进一步提高性能。全局的多路径是一条路走道黑,局部多路径是你走你的阳关道,我走我的独木桥,多分支。
Scale-specific Multi-path Learning特定尺寸多路径学习:考虑到不同尺度的SR模型实际上需要经历相似的特征提取过程,所以这种方法会共享模型的主要部分,在网络开始或者结束的地方会有特定 scale 的预处理(如图f)。在训练阶段,只有所选 scale 分支会被更新。这样,大多数参数在不同尺度上共享,并且所提出的MDSR表现出与单尺度模型相当的性能。EDSR,CARN和ProSR也采用了类似规模的多路径学习。
之前学习edsr和wdsr只借鉴了其没有使用bn层,而用wn层。而没有使用,其共享权重的思想。
3.4 Dense Connections稠密连接
看名字就知道是使用了DenseNet中的稠密网络思想,这种算法计算量过大,就只简单介绍一下:
对于 dense block 中的每一层,之前所有层的特征图都是其输入,当然它自己的特征图也会被当作输入送入到之后的所有层。dense connections 不仅减轻了梯度消失的问题,增强了信号传播 high-level 与 low-level 特征的融合,从而给重建高质量的细节提供丰富的信息,dense connection 被引入至 SR 领域(如图(d))。MemNet、CARN、RDN、DBPN 和 ESRGAN 都使用了 dense connections。
3.5 Attention Mechanism注意力机制
Channel Attention考虑到不同通道之间特征表达的内在联系(如图c),Hu 提出了以 squeeze-and-excitation 的方式来改善学习能力。这种方式,输入(B * C * W * H)的通道被使用全局平均池化 (GAP) squeeze 到称之为 channel descriptor 的状态(B * C * 1 * 1),然后再通过全连接后输出通道相关的权重(B * C * 1 * 1)并分别和输入(B * C * W * H)进行点乘。RCAN 使用了通道注意力使得 SR 模型表达能力和表现大大提升。
Non-local Attention非局部注意力大多数的 SR 模型感受野都是局限的,可是往往相隔甚远的两个 patch 是有关联的。因此 Zhang 提出了局部和非局部注意力来获取像素之间的长程依赖。他们使用一个分支来提取特征,一个 mask 分支来自适应 rescaling 特征。
普通的滤波都是3×3的卷积核,然后在整个图片上进行移动,处理的是3×3局部的信息。Non-Local Means操作则是结合了一个比较大的搜索范围,并进行加权。非局部注意力和自注意力好像是一种东西,都是transformer的基础。
3.6 Advanced Convolution先进的卷积
本文提到了组卷积,深度可分离卷积和空洞卷积。
3.7 Pixel Recursive Learning像素递归学习
多数的超分模型将 SR 看作一个像素独立的任务,不能将生成的像素之间的内在联系合理的利用。受到 PixelCNN 启发,Dahl 第一次提出了像素循环来进行像素间的生成,其通过使用两个网络来获取全局语义信息和连续生成的联系。这种方法可以用非常低像素的图片来生成真实的头发和皮肤细节。但是这种方法的缺陷在于更长的传播增加了计算的成本和训练的难度。
3.8 Desubpixel逆亚像素
上采样sub-pixel中shuffle的反操作。将图像像素分开,堆成额外的channel从而避免信息丢失。先将图像desubpixel操作,在低维空间学习,最后上采样至对应尺寸。出自eccv2018论文Fast and Efficient Image Quality Enhancement via Desubpixel Convolutional Neural Networks,用这种方法的人极少,我也感觉没什么用。
本篇综述还介绍了loss、评价指标和数据集。用不上,就暂时不多做介绍
思考
1.先使用亚像素卷积进行上采样之后,再进行重构,在实验中发下,预上采样的srcnn的速度减半但是精度还不错,所以可以尝试把srcnn的预上采样和srres的残差结构结合起来。
2.学习渐进式:LapSRN,ProSR。因为在FPN中也是有多中尺度的上采样需求,使用渐进式的上采样方式,可能会提高效果。
3.特定尺寸多路径学习和局部多路径学习,感觉渐进式和特定尺度多路径思想有点类似
4.空洞卷积代码已经写了,代码还没跑。使用组卷积来代替espcn中的卷积,进一步提高FR速度。
5.学习一下sr中的注意力:RCAN:Image Super-Resolution Using Very Deep Residual Channel Attention Networks,在深层才使用注意力。
6.学习一下:非局部注意力:Non-Local Neural Network
参考:https://www.cnblogs.com/spore/p/13049570.html
https://www.cnblogs.com/wyboooo/p/13261646.html
https://blog.csdn.net/qq_33313620/article/details/103308895
https://blog.csdn.net/qq_41332469/article/details/103165773