2019 CVPR《Learning to Synthesize Motion Blur》(oral)
Tim Brooks Jonathan T. Barron
Google Research
这篇文章的contribution:
设计了一个线性预测层 “line prediction” layer从网络视频中制作了训练集、高速相机拍摄了测试集和同类方法有差不多的效果,但是更快要实现的目标是输入连续拍摄的两张图片,得到一张在这张照片拍摄过程中产生了运动模糊的照片,可以应用到动画制作和照片艺术化处理中。
首先来看一下 “line prediction” layer,具体思想是一个照片产生运动模糊大部分是线性的,只考虑线性状态的模糊。当模糊的方向Δ确定下来,生成图像的每一个点都和输入的两张图像中该方向点上的值乘以该点的权值相关。在此方向上均匀的取N个点,新的图像的大小由这N个点产生。
在上面这个公式中 左边表示输出的产生了运动模糊的图片,表示预测的方向上第n个点的权值,分别表示运动在x和y方向的偏移, 和表示输入的两张图片。
所以只要得到权值和模糊方向就可以得到相应的运动模糊图像。
权值和方向由下面这个网络产生,把两张输入图像拼接作为input,整体用的U-net,最后一层通过1*1的卷积得到预测的权值和方向四元组。
生成训练集
选取网络视频的几个原则:
高频图像内容足够的运动有限的运动没有突变大体呈线性运动每次选取视频的三帧,中间一帧最为groudtruth训练一个视频插值网络,用这个网络迭代的产生视频的33帧,把这33帧相加取平均得到发生运动模糊的图像。那么此前选取的第一帧和最后一帧作为输入,产生的模糊图像最后输出的groudtruth即可进行训练。
比较实验结果
作者和五种baseline进行比较,naive baseline是直接把输入的两张图像取平均,中间两张用的是光流法,下面两种用的视频插值的方法。用了两个评价指标:
PSNR(峰值信噪比),PSNR值越大,就代表失真越少。SSIM(结构相似性),从亮度、对比度、结构三方面度量图像相似性 SSIM取值范围[0,1],值越大,表示图像失真越少。可以看出他们的实验效果略优于baseline,更显著的是他们的时间大大缩减了。
作者另外做了几组消融实验
他们给出的网络中不使用 line prediction layer,直接最后一层过1*1卷积得到运动模糊图像。他们给出的网络中不再给出line prediction layer中权值的预测,而是使用同一个均匀值作为权值,即1/2N他们给出的网络中不使用 line prediction layer,而是通过预测kernel的方法得到相应的模糊图像。实验效果图