视频中的实体重定时
如果能操控视频里面人物动作的时间,就能让视频编辑人员制作出精彩的效果,甚至能改变一项活动的感知。视频操控广泛应用于电影中,用以修改时间,加快或减慢人物的动作。我们是不是常常看到这样的镜头?在动作场景中,自己最喜欢的动作电影明星旁边,反派人物被冻结不动
本报告将探究一个基于深度学习的方法,这个方法可处理有多个人物移动的实景视频。重新绘制过后输出逼真的视频,其中人物的动作时间已被修改。
论文 | 项目网站
引言
为什么这是个难题?
重定时视频里面的人物动作是有难度的。如前所述,重定时广泛用于电影业,但迄今为止其研究主要在角色动画中。在角色动画中,难度在于重定时一系列关节的动作。然而,这些关节存在时空上的关联性。一般情况下,这些角色同时也存在真实的三维模型。
想象一下操控实景视频里面人物的时间。移动的不仅仅是关节,而是整个身体。除此之外,为了生成逼真的高质量重定时效果,与人物动作关联的各种元素都要重定时,要正确无误,比如说人的影子、反光、溅起的水花等等。
一个视频绝不限于一个人。需要处理主体之间的互动。一点点错误,例如帧之间轻微错位,就会显露出人工的视觉效果。
所提出的方法为什么有前景?
-
该方法基于单个视频进行优化,把每一帧分解成一系列图层(RGBA彩色图像,稍后详述)。这个优化过程保证了不同时间的每一个RGBA图层都关联到视频中的某个人或一组人。其分组操作可预先确定,因此,优化就有了这种约束限制。每个图层一组对象,保证重定时效果的强健控制。
-
用现有工具得到人物粗略参数化,模型利用参数化结果,将自动学习把场景中的人物及其关联元素分成一组,关联元素如人影、反光等等。
-
由于每个组都有自己的图层,重定时效果就可以通过对图层的简单操控而实现,例如删除、复制、插入特定图层,无需额外的训练或处理。这是因为视频的原始帧可重新构建,就是用预计的帧做标准的前后倒置合成。
-
该方法适用于通常的实景视频。很多应用可从中受益。
请看论文作者提供的视频。👇
概述所提出的方法
所提出的方法是基于一种新兴深度神经网络,这种神经网络学习对输入视频按层分解。从而,模型把人们的动作拆解到不同的图层,人的关联元素与其本人放在同一个图层,如人影、反光等等,
所提出的模型是基于单个视频以自律形式进行训练。大量的图片任务就是为了通过预测图层来重构原始视频。想想看,它是很聪明的。我们看看其方法:
-
描绘结果传递给神经渲染器。神经渲染器的输入只包括人(稍后看方法)和一个静态背景。渲染器的任务就是生成图层,就是用这些图层重构整个输入视频。厉害吧?有了这些预计的帧,你就可以用各种简单的编辑技术来实现重定时。其他好处就是,学习过的图层同时会捕捉关联元素。
概述所提出的方法.来源
接下来深入分析该方法的实质。
界定问题
假设有一个输入视频V,目标就是把每一帧Tt∈V分解成一系列RGBA(颜色通道+不透明度)图层。可表示为:
At={Lti}i=1N={Cti,αti}i=1NA_t = \{L_t^i\}_{i=1}^N = \{ C_t^i, \alpha_t^i \}_{i=1}^N
其中 CtiC_t^i是一个彩色图像,αti\alpha_t^i是不透明度分布图。每个ithi^{th}图层关联到视频里的ithi^{th}人或组。同时, Lt0L_t^0是背景图层。利用预计的图层和图层前后倒置排序,可以用标准的“叠加”运算器绘制每一个视频帧。该运算表示如下:
I^t=Comp(At,ot)\hat I_t = Comp(A_t, o_t)
其中oto_t是预计图层的排序。如果绘制的帧与输入的帧完全相同,上述等式就成立。
作者用自律学习把每一帧分解为一系列图层,很聪明。我们将在训练部分详述其方法。
分层神经渲染器
一个基于深度神经网络的架构,被称为分层神经渲染器,用于把视频帧分解成一系列图层。
实景视频可以分解为很多种形式。包含整个帧的单个图层就能完美分解视频。但这没用,因此,作者驱使神经渲染器以使方案变为针对单个人的分解方式,这才是想要的。
渲染器的输入按照如下方式构建:
-
描绘单个人:视频里的每个人被参数化为单个人纹理图TiT^i 以及每一帧的UV坐标分布图 UVtiUV_t^i,在帧It处人物区域的每个像素映射到纹理图。为了描绘时间TiT^i 处的人物i,利用UVUVtiUV_t^i获取Tti,从而对深度纹理图TtiT_t^i进行采样。
-
描绘背景:整个视频的背景用单个纹理图T0T^0 描绘。这是用来学习必要的色彩。根据UV坐标图$UV_t^0$0对背景进行采样。背景的UV坐标图放置于每个人的UV坐标图的后面,从而为渲染器提供背景环境。
神经渲染器以分开前馈传递的方式预测图层。渲染器的输入-输出如下:
-
输入:背景的UV坐标图放置于每个人的UV坐标图的后面,以提供背景环境。因此,时间tt处图层ii的输入就是采样的深度纹理图TtiT_t^i,包括人物 i′si's的采样纹理和背景的采样纹理,前者放到后者上面。
-
输出:渲染器的输出为Lti={Cti,αti}L_t^i = \{C_t^i, \alpha_t^i \}。其中CtiC_t^i 是随时间变化的彩色图像,αti\alpha_t^i是不透明度分布图。
渲染器的目的就是用预测的图层(输出)重构原始帧。
训练
模型针对单个视频进行训练,以便于找到最优参数θθ。作者用了三个损失函数:
-
一个明显的损失函数就是 L1L_1,即输入帧与绘制帧之间的损失,因为这个任务被表示为一个重构问题。表示如下:
Erecon=1K∑t∣∣It−Comp(At,ot)∣∣E_{recon} = \frac{1}{K} \sum_{t}||I_t - Comp(A_t, o_t)||
-
仅这一项不足以从随机初始化达到优化收敛。作者很聪明,他们促使学习过的ii分布图αti\alpha_t^i 匹配与图层i关联的人物片段。这仅用来引导模型,在优化过程中会关闭。
Emask=1K1N∑t∑iD(mti,αti)E_{mask} = \frac{1}{K} \frac{1}{N} \sum_t \sum_i D(m_t^i, \alpha_t^i)
其中mti是从UV坐标图m_t^i是从UV坐标图UV_t^i,衍生出来的三元图,,衍生出来的三元图,D$是实例函数。
-
作者还在不透明度αti用了一个正则化损失,促使不透明度在空间上稀疏。表示如下:
Ereg=1K1N∑t∑iγ∣∣αti∣∣1+Φ0(αti)E_{reg} = \frac{1}{K} \frac{1}{N} \sum_t \sum_i γ||\alpha_t^i||_1 + Φ_0(\alpha_t^i)
其中 Φ0(x)=2.Sigmoid(5x)−1Φ_0(x) = 2. Sigmoid(5x) -1 缓慢惩罚α分布图的非零值。
总体损失表示为:
Etotal=Erecon+γmEmask+βEregE_{total} = E_{recon} + γ_mE_{mask} + βE_{reg}
结论
本报告只能让大家了解所提出方法的主旨大意。原论文有精彩的详细内容,我强烈建议大家自己动手去做一做。利用学习过的神经渲染器,输入的视频被分解为图层。有了预测的图层,通过对图层的简单操控即可生成各种重定时效果和编辑效果。
神经渲染器描绘出人物及其关联的全部时空视觉效果,包括人物衣服的摆动,甚至是有挑战性的半透明效果,如人影和反光。这是个有趣的研究领域,作者在论文中用的方法很聪明。
我希望大家通过本报告了解作者是如何做的。请在下方评论处留言。