BasicVSR: The Search for Essential Components in Video Super-Resolution and Beyond
BasicVSR:寻找视频超分辨率及更高分辨率的关键组件
论文:https://arxiv.org/abs/2012.02181
代码:GitHub - sunny2109/BasicVSR_IconVSR_PyTorch: Unofficial PyTorch code for BasicVSR(个人还未复现,这是大佬复现的,可以参考)
本篇笔记主要对整篇论文从头到尾进行阅读分析,本文内容有点多,主要是对不同部分的总结以及图例解释,如果只对模型原理部分有兴趣,可直接观看第四部分。
本文为了详细说明各图、公式在各组件中的情况,所以对原文图片、公式做了切割和拼接,保证该内容是在该组件中生效的。
目录
(1)摘要
(2)引言
(3)相关工作
(4)本文方法介绍
(4.1)BasicVSR
(4.1.1)传播
(4.1.2)对齐
(4.1.3)聚合与上采样
(4.2)IconVSR
(4.2.1)信息填充机制
(4.2.2)耦合传播机制
(5)实验
(5.1)Basic和Icon的相比较其他模型的实验结果:
(5.2)Basic和Icon的消融实验实验结果:
(5.2.1)信息填充机制:
(5.2.2)耦合传播机制:
(5.3)对IconVSR的分析总结
提出本方案设计的目的:VSR需要考虑时间维度,所以很多模型增加了复杂组件用于这个方面。而强化基础组件(传播、对齐、聚合、上采样),通过重用和重新设计基础组件,减少复杂组件的加入,提出了BasicVSR,在BasicVSR基础上又提出IconVSR,它提出一种信息填充机制和耦合传播方案,获得比BasicVSR更好的效果。
without bells and whistles. 没有花里胡哨的,就是不通过精调参数,增加数据集等方式,就让模型获得很好的效果。
视频超分(VSR)和图片超分(SISR)不同,视频超分中存在多个高度相关且没有对齐的帧,所以很多模型为了解决时间序列中存在的隐含关系而增加了模型的复杂度,从而导致运行时间复杂,如下图所示:可以看出本次设计的模型在PNSR标准和运行时间上相较其他模型都有良好的优势。
作者将VSR模型中的基础组件进行划分,从两类模型实现方式(滑动窗口(Sliding-Window)以及循环神经网络(Recurrent))进行对比,标注出不同模型在不同组件中的使用情况。如下表
通过对比表格和上述的图1中的数据,发现传播和对齐的组件选择会很大程度上影响模型的性能和效率,所以对于BasicVSR模型和IconVSR在各个组件上的选择如下:
BasicVSR | IconVSR | |
传播 | Bidirectional(双向传播) | Bidirectional(coupled)(耦合的双向传播) |
对齐 | 基于光流方案( optical flow-based method) |
基于光流方案( optical flow-based method) |
聚合 | Concatenate(特征串联聚合方式) | Concatenate+Refill(信息填充的特征串联聚合方式) |
上采样 | Pixel-Shuffle | Pixel-Shuffle |
耦合传播:前向传播和后向传播之间进行了信息交换,减少由于遮挡或者图像边界造成的误差累积,允许传播以完整的形式访问整个帧序列。
信息填充机制:利用附加模块从稀疏选择的关键帧中提取特征,将特征补充道主网络中进行特征聚合。
本章节主要对VSR的相关工作做介绍,现有的VSR方法可分为两个框架:滑动窗口和循环神经网络,但是现有方法为了解决传播和对齐方面的问题产生了许多的复杂组件。本篇论文使用基础组件,双向传播加基于光流的对齐方法就超越了很多方法。然后介绍了IconVSR的信息填充机制,讲述了以往算法对于关键帧和非关键帧的处理,IconVSR通过连接传播分支,使长期信息可以在相互关联的时间间隔内传播。
首先BasicVSR采用基础组件训练的baseline具有通用性,而BasicVSR的结构如下图所示:
S、W、R分别代表光流评估模块、空间扭曲模块以及残差模块
左图为BasicVSR的结构,LR超分为SR图片,其中采用双向传播也就是和其中,二者的数据来源不同,为前向传播,目标帧信息和作为输入信息,为反向传播,目标帧信息和作为输入信息。
传播分为局部传播、单向传播以及双向传播。
(4.1.1.1)局部传播
在滑动窗口的方法中,局部窗口将窗口内的LR图像作为输入,并且利用局部信息进行恢复,信息被局限在局部窗口内。作者做了实验,将测试序列分为了K段,分别是1,2,5,10,20,也就是说,k=1时,所有信息都在窗口内,也就是全局传播,而分为2段意味着各部分利用信息进行独立恢复,相比较PSNR信息结果如下,可以看出随着时间序列感知的长度增加(也就是k逐渐减小),PSNR的差异减小。(虚线代表k=1,可以看出k>=2时,PSNR都是小于K=1的)
得出结论
1。远端的帧序列信息实际也是有利于恢复的
2。其次查看下图可知,在每段的两头PSNR差距最大,所有有必要采用长序列来累计信息。
(4.1.1.2)单向传播
单项传播就是从头到尾进行信息传递,所以有明显的问题。1,开头的帧只有自身的信息。2,前期的信息累计较少。
作者对BasicVSR的单向传播和双向传播做了对比,如下图,虚线代表双向传播的PSNR值,可以看出在单项传播的早期,因为可利用信息少,所以PSNR值明显低于双向传播,但是随着信息的累计PSNR差异逐渐减小。因为双向传播的最后一帧的特征初始化,单向传播在最后一帧比双向传播好。
(4.1.1.3)双向传播
双向传播顾名思义,本文BasicVSR就是使用的这种传播方法,从下图的计算公式讲解,反向传播中目标帧的的特征,是i帧和i+1帧的图片信息,与来自i+1帧得到的特征关系得到的。则相反。(序列帧按时间序列都是从0...i,i+1...n的)
对齐也分为三种:无对齐、特征对齐以及图片对齐,作者通过对比指出BasicVSR使用的方式。
(4.1.2.1)无对齐
无对齐就是图像/特征不需要对齐就用到超分上,作者在BasicVSR中将对齐模块去除,因为卷积这样的局部操作,会因为采用局部较小的块进行卷积而无法良好的聚合相应的位置信息,PSNR下降。
(4.1.2.2)图像对齐
最早Chan等人提出图像级的对齐到特征级的对齐会产生明显的超分改善(Chan的论文在下面),所以作者在BasicVSR中对比图像对齐和特征对齐,发现由于图像对齐时根据光流计算使图片发生扭曲,图片会出现模糊和不正确,丢失部分细节信息导致超分图像效果确实没有特征对齐好。
Kelvin CK Chan, Xintao Wang, Ke Y u, Chao Dong, and Chen Change Loy. Understanding deformable alignment in video super-resolution. arXiv preprint arXiv:2009.07265.
(4.1.2.3)特征对齐
通过对比作者选用的特征对齐,也是基于光流进行特征的模块。
为了方便讲述,右图的解释在上面,其实就是正向传播中图片处理过程,S是基于光流的评估模块,W是扭曲模块,R是残差模块。
S是基于光流的评估模块,主要用来对两帧图像的特征进行光流评估,将评估结果送入扭曲模块。
W是特征扭曲模块,会根据S输出的评估信息与上一帧图像细节特征进行特征扭曲对齐。
R是残差模块,对于扭曲信息在残差模块中进行细化并输出目标帧的已对齐的特征图像信息。
BasicVSR中采用基础模块做聚合和上采样,将和做特征串联,然后送入上采样模块,上采样模块由多个卷积层和pixel-shuffle组成,最后输出结果。
IconVSR在BasicVSR的基础上优化,也就是在传播和聚合层面变为耦合传播机制和信息填充聚合方式,下面介绍这两种方法。
下面介绍这两种方法。信息填充机制的目的是为了缓解在长期传播中因为错误信息的积累而导致的不良影响,所以选择对稀疏选择的关键帧进行特征提取和聚合。
如左图所示,在W模块进行特征扭曲时,会将关键帧以及附近的帧送入E模块(特征提取器),将提取出的特征与扭曲过后的特征进行卷积细化,然后将其与输入关键帧送入残差模块进行进一步的细化!
如右图所示,是通过提取关键帧与其附近帧的特征获得的。的意思是,本次进行信息填充选择的关键帧是进行稀疏选择的,所以判断是不是选中的关键帧!是W模块扭曲过后的特征数据。最后公式就是残差模块进一步细化的公式。
耦合传播机制的目的是,通过接受过去和未来的消息,优化前向传播得到的特征质量。BasicVSR中,正向传播和反向传播是独立进行的,而在耦合传播机制中,作者将正向传播和反向传播做了连接,反向传播的输出作为正向传播的输入,如下图所示。
左图就是耦合机制传播的方法,可以和BasicVSR的结构做比较,右图中的公式和前面计算方式相同。不同的是,在正向传播中,将反向传播的输出作为输入。
训练数据集:REDS
测试数据集:Vimeo-90K、Vid4、UDM10、Vimeo-90K-T
验证数据集:REDSval4
下采样方法:Bicubic (BI) and Blur Downsampling (BD)
迭代优化器:Adam optimizer、Cosine Annealing
学习率:特征提取10^-4,光流估计2.5*10^-5,其他模块2*10^-4
输入LR尺寸:64*64
损失函数:Charbonnier loss
上述图像中,展示了与多个模型之间对同一帧数据的超分结果,通过放大部分结构可以看出,本次的BasicVSR和IconVSR具有良好的效果,不但恢复出了高频信息和细节,对于图像的边缘的锐化处理也比较不错。
消融研究:通常是指删除模型或者算法的某些”功能“,并查看其如何影响性能,例如某论文提出AB两种方式,在基于baseline的基础上提出创新,那么消融研究就是baseline+A,baseline+B,baseline+A+B
如左图所示,在信息填充之前,在W模块也就是特征扭曲对齐模块,因为不存在该局部特征的对应关系,所以像素值基本没有,而实际可能在相邻帧中存在这部分特征,所以丢失了信息,会导致特征的质量下降。填充之后,将丢失的信息进行了补充,缓和了错误积累,提高了接下来特征细化和传播的结果。
右图所示,展示了在精细图像中,填充之前,由于对齐错误导致信息聚合效果不好,所以车牌号看起来很模糊,在经过填充之后,补充的高频信息细节与特征进行了对齐,聚合之后的效果可以看出车牌更好的显示了出来。
如图所示,耦合传播是为了减少由于遮挡或者图像边界造成的误差累积,上图中黄色区域代表在前面帧被遮挡的区域。在未使用耦合传播之前,可以看出边缘细节和图像效果并不理想,在使用耦合传播之后,图像利用反向传播的信息进行了信息交互,可以更好恢复目标帧在前一帧被遮挡的图像细节信息。
总结:下表展示的就是消融研究后,模型的PSNR值,可以看出确实是越来越好,(最后内容水印遮挡了,31.67/30.45)
IconVSR的信息填充是选取固定间隔的关键帧进行信息填充的,所以可以通过减少关键帧的数量来加快推理,下图展示了不同数量的关键帧,对于PSNR的影响。当N=0时,也就是没有了信息填充机制,PSNR仍然由30.38dB,所以证明耦合传播的效果也是有效的。
总结 :
这篇文章真牛逼,总体效果展示图,可以看引言中的第一幅图,还有一些补充本文并没有展示。代码的复现部分在稍后的内容中进行复现。