南洋理工大学 – 商汤科技联合研究中心 S-Lab 团队提出了鉴于 Gaussian Splatting 的高质量 3D 人体赶快重修 (1~2 分钟) 和及时衬着 (高达 189 帧每秒) 框架 GauHuman。GauHuman 可以鉴于用户输入的一段单目人体视频,以及相应的相机和人体动作体型(SMPL)参数,赶快重修该 3D 人体,并及时衬着该 3D 人体。
论文名称:GauHuman: Articulated Gaussian Splatting from Monocular Human Videos
论文下载地址:https://arxiv.org/abs/2312.02973
项目主页:https://skhu101.github.io/GauHuman
代码开源:https://github.com/skhu101/GauHuman
图1 GauHuman可以赶快重修(1~2分钟)和及时衬着(高达189帧每秒) 高质量3D人体。
背景
3D 数字人重修对于一系列应用场景,比如虚拟现实和辅助现实,有着非常大潜在性的影响。鉴于人体神经辐射场,现有步骤可以从 sparse-view 的视频甚至单张图片中恢复出 3D 数字人。然而这些步骤往往需要昂贵的计算时间(高达 10 小时)和资源去完成训练和衬着,极大限制了他们在现实场景中的应用。为了加速建模过程,可泛化三维人体建模步骤采用预训练加微调(pretrain-finetune)的范式。这类步骤通常需要几个小时的预训练去获取可泛化的 3D 人体表征,再对每一个 3D 数字人额外微调一个小时完成建模。由于这类步骤依赖的输入图片只能提供有限的信息,3D 人体重修的质量还有待晋升。另一类研究针对人体建模引入更加高效的 3D 人体表征,比如多精度的哈希表征(multi-resolution hash encoding)或者 neural volumetric primitives。多精度的哈希表征晋升了训练收敛速度,但衬着速度限制了他们的实际应用;neural volumetric primitives 晋升了衬着速度,但训练速度和最终衬着质量还有晋升的空间。得益于 Gaussian Splatting 在静态和动态场景中的及时衬着特性,本步骤针对单目人体视频提出鉴于 Gaussian Splatting 的赶快训练(1~2 分钟)和及时衬着(高达 189 帧每秒)的 3D 人体建模框架。
图2 鉴于一段单目人体视频,GauHuman可以赶快训练(1~2分钟)和及时衬着(高达189帧每秒)高质量的3D人体。
基本原理
利用 Gaussian Splatting 对单目人体视频中的 articulated 3D 人体进行建模,我们需要解决两个难点问题:1)如何将单目人体视频中的 articulated 3D 人体信息引入 Gaussian Splatting 的框架;2)如何实现高效优化 articulated Gaussian Splatting。针对以上的问题,一个比较容易想到的方案是利用 Gaussian Splatting 对尺度空间(canonical space)下的 3D 人体进行建模,并利用线性蒙皮算法(Linear Blend Skinning, LBS)将 3D 高斯球从尺度空间转换到目标空间,从而衬着得到目标空间下的图像并构建损失函数。以上方案存在的一个问题是线性蒙皮算法定义的是3D人体顶点(vertex)的旋转和偏移,如何从人体先验比如SMPL中不准确的LBS系数和姿态(pose)信息中去学习尺度空间中3D高斯球的旋转和偏移仍是一个难点问题。此外,现有的 Gaussian Splatting 步骤利用 Structure-from-Motion(SFM)或随机初始化产生的点云去初始化 3D 高斯球的中心坐标。这一初始化方式主要是针对静态场景设计,忽略了人体的结构信息,不适用于赶快人体建模。针对建模过程中出现的 over-reconstruction 和 under-reconstruction 现象,Gaussian Splatting 论文提出分裂(split)和克隆(clone)的操纵来动态控制 3D 高斯球的数目。尽管以上操纵可以显著晋升重修的质量,它也产生了大量数目的 3D 高斯球,限制了优化的效率并占用了大量的硬盘空间(比如对一个静态场景需要 734MB 的存储空间)。另一个值得关注的点是,现有的Gaussian Splatting框架包含了大量冗余的3D高斯球,留给了我们进一步晋升优化效率的空间。
针对以上提到的一些难点问题,我们从建模框架和赶快优化算法两个方面去考虑解决。【将单目人体视频中的 articulated 3D 人体信息引入 Gaussian Splatting 的框架】受到之前人体神经辐射场(Human NeRF)的启发,我们利用 Gaussian Splatting 对尺度空间(canonical space)下的 3D 人体进行建模,并将 3D 高斯球从尺度空间转换到目标空间。鉴于高斯函数的变换性质,我们可以通过 LBS 算法将 3D 高斯球从尺度空间旋转和偏移变换到目标空间。以上变换涉及到如何估 LBS 系数的问题,直接用神经网络来估计 LBS 系数往往需要很长时间的优化,最后衬着得到的效果也是差强人意。为了赶快得到较为准确的 LBS 系数,我们 1)鉴于 SMPL 的 LBS 系数,并利用神经网络来提供一个偏置值;2)对人体的姿态(pose)信息鉴于训练数据进行纠正。当衬着一张 1024p 的图片时,以上建模框只需要对有限数目(比如 13k)的 3D 高斯球进行滚雪球处理,然而之前的人体神经辐射场需要对整个 3D 空间内百万级的采样点就行体衬着操纵。这极大降低了在训练和衬着中的计算资源耗费。【高效优化 articulated Gaussian Splatting】1)3D 高斯球初始化。我们利用 3D 人体先验比如 SMPL 对 3D 高斯球进行初始化,极大晋升了优化的效率。2)分裂/克隆/合并。通过实验分析,我们发现分裂和克隆操纵忽略了将3D高丝球之间距离作为度量指标。鉴于以上分析,我们引入3D高丝球的Kullback-Leibler (KL)散度去约束分裂和克隆操纵。对于大量冗余的3D高斯球,我们提出了一个合并操纵去有效减小这部分3D高斯球。3)剪枝。考虑到 3D 人体有着特定的结构,我们将远离 3D 人体的 3D 高斯球进行剪枝操纵。鉴于以上的赶快优化算法,我们可以用大约 13k 的 3D 高斯球(大约占用 3.5MB 的硬盘空间)在一到两分钟内完成对 3D 人体的建模。
图3 GauHuman框架原理图。GauHuman首先鉴于人体先验SMPL去初始化3D高斯球位置,紧接着鉴于LBS系数偏差和人体姿态纠正模块去学习3D高斯球从尺度空间转换到目标空间的转换矩阵。在后续优化过程中,GauHuman鉴于tile的可微分衬着器去赶快衬着图片,并利用人体先验和KL散度去约束分裂,克隆,合并和剪枝操纵,以达到有效控制3D高斯球数目的目的。
结果比较
本文在ZJU_MoCap和MonoCap两个单目人体数据集上进行了实验。该研究对比了对比了多个先进的3D人体重修步骤:NB,AN, AS, HumanNeRF, DVA, InstantNVR, InstantAvatar, PixelNeRF和NHP,并在peak signal-to-noise ratio (PSNR),structural similarity index (SSIM),以及Learned Perceptual Image Patch Similarity (LPIPS)指标上进行了比较。如下图所示,GauHuman可以赶快重修(1~2分钟)和及时衬着(高达189帧每秒) 3D人体,并在性能指标上超越了之前的方案。
3D 人体 Novel View Synthesis 结果如下图所示:图4 ZJU_MoCap上Novel View Synthesis结果比较图
图5 MonoCap上Novel View Synthesis结果比较图
应用前景
在游戏电影制作,虚拟现实增强现实或者其他需要数字人建模的场景,用户可通过输入一段单目人体视频,以及该角度下相机的参数和相应的人体动作体形参数(SMPL),就可以达到重修该 3D 数字人的目的。
结语
本文提出一种鉴于 Gaussian Splatting 的高质量 3D 人体赶快重修 (1~2 分钟) 和及时衬着 (高达 189 帧每秒) 框架 GauHuman。可以承认的是,本文依然存在一定的缺陷。首先,如何从 3D 高斯中提取人体 mesh 还有待进一步研究。其次,从单目人体视频中恢复 3D 人体细节,比如说衣服皱褶,依旧是一个很难的问题。一个可行的方案是在 3D 人体重修中引入衣物物理仿真模型。最后,我们的代码已经全部开源,欢迎大家下载玩耍!