输入一张任意姿势的照片,想让照片里的人跟随「指定视频」来进行动作模仿并不简单,除了肢体动作的模仿外,模型还需要对运动过程中衣服、人物外观的变化进行建模。
如果输入图像是正面的,而模仿的视频动作包括转身的话,模型还需要「想象」出衣服的背面样子,以及衣服在转动过程中飘起的样子。
为了解决这个问题,来自加州大学伯克利分校的研究人员提出了一个两阶段的、基于扩散模型的框架3DHM,通过从单个图像完成纹理图来合成3D人体运动,然后渲染3D人体以模仿视频中actor的动作。
论文地址:https://arxiv.org/abs/2401.10889
3DHM模型中包含两个核心组件:
1. 学习人体和服装中不可见部分的先验知识。
研究人员使用填充扩散(in-filling diffusion)模型,在给定的单张图像中想象(hallucinate)出不可见部分,然后在纹理图空间(texture map space)上训练该模型,在姿势和视点不变的条件下提升采样效率。
2. 使用适当的服装和纹理渲染出不同的身体姿势。
研究人员开发了一个基于扩散模型的渲染pipeline,由3D人体姿势控制,从而可以生成目标人物在不同姿势下的逼真渲染,包括衣服、头发和看不见区域下的合理填充。
该方法可以生成一系列忠实于目标运动的3D姿态、在视觉上与输入更相似的图像;3D控件还能够使用各种合成相机轨迹来渲染人物。
实验结果表明,相比以前的方法,该方法在生成长时间运动和各种高难度的姿势上更有弹性(resilient)。
合成运动中的人物
纹理贴图涂色(Texture map Inpainting)
第一阶段模型的目标是通过涂色模仿者的不可见区域,生成可信的完整纹理贴图。
研究人员首先将三维网格渲染到输入图像上,然后按照4DHumans的方法对每个可见三角形进行颜色采样,从而提取部分可见的纹理图。
输入(input)
先利用一种常用的方法来推断像素到表面的对应关系,从而建立一个不完整的UV纹理图,用于从单张RGB图像中提取三维网格纹理。同时计算可见性掩码,以显示哪些像素在3D中可见,哪些不可见。
目标(target)
由于建模的目的是生成完整的纹理贴图,因此使用视频数据生成伪完整纹理贴图。
由于4DHumans可以随着时间的推移追踪人物,因此会不断更新其内部纹理图,将其表示为可见区域的移动平均值。
但为了生成更清晰的图像,研究人员发现中值滤波比移动平均法更适合生成任务;虽然该技术可以应用于任何视频中,但在本阶段使用的是2,205个人类视频,对于每段人类视频,首先从每帧视频中提取部分纹理图。
由于每段视频都包含360度的人类视角,因此从整段视频中计算出一个伪完整纹理图,并将其设置为第1阶段的目标输出,具体来说是提取视频纹理图可见部分的整体中值。
模型(Model)
研究人员直接在Stable Diffusion Inpainting模型上进行微调,该模型在图像补全任务中表现出色。
输入部分纹理贴图和相应的可见度掩码,然后得到复原的人类预测贴图;锁定文本编码器分支,并始终将「真人」(real human)作为固定稳定扩散模型的输入文本。训练好的模型称为 Inpainting Diffusion
人体渲染(Human Rendering)
第二阶段的目标是获得一个模仿actor动作的人的逼真渲染效果。
虽然中间渲染(根据演员的姿势和阶段1中的纹理贴图渲染)可以反映人体的各种动作,但这些SMPL网格渲染是紧贴人体的,无法表现出服装、发型和体形的逼真渲染效果。
例如,如果输入一个女孩穿着裙子跳舞的场景,中间的渲染可能是「跳舞」,但SMPL网格渲染却无法将裙子做成动画。
为了以完全自监督的方式训练模型,研究人员假定actor就是模仿者,毕竟一个好的actor应该是一个好的模仿者;然后就可以从4DHumans中获取任意视频和姿势序列,再获取任意单帧,并从阶段1中获取完整的纹理贴图,通过在三维姿势上渲染纹理贴图来获取中间渲染图。
有了中间渲染图和真实RGB图像的配对数据后,就可以收集大量的配对数据作为条件来训练第二阶段扩散模型。
输入(Input)
首先将第1阶段生成的纹理贴图(完全完整)应用到actor的三维身体网格序列中,并对模仿者执行演员动作的过程进行中间渲染。
需要注意的是,此时的中间渲染只能反映与三维网格相匹配的服装(贴身衣物),而无法反映SMPL身体以外的纹理,如裙子、冬季夹克或帽子的膨胀区域。
为了获得具有完整服装纹理的人体,研究人员将获得的中间渲染图和人体原始图像输入到渲染扩散中,以渲染出具有逼真外观的人体新姿势。
目标(Target)
由于在收集数据时假定actor是模仿者,所以基于中间渲染图和真实RGB图像的配对数据,可以在大量数据上训练该模型,而不需要任何直接的3D监督信号。
模型(Model)
与ControlNet类似,研究人员直接克隆稳定扩散模型编码器的权重作为可控分支(可训练副本)来处理3D条件。
冻结预先训练好的稳定扩散模型,并输入噪声潜点(64×64),同时将时间t的纹理映射三维人体和原始人体照片输入到固定的VAE编码器中,得到纹理映射三维人体潜码(64 × 64)和外观潜码(64 × 64)作为条件潜码(conditioning latents)。
然后将这两个条件潜码输入渲染扩散可控分支,该分支的主要设计原则是从人类输入中学习纹理,并在训练过程中通过去噪处理将其应用于纹理映射的三维人类。
目标是从第1阶段生成(纹理映射)的三维人体中渲染出具有生动纹理的真人。
通过扩散步骤程序和固定VAE解码器获得输出潜像,并将其处理为像素空间。
与第1阶段相同,锁定了文本编码器分支,并始终将「真人正在表演」(a real human is acting)作为固定稳定扩散模型的输入文本。
将训练好的模型称为渲染扩散(Rendering Diffusion)模型,逐帧预测输出。
实验结果
对比基线
用于对比的sota模型包括DreamPose、DisCo和ControlNet(姿势准确性比较)。
公平起见,所有方法的推理步骤都设为50步。
帧生成质量(Frame-wise Generation Quality)
研究人员在2K2K测试数据集上对比了3DHM和其他方法,该数据集由50个未见过的人体视频组成,分辨率为256×256。
每个人物视频拍摄30帧,代表每个未见者的不同视角,角度范围涵盖0度到360度,每12度取一帧,可以更好地评估每个模型的预测和泛化能力。
从结果中可以看到,3DHM在不同指标上都优于其他基线方法。
视频级生成质量(Video-level Generation Quality)
为了验证3DHM的时间一致性,研究人员还报告了与图像级评估相同的测试集和基线实施的结果。
与图像级对比不同的是,将每连续的16个帧串联起来,形成每个未见过的人在具有挑战性的视角上的样本。
角度范围从150度到195度,每3度取一帧,可以更好地评估每个模型的预测和泛化能力。
根据50个视频的总体平均得分结果中可以看到,尽管3DHM是按每帧进行训练和测试的,但与之前的方法相比仍具有显著优势,也表明3DHM在保持三维控制的时间一致性方面表现出色。
姿势准确率(Pose Accuracy)
为了进一步评估模型的有效性,研究人员首先通过先进的三维姿势估计模型 4DHumans从不同方法生成的人类视频中估计三维姿势,然后使用相同的数据集设置,并将提取的姿势与目标视频中的三维姿势进行比较。
由于ControlNet不输入图像,所以研究人员选择输入了相同的提示「真人正在活动」(a real human is acting)和相应的openpose作为条件。
从结果中可以看到,3DHM能够按照所提供的三维姿势非常准确地合成出活动的人;同时,以前的方法可能无法通过直接预测姿势到像素的映射达到同样的性能。
还可以注意到,即使DisCO和ControlNet由Openpose控制,DreamPose由DensePose控制,3DHM也能在2D指标和3D指标上取得优异的结果。
参考资料:
https://arxiv.org/abs/2401.10889