GauHuman开源:基于Gaussian Splatting,高质量3D人体快速重建和实时渲染框架
南洋理工大学 - 商汤科技联合研究中心 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 人体重建中引入衣物物理仿真模型。最后,我们的代码已经全部开源,欢迎大家下载玩耍!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。