ECCV 2022 AvatarCap 清华最新开源的单目人体捕捉方案
本文作者来自清华大学,作者提出了一种基于可驱动 Avatar 的单目人体捕捉技术,首先从少量的人体彩色扫描数据重建可驱动的人体模型,然后基于此模型,将单目彩色相机作为输入,捕捉视频中的人体运动。文章代码已开源。
主页:http://www.liuyebin.com/avatarcap/avatarcap.html
代码:https://github.com/lizhe00/AvatarCap
Overview
文章的简要流程如下图所示,首先从少数一些扫描数据重建出目标可驱动的人体模型,然后再输入目标对象的单目彩色视频,捕捉视频中人体的运动。
- Avatar Creation:输入目标对象少量 (20左右) 带纹理的人体扫描数据,输出其可驱动的人体模型;
- Avatar-conditioned Volumetric Capture:输入目标对象的单目彩色视频,捕捉视频中的人体模型。
Avatar Creation
首先从扫描数据学习一个可驱动的人体 avatar 用于人体体捕捉。参考 SCANimate,作者首先将 SMPL 人体模型拟合到原始扫描数据,并通过逆向蒙皮 (inverse skinning) 运算将扫描数据变换到标准姿态空间。所以目标是从这些标准姿态空间下的扫描数据构建一个由姿态相关的隐式函数表达的可驱动人体 avatar。由于可用的带纹理扫描数据较少,作者提出分解的隐式函数来保证表达能力和泛化能力,以更好地利用训练数据的几何和纹理信息。
GeoTexAvatar Representation
作者提出的人体表达基于 SCANimate 中的 pose-conditioned implicit function f(\mathbf{x}_c, \mathbf{\theta}) = s,其中 s \in [0,1] 是占据值,\mathbf{x}_c 是标准姿态空间 (canonical space) 的 3D 点,\mathbf{\theta} 是 SMPL 的姿态参数。姿态相关的人体表面由隐式函数 f(\mathbf{x}_c, \mathbf{\theta}) = 0.5 的零等值面决定,但该表达将姿态相关的变形和姿态无关的表面细节都依赖输入姿态,因而在训练集中未出现的姿态生成的动画结果会倾向缺少姿态无关的细节信息。为此作者提出了一种分离的表达:
T_{\mathrm{Geo}}\left(W\left(\mathbf{x}_{c}, \boldsymbol{\theta}\right)\right)=s \\
其中 W\left(\mathbf{x}_{c}, \boldsymbol{\theta}\right)=\mathbf{x}_{c} + \Delta W\left(\mathbf{x}, \boldsymbol{\theta}\right) 表示姿态相关的变形场,T_{\mathrm{Geo}}(\cdot) 是姿态无关的占据值。
先前方法都忽略了扫描数据中的纹理信息,作者发现纹理对于约束姿态相关的服装变形 (如服装的切向运动) 非常重要,为此作者基于 neural radiance field 定义了纹理模型
T_{\mathrm{Tex}}\left(W\left(\mathbf{x}_{c}, \boldsymbol{\theta}\right)\right)=(\sigma, \mathbf{c}) \\
相比当前 state-of-the-art 方法,GeoTexAvatar 的优点在于
- 分离的表达能够在动画时保留更多姿态无关的模型细节;
- 几何和纹理的联合监督能够得到更加合理的姿态相关的变形;
- 纹理模型能够通过微调来用于高质量渲染。
GeoTexAvatar Training
GeoTexAvatar 网络的训练损失包含三个部分:
- Geometry Loss:几何网络预测的占据值与 GT 之间的交叉熵损失;
- Texture Loss:纹理网络渲染得到的颜色与模型渲染的颜色之间的 L2 损失;
- Regularization Loss:变形场的正则化损失,惩罚大的变形。
Avatar-conditioned Volumetric Capture
有了 avatar 模型,接下来便要基于此模型进行人体捕捉,该问题最大的困难在于 avatar 表达与输入图片之间的差异,即图片没有提供任何 3D 信息可以关联到 avatar 几何。如下图所示,为了克服这个问题,作者借用法向图作为中间表达来缩小输入图片和 avatar 模型之间的 gap。
给定一张 RGB 图片,首先计算标准姿态空间下 avatar 的法向图和当前图片观测到的法向图,
- 标准姿态空间下的 avatar 法向图:估计当前图片的 SMPL 参数,然后送入 GeoTexAvatar 网络得到标准姿态空间下的 avatar,再渲染得到正面和背面的法向图 \mathbf{F}_{\text{avatar}} 和 \mathbf{B}_{\text{avatar}};
- 当前图片对应的法向图变形到标准姿态空间的结果:将彩色图送入 PIFuHD 的法向图预测网络,预测正面、背面的法向图,然后把标准姿态空间下的 avatar 变形到当前姿态,投影到图像空间,从正面、背面法向图中获取每个顶点的法向。再使用该顶点法向渲染得到标准姿态空间下正面和背面的法向图 \mathbf{F}_{\text{image}} 和 \mathbf{B}_{\text{image}}。
Canonical Normal Fusion
为了将图像上观测到的法向细节 \mathbf{F}_{\text{image}} 融合到 \mathbf{F}_{\text{avatar}} 上,在保留原始 \mathbf{F}_{\text{avatar}} 正确的低频朝向 (如胳膊旋转) 的基础上,增加 \mathbf{F}_{\text{image}} 的高频细节,作者对法向图空间进行格子划分,每个格点定义一个 3D 旋转, 极小化如下能量来优化 \mathbf{F}_{\text{avatar}} :
E\left(\mathbf{R}_{i}, \mathbf{F}_{\text {avatar }}\right)=\lambda_{\text {fitting }} E_{\text {fitting }}\left(\mathbf{R}_{i}, \mathbf{F}_{\text {avatar }}\right)+\lambda_{\text {smooth }} E_{\text {smooth }}\left(\mathbf{R}_{i}\right) \\
其中 E_{\text {fitting }}是数据项,衡量了 avatar 法向经过变换后与 image 法向之间的差异。E_{\text {smooth}} 是光滑项,衡量了相邻格子的旋转矩阵之间的一致性。作者先优化旋转矩阵 \mathbf{R}_i,再固定旋转矩阵优化 \mathbf{F}_{\text{avatar}},得到优化后的法向图 \mathbf{F}_{\text{fused}}。
Model Reconstruction
Geometric Reconstruction:为了从优化的法向图 \mathbf{F}_{\text{fused}} 和 \mathbf{B}_{\text{fused}} 重建人体几何,作者在 THUman 2.0 数据集上训练了一个类似 PIFu 的重建网络 g(h(\pi(\mathbf{x});\mathbf{F}_{\text{fused}}, \mathbf{B}_{\text{fused}}),\mathbf{x}_z),其中 \mathbf{x} 是标准姿态空间的一个 3D 点,h(\cdot) 是从图像特征采样的函数,\pi(\cdot) 是正交投影。通过 Marching Cubes 算法提取标准姿态空间下的人体网格,再通过 LBS 变形到当前姿态。
Texture Generation:基于 GeoTexAvatar 表达,可以进一步计算得到重建的人体模型的纹理。给定标准姿态下人体网格的顶点 \mathbf{v} 和法向 \mathbf{n}_{\mathbf{v}},使用 NeRF 的体渲染计算射线 \mathbf{r}(t) = \mathbf{v} - t \mathbf{n}_{\mathbf{v}} 对应的颜色便可得到顶点的颜色。
Results
下图展示了文章方法人体捕捉的结果,第一行是输入的 RGB 图片,下面两行分别是重建的人体几何和纹理。
下图展示了文章方法和 POSEFusion、PIFuHD 和 NormalGAN 的结果对比,文章方法能够重建更多的细节信息,具有更低的重建误差。
下图展示了文章方法和 SCANimate、SCALE 和 POP 的结果对比,同样本文方法能够重建更多的衣服褶皱等细节信息。
参考
- AvatarCap: Animatable Avatar Conditioned Monocular Human Volumetric Capture. Zhe Li, Zerong Zheng, Hongwen Zhang, Chaonan Ji, Yebin Liu. ECCV, 2022.