在实时视频去噪中,对某个视频帧的去噪需要用到过去甚至未来多帧进行时域去噪,这使得计算量、存储空间、结果延迟都有很大的代价。本文介绍的这篇文章虽然是基于深度学习的视频去噪方法,但是巧妙安排了时域上数据的利用方式,实现了高质量的实时视频去噪。
这是整体的数据流动方式,网络由两个子模块H和G组成。给出当前输入帧以及之前K个输入帧,H Block可以产出一个中间结果it,它可以视作去噪结果的初步版本,是对L个后续连续帧的早期估计。
这是在训练时四种不同的反向传播流的形式。其中红色代表在反向传播中不参与计算。
a)图,对于t-1时刻的H来说,存在来自t-1的G和t时刻的G这两个flow的反向传播,因此就会存在潜在的梯度冲突,影响训练效果;
b)图,就避免了这种冲突;
c)图,类似MTL (Multi-task Learning) 中的多头 (two-head) 结构,多头结构的梯度冲突问题已经被广泛关注。
在MTL中之所以认为存在梯度冲突,是因为需要同时解决多类任务,需要从具有不同分布的特性的ground-truth中正确学习。而本文仅需解决一个任务即视频去噪,且相邻的帧都是相似的,但仍需强化这种特性,即确保相邻帧之间的内容变动不大。
图的下方是损失函数,其中d=1对应着图(a~c),d=0对应图(d),FΦ代表着具有参数Φ的去噪网络,y是ground truth,ψ是某种质量评估方法。
H和G的结构一样,都是U-net:输入是K+1帧或L+1帧图像,输出是一帧处理后的图像。
评价指标中的Warping Error表征着帧间的时序一致性,它基于光流法评估着邻近帧之间的抖动。
从Table 1所示的消融实验中可以看出,使用了短残差连接和a型损失的网络效果最好。因此,我们可以暂且原谅a带来的梯度冲突问题,将来自两路的梯度取平均。
当然损失函数中的帧数也不是越多越好。表4显示,双帧损失函数在多数情况下表现最好。
表2表明K=3,L=1去噪效果最好,却是最慢的,最后一行的K=2,L=1是一个很好的折衷。L从1提升到2的话,效果不会增加,反而大大增加了运行时间。
这张图展示了训练时出现的梯度冲突,图a是出现梯度冲突的batch占总batch数的比率,图b是direct反向传播的梯度向量长度与cross方向的梯度向量长度之间的比值,越小说明时间邻域信息利用得更充分。通过帧间插值、抽帧的方式来修改数据集视频的运动速度,由图中可以看出,训练时缓慢运动能够减少梯度冲突的发生,并且更充分利用时间邻域的信息,增加了去噪结果的时间一致性。
左图是针对RGB图,右图是针对RAW图。当本模型缩小了四倍的时候,PSNR仅有微弱的损失,速度确快了几乎一倍,这符合实时应用的需求。
本文的方法在PSNR和SSIM上都取得了优异的结果,但是时间一致性上逊于DVDNet。然而在使用了帧间插帧从而减慢视频速度的方法后 (BP-EVDinter),时间一致性也变好了,但是PSNR和SSIM也更差了。与其他方法相比,本文的方法速度遥遥领先。
RAW图上的效果同样优秀。不过由于CRVD数据集比较小,在各种噪声水平上的表现会更多样一些。
从上表可以看出,本文的方法计算量最少,速度最快,无需用到未来的帧。
这是RGB视频图像的去噪效果。由前两行的场景可以看出,BP-EVD可以保留更多的细节,同时在第三行的场景中可以避免幻觉的产生。在颜色的恢复方面,第四行中只有VBM4D和BP-EVD可以成功恢复标签中的红色,而BP-EVD在平坦区域的表现会远胜于V-BM4D。
这是RAW图的效果。同样,BP-EVD可以保留更多的细节和纹理信息。
在真实噪声场景中,本算法依旧能够在去噪的基础上保留更多的结构信息。
 关 注 我 们 
实验室网站:http://viplab.fudan.edu.cn/
OpenASIC官方网站:www.openasic.org
知乎专栏:http://zhuanlan.zhihu.com/viplab
微信公众号:OpenASIC
继续阅读
阅读原文