视频去模糊论文阅读-Learning Blind Motion Deblurring

论文地址:http://openaccess.thecvf.com/content_ICCV_2017/papers/Wieschollek_Learning_Blind_Motion_ICCV_2017_paper.pdf

代码地址:https://github.com/cgtuebingen/learning-blind-motion-deblurring

Abstract 

        因为手持摄像机现在很普遍,在每个智能手机上都可以使用,图像和视频几乎可以随时在任何地方录制。然而,在拍摄过程中的由于不必要的相机抖动或者在场景中移动的对象会产生一个模糊的结果。从模糊的记录中去除这些模糊是一个高度不适定的问题,因为无论是清晰的图像还是运动模糊核都是未知的。在多个连续的模糊观测结果之间传播信息可以帮助恢复所需的清晰的图像或视频。在这项工作中,我们提出了一种有效的方法来产生大量的真实训练数据,并提出了一种新的递归网络架构,以考虑时间信息的帧去模糊,它可以有效地处理任意的空间和时间输入大小。

1.Introduction 

        由手持设备拍摄的视频通常包含由相机抖动和物体运动的组合引起的运动模糊。 从模糊的观察中重建清晰的帧是一个高度不适定的问题,根据相机抖动信息是否已知,可以将去模糊方法分别表示为盲或非盲反卷积。在video and image burst deblurring中,单个帧的重建过程可以利用来自相邻帧的额外信息。然而,这个问题仍然具有挑战性,因为每一帧可能会产生不同的相机抖动,而且帧可能帧之间没有对齐。对静态场景的反卷积,神经网络已成功地应用于单帧和多帧去模糊。所有最近的多帧和视频去模糊的网络架构都要求输入匹配固定的时间和空间大小。处理任意的空间维度在理论上是可以通过全卷积网络来实现的,但是由于GPU上的内存有限,它们在推理过程中需要依赖于滑动窗口方法。相比之下,我们的方法是一个去模糊系统,它可以处理任意长度的序列,同时具有一个全卷积网络,可以同时处理全分辨率的视频帧。由于其占用的内存较小,它消除了在推理过程中对滑动窗口方法的需要,从而大大加速了去模糊过程。对于处理任意序列,我们依赖于一个循环方案。虽然convolutional LSTMs[1]提供了一种直接的方法,用循环单元取代传统架构中的空间卷积,但我们发现它们具有挑战性,训练速度慢。除了梯度消失问题外,还需要一些tricks(例如carefully tuned gradient clipping parametersspecial variant of batch normalization)。为了解决这些问题,我们引入了一种新的递归编解码器网络。在该网络中,我们加入了空间残差连接,并在后续迭代之间引入了新的时间特征转移。除了网络架构之外,我们还进一步创建了一个新的视频去模糊训练集,因为数据驱动方法的成功在很大程度上取决于可用的真实训练示例的数量和质量。由于获取真实的ground-truth数据非常耗时,我们成功地生成了合成的训练数据。

2.Method

        在我们的方法中,使用一个全卷积神经网络利用之前几帧的信息B_{-1},B_{-2},\cdots,以一种迭代循环的方式对帧B去模糊。结合之的(模糊的)观察结果,可以一步一步地改进对当前帧B的预测结果。我们将把这些步骤称为去模糊处理的步骤。因此,完整的recurrent deblur network(RDN)由几个deblur blocks(DB)组成。我们使用这些deblur blocks之间的权重共享来减少参数量,并在这些deblur blocks之间引入新的时间跳跃连接,以在单个时间步长之间传播潜在特征。为了有效地更新网络参数,我们在训练过程中展开了以下步骤。在推理时,只要处理适合于GPU(至少两帧)那么输入就可以有任意的空间维度。此外,循环结构允许我们包含任意数量的帧,以帮助改进每次迭代的输出。

2.1.Generating realistic ground-truth data

        训练一个神经网络来预测一个模糊输入的清晰帧需要真实的训练数据,数据集分为模糊帧和相关的清晰帧作为ground-truth。最近的工作是通过GoProHero相机以240fps的速度录制视频,以减少ground-truth中的模糊。然后,对这些高fps视频中的帧进行处理和平均,以产生合理的运动模糊。虽然他们做出了巨大的努力来捕捉各种不同的情况,这个过程在记录样本的数量、各种场景和所使用的记录设备上都是有限的。对于快速移动的物体,由于有限的帧率,可能会出现伪影。我们还测试了使用GoProHero相机生成训练数据的方法,但发现很难产生足够大的sharp ground-truth videos of high quality。我们建议从在线媒体中获取和过滤数据,而不是手动获取训练数据。Training data.我们收集了4k-8k分辨率和帧率为60fps或30fps的视频。视频内容范围从电影预告片、体育赛事、广告到日常生活中的视频。为了去除compression artifacts并获得slightly sharper ground-truth,我们将所有收集到的视频的大小分别调整为1/4和1/8,最终获得full-HD resolution。对于视频\left ( f_{t} \right )_{t=1,2,\cdots T}。对于t时刻的frame pair\left ( f_{t},f_{t+1} \right )我们在原始帧f_{t}f_{t+1}之间添加了n个额外的合成子帧,从而产生高帧率视频。

所有的子帧是通过混合原始帧f_{t}f_{t+1}在两个方向上的光流w_{f_{t}\rightarrow f_{t+1}}w_{f_{t+1}\rightarrow f_{t}}来实现的。给定这两个光流,我们可以生成任意数量的子帧。为了实际目的,我们设置了n=40,因此意味着有效帧率超过1000fps,不会因曝光时间短而产生low signal-to-noise ratio (SNR)。对子帧使用平均操作,以生成一个可靠的模糊版本。

 对于每一个清晰帧f_{t}。我们使用mix of 20 and 40 for L区创建不同级别的运动模糊。图2显示了来自我们的训练数据集中的一些随机示例。

2.2.Handling the time dimension

        对于CNN网络的输入形状为:\left [ B,H,W,C \right ]。要应用spatial convolution layers上就要将额外的维度合并到channel(\left [ B,H,W,C*T \right ])或者batchsize(\left [ B*T,H,W,C \right ])中。例如方法[2,3]

将输入的帧在channel维度上进行堆叠。这是以删除有关时间顺序的信息为代价的。此外,在训练前需要固定输入帧的数量,这限制了它们的应用。如果是较长的序列只能通过像workarounds like padding和sliding window processing这样的变通方法来处理。另一方面,将时间维度合并到batchsize维度中,可以灵活地处理不同长度的序列。但是每一帧的处理与相邻帧完全无关,没有任何的信息传播。我们尝试了几种基于这些recurrent cells([1,4)的架构,但发现它们很难进行训练,即使经过两天的训练,也几乎没有观察到任何改善。

2.3.Network Architecture

        与recurrent layers不同,我们将整个网络模型规划为deblur blocks的循环应用,并依次处理输入对(target frame and additional observation),这使得我们能够灵活地处理任意长度的序列,实现网络内的信息融合。受到[5,6]的启发,我们在每个deblur block中使用了一个编码器-解码器的架构,见图3。因此,该网络仅由convolution and transpose convolution layers with batchnorm组成。我们将ReLU激活应用于卷积层C_{.,.}的输入。卷积层的第一层的channel是6。在编码器部分中,每个残差块由一个下采样卷积层和另外三个卷积层组成(\left [ H,W,C \right ]\rightarrow \left [ H/2,W/2,2C \right ])。在解码器部分中,使用转置卷积对下采样的结果进行上采样(\left [ H,W,C \right ]\rightarrow \left [ 2H,2W,C/2 \right ])。我们对所有卷积/转置卷积层使用3×3/4×4的滤波器大小。在网络开始,一个没有下采样的additional residual block通过提供更大的感受野来解决更大的模糊。

        为了加快训练过程,我们在编码部分和解码部分之间添加了跳跃连接。因此,我们将从编码器中提取的特征添加到相关的解码器部分。这使得网络能够学习在模糊的输入和清晰的ground-truth之间的残差,而不是最终从头开始生成一个清晰的图像。因此,该网络是全卷积的,允许任意的输入大小。(具体细节详见表1)。

Skip connections as temporal links.我们还建议随着时间的推移,在后续的deblur block之间传播潜在的特征。为此,我们将前一个迭代的特征与当前deblur block的一些特征连接起来。这些跳跃连接如图3中的绿线所示。进一步,减少通道尺寸,以匹配下一层所需的输入形状,使用了一个1x1的卷积层记为B_{.,.}。通过这种方法,网络可以通过混合当前特征和前一次迭代中传播的特征来学习加权和。这种构造的一个优点是,我们可以在第一个deblur block中禁用这些跳跃连接,并且只在后续的迭代中应用这些连接。此外,它们还可以应用于没有时间跳跃连接的预训练模型。Training details. 使用homography matrices or estimated optical flow information对齐输入可能容易出错,并减慢重建和preventing time critical applications。因此,我们直接在一系列具有大摄像机抖动的未对齐帧上训练网络。为了进一步挑战该网络,我们使用合成的PSF kernels为每一个模糊帧中添加了人工相机抖动。这些大小为7×7、11×11,15×15的PSF kernel是通过高斯过程生成的来模拟相机抖动。为了考虑到梯度消失问题,我们对每个deblur block都使用一次损失函数,如图3所示。

3.Experiments 

4.Conclusion

        我们提出了一种新的递归网络架构-recurrent deblurring network(RDN),可以有效地从一系列未对齐的模糊帧中去除相机抖动我和物体运动引起的模糊。我们提出的模型能够快速处理任意长度和大小的图像序列。我们引入了连续deblur blocks之间的时间跳跃连接的概念,它允许在几个时间步长中有效地传播信息 。我们提出的网络在各种模糊观测结果下迭代地提高目标帧的清晰度。此外,我们提出了一种新的方法来有效地生成大量的模糊/清晰的视频序列对。

References

[1] Patraucean V, Handa A, Cipolla R. Spatio-temporal video autoencoder with differentiable memory[J]. arXiv preprint arXiv:1511.06309, 2015.

[2] Su S, Delbracio M, Wang J, et al. Deep video deblurring for hand-held cameras[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 1279-1288.

[3] Wieschollek P, Schölkopf B, Lensch H, et al. End-to-end learning for image burst deblurring[C]//asian conference on computer vision. Springer, Cham, 2016: 35-51.

[4] Cho K, Van Merriënboer B, Gulcehre C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation[J]. arXiv preprint arXiv:1406.1078, 2014.

[5] Ronneberger O, Fischer P, Brox T. U-net: Convolutional networks for biomedical image segmentation[C]//International Conference on Medical image computing and computer-assisted intervention. Springer, Cham, 2015: 234-241.

[6] He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.

猜你喜欢

转载自blog.csdn.net/wwb12138/article/details/124069439