论文标题:
GaussianAvatar: Towards Realistic Human Avatar Modeling from a Single Video via Animatable 3D Gaussians
论文作者:
Liangxiao Hu, Hongwen Zhang, Yuxiang Zhang, Boyao Zhou, Boning Liu, Shengping Zhang, Liqiang Nie
项目地址:
https://huliangxiao.github.io/GaussianAvatar
\\关于作者//
本文由原paper一作胡良校博士全权翻译写作,胡良校博士就读于哈尔滨工业大学,师从张盛平教授,主要研究方向为人体数字化身建模与驱动,有多项工作发布于顶会顶刊上,本篇paper入选了CVPR 2024。
导读:
3DGS相较于NeRF具有渲染质量高,速度快的优势,NeRF是之前单目人体数字化身建模任务的主流表达方式,如何将3DGS的优势扩展到这一任务中替代NeRF是一个非常有意思的方向。本文介绍如何将3DGS这种高效表达方式建模人体数字化身,为大家呈现一个趣味性极强的可实时驱动的数字化身。©️【深蓝AI】
1. 背景简介
数字化身建模是最近热门的计算机视觉和图形学任务,基于单目视频的人体数字化身建模只是其中的一个小任务。它在元宇宙背景下是存在一定的商业价值的,快速高效建模的需求也使得其成为了一个不小的挑战。
神经辐射场(Neural Radiance Field, NeRF)具有高真实感的渲染质量,是一个建模人体很好的表达方式,但其存在渲染速度和建模速度慢的问题。尽管神经辐射场后续工作尽可能地在弥补这个问题,但基于体渲染的方式依旧很难达到落地级别的建模和渲染速度。
3D高斯泼溅(3D Gaussian Splatting, 3DGS)首先在建模速度和渲染速度上就比神经辐射场要好不少,这得益于其显式的参数化形式以及点云渲染方式。如何将3DGS应用到人体数字化身建模任务上着实是不小的期待。
2. 方案提出
现有主流的单目人体数字化身建模算法大多基于NeRF,除了背景所述的建模和渲染速度较慢的问题,该类方法还有反向蒙皮过程中遇到的一对多问题,这也就导致初始人体姿态不准的问题很难被解决。我们这次提出的「基于可驱动3DGS的人体数字化身建模GaussianAvatar」,希望借助3DGS快速的建模和渲染速度,从单目视频中高效建模人体数字化身并实现实时驱动。同时,借助3DGS显式表达的特点,GaussianAvatar提出了标准姿态下的可驱动3DGS,通过前向蒙皮过程驱动人体高斯点云——前向蒙皮不仅避免了一对多问题,还使得人体姿态优化更为准确。
图1|GaussianAvatar实时驱动效果展示©️【深蓝AI】
图2|GaussianAvatar任务定义©️【深蓝AI】
3. 方法详析
方法流程如图2所示,对当前帧估计一个SMPL/SMPL-X模型,GaussianAvatar在其表面采样空间点并根据UV图关系存成一张位置UV图,其中每一个像素表示空间点的位置坐标。GaussianAvatar将其作为动作信号输入到一个位姿编码器获得动作特征,通过残差相加的方式和一个优化后的特征向量一起输入到高斯参数解码器中得到标准姿态下的高斯点云,然后通过线性混合蒙皮公式进行驱动并最终渲染成当前姿态下的图像。这其中主要包含以下几个技术细节:
图3|GaussianAvatar方法流程©️【深蓝AI】
3.1 可驱动3DGS
可驱动3DGS的本质就是将3DGS和人体模型SMPL/SMPL-X进行结合,可以用一个公式进行说明:
G ( β , θ , D , P ) = S p l a t t i n g ( W ( D , J ( β ) , θ , ω ) , P ) G(\beta, \theta, \mathbf{D}, \mathbf{P}) = Splatting(W(\mathbf{D}, J(\beta), \theta, \omega), \mathbf P) G(β,θ,D,P)=Splatting(W(D,J(β),θ,ω),P)
其中 G ( ⋅ ) G(\cdot) G(⋅)表示渲染的图像, S p l a t t i n g ( ⋅ ) Splatting(\cdot) Splatting(⋅)表示3DGS的渲染过程, W ( ⋅ ) W(\cdot) W(⋅)表示线性混合蒙皮公式, D = T ( β ) + d T \mathbf{D} = T(\beta) + dT D=T(β)+dT表示高斯点的位置,它包含了SMPL/SMPL-X模型的表面点位置 T ( β ) T(\beta) T(β)和预测的空间残差值 d T dT dT, P \mathbf{P} P表示高斯参数除了位置外的其余超参。他包括了预测颜色 c ^ \hat{ \mathbf{c}} c^,预测尺度 s ^ \hat{s} s^以及固定的旋转向量 q \mathbf{q} q和透明度 α \alpha α。如图4所示,这些预测和固定的高斯参数是定义在标准姿态的SMPL/SMPL-X模型下的,用线性混合蒙皮即可完成驱动。
图4|可驱动3DGS©️【深蓝AI】
3.2 动态高斯参数预测
定义完可驱动3DGS,我们需要借助神经网络来预测这些属性参数。如图3所示,我们为此设计了一个动态外观网络和一个可优化特征向量。动态外观网络包括了一个姿态编码器U-Net和一个高斯参数解码器MLP。整个网络用公式表示如下:
f ϕ : S 2 ∈ R 3 → R 7 f_\phi: \mathcal{S}^2 \in \mathbb{R}^3 \rightarrow \mathbb{R}^7 fϕ:S2∈R3→R7
网络学习动作信号与动态高斯参数的映射关系。上诉提到,GaussianAvatar是将位置UV图作为动作信号,当人体动作发生变化时,位置UV图上的像素值也在发生变化,同时借助U-Net的CNN结构能够更好地表达高斯点的属性变化。
这里的预测的高斯参数和源3DGS参数有较大的偏差。源3DGS预测的是球谐系数,与视角方向有关,但是对于单目视频而言,相当于就只有一个视角,因此直接预测颜色的RGB值会比预测球谐系数更为简便有效。同时GaussianAvatar将高斯点云的各项异性改为各项同性,这是因为单目视频缺少多视角的监督,对于一个视频帧而言,神经网络更容易将高斯点过拟合到当前视角,当高斯点是一个各项同性的球体时会减小过拟合的影响。基于此,我们固定旋转向量 q \mathbf{q} q和透明度 α \alpha α,并且直接预测高斯球体的半径。如图5所示,基于各项同性的高斯点云在另一个视角的渲染结果更具合理性。
图5|各项同性高斯的影响©️【深蓝AI】
3.3 动作联合优化
如图3所示,我们对线性混合蒙皮公式用到的人体姿态进行联合优化,这是因为单目人体SMPL估计不准,需要进一步矫正。对此,我们对初始动作添加一个可优化残差,公式表示如下:
Θ ^ = ( θ + Δ θ , t + Δ t ) \hat{\Theta} = (\theta + \Delta {\theta}, \mathbf{t} + \Delta \mathbf{t}) Θ^=(θ+Δθ,t+Δt)
其中,我们对估计的人体姿态 θ = ( θ 1 , θ 2 , . . . , θ J ) \theta = ({\theta}_1, {\theta}_2, ..., {\theta}_J) θ=(θ1,θ2,...,θJ)和人体位移 t \mathbf{t} t添加一个可优化残差 ( Δ θ , Δ t ) (\Delta \mathbf{\theta}, \Delta \mathbf{t}) (Δθ,Δt)。这样我们通过前向蒙皮从标准姿态驱动到当前姿态优化人体动作,能够比先前方法反向蒙皮过程对动作优化更为准确。
3.4 训练策略
GaussianAvatar的训练过程包括两个阶段,第一个阶段将姿态编码器固定,训练可优化特征向量,高斯参数解码器以及动作的可优化残差。这个阶段的损失函数如下:
L s t a g e 1 = λ r b g L r b g + λ s s i m L s s i m + λ l p i p s L l p i p s + λ f L f + λ o f f s e t L o f f s e t + λ s c a l e L s c a l e \mathcal{L}_{stage_1} = \lambda_{rbg}\mathcal{L}_{rbg} + \lambda_{ssim}\mathcal{L}_{ssim} + \lambda_{lpips}\mathcal{L}_{lpips} + \lambda_{f}\mathcal{L}_{f} + \lambda_{offset}\mathcal{L}_{offset} + \lambda_{scale}\mathcal{L}_{scale} Lstage1=λrbgLrbg+λssimLssim+λlpipsLlpips+λfLf+λoffsetLoffset+λscaleLscale左右滑动查看完整公式
其中, L r b g \mathcal{L}_{rbg} Lrbg, L s s i m \mathcal{L}_{ssim} Lssim, L l p i p s \mathcal{L}_{lpips} Llpips分别表示L1损失,SSIM损失以及LPIPS损失。 L f \mathcal{L}_{f} Lf, L o f f s e t \mathcal{L}_{offset} Loffset, L s c a l e \mathcal{L}_{scale} Lscale表示对特征向量,预测的 d T dT dT以及尺度 s ^ \hat{s} s^的L2正则项。
经过这个阶段的训练,我们可以得到较为精确的人体姿态以及表示粗糙人体外观的特征向量 F F F。在第二个阶段,我们将姿态编码器也加入训练,同时固定特征向量 F F F和人体姿态。同时将 L f \mathcal{L}_{f} Lf替换成 L p \mathcal{L}_{p} Lp,用来约束姿态编码器的输出。
4. 实验结果与分析
4.1 实验设置
我们使用的数据集包括了People-Snapshot,NeuMan以及自己采集的DynVideo数据集。People-Snapshot数据集记录了不同人在单目相机前转圈的视频,NeuMan数据集采集了室外运动的人的视频,DynVideo使用手机采集了两组动作较为丰富的人体运动视频,具有相对较多的人体外观变化。
对比方法我们选择了两个基于NeRF的方法:HumanRF以及InstantAvatar。HumanRF维护了一个标准空间的神经辐射场以及一个运动场来表达数字化身;InstantAvatar使用Instant-NGP对NeRF进行加速,能够较快的建模和驱动数字化身。
4.2 定量实验对比
表1|People-Snapshot定量对比结果。Opt.表示动作联合优化,Dyn.表示动态外观建模©️【深蓝AI】
表2|NeuMan定量对比结果。Opt.表示动作联合优化,Dyn.表示动态外观建模©️【深蓝AI】
表3|DynVideo定量对比结果。Opt.表示动作联合优化,Dyn.表示动态外观建模©️【深蓝AI】
4.3 定性实验对比
图6|新视角定性实验对比结果©️【深蓝AI】
图7|定性消融实验结果:(a)是原图;(b)动作优化和动态外观建模联合结果;©只包含动作优化;(d)不包括动作优化和动态外观建模©️【深蓝AI】
图8|动作优化实验结果:(a)(d)是原图;(b)(e)动作优化后结果;©(f)初始姿态估计©️【深蓝AI】
5. 总结
我们通过结合SMPL/SMPL-X模型提出了可驱动3DGS,这一方法能够实现高效建模和实时驱动,外观动作联合优化有效解决初始姿态不准的问题,给予动捕一个新的思路。
然而GaussianAvatar还存在一些问题,例如 无法达到分钟级的建模速度,由于CNN的加入,GaussianAvatar需要几个小时才能在动态外观比较丰富的数据上进行拟合。此外,GaussianAvatar还无法解决宽松衣物的建模,在裙子等衣物上表现较差。建模复杂衣物一直都是数字化身建模的难点,当然这一问题并不是没有解决方案,我们相信在今后的算法中这一问题将会得到有效解决。
移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态。