摘要
过去,手工重绘一副艺术风格的图像需要专业的艺术家和很长的时间,重绘视频序列更是无法想象。现在使用计算机使其成为可能,我们提出了一种方法,将风格从一张图片转移到整个视频序列。我们利用最近静态图片风格转移的最新进展,并提出适用于视频的新初始化和损失函数。这使我们能够生成一致且稳定的风格化视频序列,即使在具有大运动和强遮挡的情况下也是如此。我们表明,所提出的方法在质量和数量上明显优于更简单的baseline。
Introduction
最近对使用深度神经网络的样式转移问题做出了许多有趣的贡献。Gatys [3]提出了一种新的方法,使用神经网络捕捉艺术图像的风格,并将其转移到现实世界的照片。他们的方法使用来自VGG卷积网络[10]隐藏层的图像的高级特征表示来分离和重新组合内容和风格。这是通过制定优化问题来完成的,从白噪声开始,优化白噪声图片与内容图片有相似的神经元激活以及与风格图像有相似的特征相关性(用Gram矩阵来表示)。
本文以Gatys等人的方法为基础[3]并将风格转移扩展到视频序列。给定一副艺术图片,我们转移特点的风格到整个视频中。如果将视频每一帧独立的转换,会由于转换的不稳定性导致视频播放的闪烁和不连贯。为了规范转化并保持视频的各个帧之间的平滑过渡,我们引入了时间约束,用于惩罚两帧之间的偏差。时间约束考虑了来自原始视频的光流:不是惩罚与前一帧的偏差,而是惩罚沿点轨迹的偏差。遮挡区域和运动边界对其进行偏差惩罚。这允许该过程重建被遮挡区域和扭曲的运动边界,同时保留图像其余部分的外观,见图1。
此外对我们的方法提出了两种扩展,第一是使其可以在更长的时间里提高一致性;当在某个帧中被遮挡并且稍后被解除遮挡的区域在该过程中被重建时,该区域很可能具有与遮挡之前不同的外观。为了解决这个问题,我们使用了长期运动估计。这允许我们在遮挡之前和之后强制合成帧的一致性
第二风格转移往往会在图像边界处产生伪影。对于静态图像,这些伪影几乎不可见,但对于具有强相机运动的视频,它们朝向图像的中心移动并被放大。我们开发了一种多通道算法,该算法使用前向和后向流以交替方向处理视频。这会产生更连贯的视频。
我们在Sintel基准测试中结合不同的光流算法定量评估了我们的方法。此外,我们还展示了几部电影的定性结果。我们能够成功消除大部分时间伪影,并可以创建流畅和连贯的风格化视频。
相关工作
-
使用深度网络进行风格转移:Gatys等人 [3]通过使用VGG-19深度神经网络进行风格转移得到了显着的结果。各种后续论文采用了他们的方法,其中提出了不同的方式来表示神经网络中的风格。Li等人 [5]提出了一种保留风格图像的局部模式的方法。 他们使用神经元激活块来表示风格而不是使用Gram矩阵这样的全局表示。Nikulin等人 [7]尝试了Gatys等人的风格转移算法,在除了VGG之外的其他网络上的效果,并提出了图像风格表示方式的几种变化,以存档不同的目标,如照明或季节转移。但是,我们不知道有任何将此风格传输应用于视频的工作。
-
彩绘动画:创建具有艺术风格的视频序列的一种常见方法是生成人工画笔笔划以重新绘制场景。通过修改这些画笔笔划的各种参数(如厚度)或使用不同的画笔放置方法,可以获得不同的艺术风格。为了实现时间一致性,Litwinowicz [6]是最早使用光流的人之一。在他的方法中,为第一帧生成画笔笔划,然后沿着流场移动。后来,这种方法得到了改进,Hays 等人[4]为画笔笔划提出了新的文体参数,以模仿不同的艺术风格。O’Donovan等 [8]针对画笔笔划的最佳放置和形状制定了能量优化问题,并且还通过惩罚与前一帧相比的画笔笔划的形状和宽度的变化,将时间约束集成到优化问题中。这些方法在思想上与我们正在做的相似,但它们只能应用一种受限制的艺术风格。
静态图像中的风格迁移
这一节主要回顾Gatys[3]等人的方法,可参考:http://
视频中的风格迁移
我们使用以下记号: p ( i ) p^{(i)} p(i)表示原始视频的第i帧, a a a是风格图片, x ( i ) x^{(i)} x(i)是风格化后的帧,此外我们使用 x ′ ( i ) x'^{(i)} x′(i)表示第i帧的风格化算法初始图像, x j x_j xj表示向量的第j个部分。
初始化的短期一致性
当连续帧的样式传输由独立的高斯噪声初始化时,视频的两帧会聚到不同的局部最小值,导致视频强烈的抖动。最基础的产生时间一致的方法是使用第i帧风格化后的图片作为i+1帧的初始化。这样可以使两帧图片中一样的区域不改变,而剩下的区域使用优化函数转换。如果场景中存在物体运动,则这种简单的方法效果不佳,因为移动对象的初始化不正确。因此我们考虑光流以及使用前一帧的风格图片作为当前帧的初始化 x ′ ( i + 1 ) = w i ( i + 1 ) ( x ( i ) ) x'^{(i+1)}=w_i^{(i+1)}(x^{(i)}) x′(i+1)=