【AIGC】MOMO:基于空间分解建模的可控人物视频合成

时间:2024-10-21 08:28:26

引言

可以基于单个类似场景的视频驱动替换视频中的人物,能够大大减少基于每个人物单独训练的成本。

核心思想是考虑到视频发生固有的3D性质,将2D视频编码为紧凑的空间编码。具体来说,我们使用单目深度估计器将 2D 帧像素提升到 3D,并根据 3D 深度将视频剪辑分解为分层层中的三个空间分量(即主要人类、底层场景和浮动遮挡)。这些组件进一步编码为规范身份代码、结构化运动代码和完整场景代码,用作合成过程的控制信号。空间分解建模的设计支持灵活的用户控制、复杂的运动表达以及 3D 感知用于场景交互。实验结果表明该方法的有效性和鲁棒性。

 MIMO的基本思想。具有多个输入(例如,人物的单个图像、运动的姿势序列和场景的单个视频/图像)或驱动视频提供的所需属性的可控人物视频合成。将目标属性嵌入到潜在空间中作为目标码,将驱动视频空间分解为空间码。目标人物视频可以在用户控制中使用组合属性代码生成。

上图表明人物,动作和场景结合的*度非常高,得益于该网络在设计之初对这三者做了解耦操作,然后分别编码。

框架的概述。基于 3D 深度,视频剪辑被分解为三个空间组件(即主要人类、底层场景和浮动遮挡)。通过规范外观转移和结构化身体代码进一步解开身份和运动属性,并编码为身份代码 Cid 和运动代码 Cmo。场景和遮挡组件嵌入了共享的 VAE 编码器,并重新组织为完整的场景代码 Cso。这些潜在代码被插入到基于扩散的解码器中,作为视频重建的条件。

疑惑点:具体是怎么将2d信息转化为3d的,如何将视频帧分解为三个组成成分体现在深度信息上。

方法

我们的模型实现了空间组件的自动和无监督分离,并考虑到固有的3D性质来控制合成,将它们编码到紧凑的潜在编码中。因此我们的输入是不带任何标注的2D人物视频。

分层空间层分解

        考虑到视频组合固有的3D元素,我们将视频的每一帧划分为3个部分,人物,场景和遮挡。具体做法将每一帧使用单目深度估计器获取单目深度图。该单目深度估计器使用的是开源项目Depth Anything。人体层首先通过人体检测,使用的是facebook的detectron2库;然后通过视频追踪方法传导到视频帧的其他帧(使用的方法是sam2)。Mh是一个视频帧数N的二值掩码图。随后利用视频追踪提取遮挡层Mo;而每一帧去掉人物和遮挡物就是场景层Ms。

 公式表示每一帧乘以各自层(人物,遮挡物和场景)

 人物编码解纠缠

        该分支用于将Vh编码为两个部分Cid和Cmo。之前的一些工作,比如AnimateAnyone,MagicAnimate和MimicMotion会随机选取视频帧中的一帧来表示外观并提取2D轮廓关键点作为姿态表示。这种设计会存在两个核心问题影响着网络的表现能力。1)2D姿态很难像3D姿态那样充分表达三位空间中的运动,特别是当关节变形程度很大和频繁的遮挡2)视频中各帧的姿态高度相似,不可避免地存在从摆拍视频中检索到的外观帧和目标帧之间的纠缠。因此,我们引入了新的三维运动和身份表示,以充分表达和充分解除纠缠。

 结构化的运动。我们定义了一组潜在码Z ={z1, z2,…, znv},并将它们锚定到可变形人体模型(SMPL)的相应顶点上[18],其中nv为顶点数。对于帧t,使用开源项目4DHumans从单目视频帧vh t估计SMPL参数St和摄像机参数Ct。然后根据人体姿势St变换潜码的空间位置,并根据相机设置Ct投影到二维平面上。使用带顶点插值的可微光栅器[14],可以获得连续值的二维特征映射Ft。{Ft, t = 1,…, N}将沿着时间轴堆叠,并通过姿态编码器作为运动代码Cmo嵌入到潜在空间中。通过这种方式,我们建立了一个对应关系,将底层3D体表的同一组潜在代码映射到任意视频的不同帧的姿势2D渲染图。这种结构化的身体代码可以通过3D遮挡实现更密集的姿势表示。

规范化标识。为了完全从视频帧的姿态中分离出来,一个理想的解决方案是从单目视频中学习动态的人类表征,并将其从姿态空间转换为规范空间。考虑到效率,我们采用了一种简化的方法,使用预训练的人体恢复姿态模型直接将摆位的人体图像转换为标准a位的规范结果。将合成的规范外观图像馈送到ID编码器以获得身份codeCid。这种简单的设计使身份和运动属性完全分离。接下来[7],ID编码器包括一个CLIP图像编码器和一个参考网络架构,分别嵌入全局和局部特征,它们组成Cid。

场景和遮挡编码

在场景和遮挡分支中,我们使用共享和固定的VAE编码器[13]将vs和vo分别作为场景代码Cs和遮挡代码Co嵌入到潜在空间中。在vs输入之前,我们对R(vs)采用视频重绘的方法[36]进行预恢复,避免通过掩模轮廓带来的混淆。然后将场景码c和遮挡码Co连接在一起,得到完整的场景码Cso,进行合成。空间分量(即中间人、底层场景和浮动遮挡)的独立编码使网络能够自动学习层组成,从而在复杂的场景中实现自然的字符插入,即使有遮挡的物体交互。

 组合解码

给定分解属性的潜在码,将其重组为基于扩散解码器进行视频重构的条件。如图4所示,我们采用基于稳定扩散(SD)[25]的U-Net骨干网去噪,时间层来自[4]。将完整的场景codeCso与潜在噪声相连接,并送入三维卷积层进行融合和对齐。将运动码Cmo加入到融合特征中,输入到去噪的U-Net中。对于身份码Cid,其局部特征和全局特征分别通过自关注层和交叉关注层插入到U-Net中。最后,通过预训练的VAE解码器将去噪结果转换为视频片段[13]。

训练

 我们基于来自SD 1.5[25]的预训练权值初始化U-Net和referenet去噪模型,而运动模块则使用AnimateDiff[4]的权值初始化。在训练过程中,VAE编码器和解码器以及CLIP图像编码器的权值被冻结。我们利用扩散噪声预测损失对去噪U-Net、位姿编码器和参考网络进行了优化:

 式中,x0为增广输入样本,t为扩散时间步长,xt为t时刻的噪声样本,εθ为去噪UNet的函数。我们在8个NVIDIA A100 gpu上进行训练。大约需要5万美元迭代24视频帧和批处理大小为4收敛。

 实验结果

数据集。我们创建了一个名为HUD-7K的人类视频数据集来训练我们的模型。该数据集由5K个真实人物视频和2K个合成人物动画组成。前者不需要任何注释,并且可以通过我们的方案自动分解为各种空间属性。为了扩大真实数据集的范围,我们还利用En3D在多个摄像机视图下渲染复杂动作的角色动画来合成2K视频[21]。由于完全控制制作,这些合成视频配备了准确的注释。

可控人物视频合成

        在给定人物、动作和场景的目标属性的情况下,我们的方法可以生成真实的视频结果,并将它们的潜在代码组合在一起进行引导合成。目标属性可以通过简单的用户输入(例如,单个图像/视频用于角色/场景,来自大型数据库[1,20]的姿势序列用于运动)或灵活地从现实世界的视频中提取,涉及遮挡物体交互和极端关节运动的复杂场景。在下面,MIMO证明了它可以同时实现对任意字符的高级可扩展性,对新颖3D运动的通用性,以及在统一框架中的野外场景的适用性。

任意角色控制

如图5所示,我们的方法可以对任意角色进行动画化,包括现实人物、卡通人物和拟人人物。

新型3D运动控制

为了验证新型3D运动的通性,我们使用来自AMASS[20]和Mixamo[1]数据库的具有挑战性的分布外姿势序列来测试MIMO,包括跳舞、玩耍和攀爬(图6 (a))。我们还尝试在3D空间中通过从野外人类视频中提取复杂的空间运动(图6 (b))。我们的方法在不同视点下对这些新颖的3D运动表现出很高的鲁棒性。

交互式场景控制

我们通过从野外视频中提取场景和运动属性来验证我们的模型对复杂真实场景的适用性,用于角色动画(即任务)视频人物替换)。如图7所示,由于我们对分层层的空间感知合成,角色可以通过自然对象交互无缝地插入到真实场景中。

总结

        在本文中,我们提出了一种新的可控制字符视频合成框架MIMO,它允许用户通过简单的属性输入进行灵活的控制。该方法引入了一种新的生成体系结构,将视频片段分解为不同的空间分量,并嵌入其潜在编码作为解码器重构视频片段的条件。实验结果表明我们的方法不仅可以实现灵活的角色,运动和场景控制,而且还可以扩展到任意角色,通用性到新颖的3D运动,并适用于交互式场景。我们还认为,我们的解决方案考虑了固有的3D性质,并自动将2D视频编码为分层空间组件,可以启发未来3D感知视频合成的研究。此外,我们的框架不仅非常适合生成角色视频,而且还可以潜在地适应其他可控视频合成任务。