DUF:Deep Video Super-Resolution Network Using Dynamic Upsampling Filters Without Explicit Motion Compensation
DUF:无需显式运动补偿的动态上采样滤波器的深视频超分辨率网络
代码:https://github.com/yhjo09/VSR-DUF
本篇笔记主要对整篇论文从头到尾进行阅读分析,本文内容有点多,主要是对不同部分的总结以及图例解释,如果只对模型原理部分有兴趣,可直接观看第四部分。
本文为了详细说明各图、公式在各组件中的情况,所以对原文图片、公式做了切割和拼接,保证该内容是在该组件中生效的。
目录
(1)摘要
目前基于深度学习的VSR方法大多依赖显示运动补偿的精度,也就是运动估计和运动补偿的精度。而本文提出的一种端到端的网络,网络中包含动态上采样filter和残差图像处理,利用隐式信息进行动态上采样filter的生成(隐式运动补偿不需要进行复杂的运动估计,利用帧之间的互补信息进行帧补偿),通过残差网络进行时空领域的细节补充,再通过上采样filter重建HR图像,辅助一种数据增强的技术生成HR视频。
(我用一下我的BasicVSR中的比较图进行对比,可以从DUF的参数,运动时间以及PSNR看出这个算法的基本效果,让大家对这个算法有个大致感官)
(2)引言
现有的硬件设备4K和8K的屏幕往往没有合适该分辨率的内容,进行图片超分就是对视频的每一帧进行不关联的超分,但是这种超分会导致各个图像之间没有考虑时空关系出现伪影和闪烁的问题。传统的VSR算法是通过计算亚像素运动,计算两个LR图像之间的亚像素之间的位移(如下图),后续的基于深度学习的方法基于上述思想,进行显示运动补偿,通过进行运动估计和运动补偿进行帧之间的细节对齐和补充,然后通过上采样获得HR视频,但是这种方式存在两个问题:1,严重依赖运动估计和补偿的精度。2,混合来自多个LR帧的目标帧恢复的图像会模糊。
(LR图之间亚像素之间的关系,进行亚像素位移实际上就是通过计算两个LR图像之间亚像素之间的位置关系进行位移对齐,然后补充目标帧没有的细节信息)
本文设计的方法中,如下图所示,通过对输入的多个视频帧进行隐式的运动补偿计算,生成相应的动态上采样filter,然后直接对输入的目标帧的某个像素进行局部滤波,生成高分辨率的图像。生成filter 的大小和想要进行超分的分辨率有关,超分4倍,则生成filter为5*5*4*4(图中3,3,3,3,前两个3,3表示放大坐标,后两个3,3,从0开始表示放大后的pixel的位置),filter的通道数16,可以为一个像素块进行16次计算,也就是平铺成高宽为4倍的图像。
本文的方法与最新方法的简单对比。(18年的文章)
(3)相关工作
对图片超分以及视频超分进行了解释,以为当前对于视频超分提出的算法和解决方案。
(4)本文方法介绍
GT帧是什么?GT帧实际上是指高分辨率、未经处理的图像。处理是指:下采样,模糊、噪声、压缩等图像处理手段。
首先从GT帧中进行下采样提取出低分辨率LR帧组,作为网络的输入。然后使用动态上采样filter生成放大后的图像,使用残差网络对输入的LR帧进行高频特征提取补充到放大后的图片中,生成最后的HR图像。网络结构如下图所示。整体逻辑公式如公式(1)所示:N是输入LR帧的时间半径,G是网络,θ是网络参数。网络的输入张量为T*H*W*C,T=2*N+1为输入参考帧和支持帧的数量,H和W是输入LR帧的高度和宽度,C是颜色通道数量。输出结果张量为:1*rH*rW*C,r是放大因子。
(4.1)动态上采样filter
传统的上采样filter使用的是固定的filter内容,随着像素的移动对动态的对局部特征进行过滤,使用n*n(n一般为3、5)的固定内核,内部内容相同进行上采样。并没有根据图像不同位置和不同时间的信息采用更适合的filter,所以本文动态生成上采样filter,根据像素的运动生成filter,就可以避免显示的运动补偿,不需要进行额外的运动估计的操作。
如下图,根据下方图和下方的公式(2),首先输入的帧为为输入的LR帧组,对输入参考的2*N+1个帧,(若无声明,本文的图像放大倍数统一为4倍),对不同位置的像素生成不同的filter,所有的filter组成,橘色部分的大小就是5*5*4*4,生成了动态上采样滤波器。然后对输入的目标图像,使用上采样滤波器,某个区域像素就放大了四倍,生成输出图像。
公式(2)表示的则是,原图像大小是y*x,使用网格表示每个像素在网格中的位置。v,u,则代表使用filter滤波器生成的4*4个像素块的位置,例如(0,0),(0,1)等等,生成的HR像素为,其中是不同区域的滤波器。
(4.2)残差学习
残差模块的应用在,基线的动态上采样滤波器生成的HR图像不清晰,缺乏高频和细节信息,所以使用残差网络对输入的帧信息进行高频信息的提取,并且和上采样后的信息进行融合,生成富含高频信息的HR图像 。
(4.3)网络结构的设计
网络结构的设计主要还是如上图所示,网路不复杂,具体结构中的卷积也标注了。
(4.4)时间增强
这部分内容,是在数据处理之前的数据采集工作,为了该网络训练出可以适应真实世界的效果,生成相应质量的数据集,使用变量TA来决定进行时间增强的时间间隔,然后进行视频帧的采样,TA为负值是生成反向视频样本。如下图所示。
(5)实验
训练数据集:Val4(为该算法收集处理的数据)
测试数据集:Vid4
迭代优化器:Adam optimizer
学习率:特征提取10^-3,每10个epoch,rate*0.1
输入LR尺寸:32*32
BatchSize:16
损失函数:huber loss(如下图)
(5.1)学习运动的可视化:
(5.1.1)合成运动测试
这个测试根据我的理解来看,首先该部分实验是为了证明在没有显示运动估计的情况下也可以正常根据帧之间的隐式运动补偿获取相应的信息。如下图所示:作者在GT帧中合成了一个竖条块用来验证,首先无论是向左还是向右移动,如果我们输入的目标帧相同,那么就应该得到相同的HR帧,如果HR帧相同,那么用于上采样的滤波器,就应该也是相同的!然后就可以正常理解,下图中Filters的图案是相同的,但是对于向左和向右运动,是不同方向的运动,那么根据输入的一组帧的运动估计来看,计算的补偿值是不同的,所以activation map就应该是不同的,因为运动估计信息不同,所以作者通过做合成图进行比较相同块的向左和向右运动,得到不同的激活图,但是仍可以得到相同目标帧的滤波器,所以本实验证明本算法在没有显示运动补偿的作用下也是可以使用的。
(5.1.2)滤波器是否有效测试
列举文中使用的3*3*3滤波器,对其卷积后的结果进行可视化展示,我们可以看到不同层学习的滤波器,在不同时刻的提取到的信息是不同的,并且可以均匀采集数据没有大规模的黑影,不同层之间提取到的信息不同,证明该滤波器是产生了作用的。
(5.1.3)动态上采样滤波器
如下图所示,对于同一个日历的不同位置,我们使用生成的不同的上采样滤波器,可以看Filters图中块的权重不同,生成的Filters是不同的,对不同的部分和切面进行超分中,可以实现精准的输出。证明我们的动态上采样滤波器是有用的。
(5.2)实验结果:
不同放大比例的本文算法与之前的算法相比,具有更良好的PSNR和SSIM值,实现细节也够精细。
总结 :
这篇文章整体思想上并没有很难,直接使用上采样滤波器输入HR图像,使用残差进行细节补充,不用进行额外的显示运动估计等复杂计算,该算法虽然参数少,相比较现在的算法而言,参算也算少的,但是运行时间上太慢了,在1s左右,而我复现的,生成HR的速度在2s左右,这是没办法满足实时性要求的,可能用于预处理一些视频。没办法进行工业落地,需要进一步进行优化加速。但是该算法作为18年进行深度学习的VSR而言,还是一篇值得读和理解的论文。