Learning a Generalized Physical Face Model From Data
University of Wisconsin–Madison; ETH Zurich; Disney Research
一句话总结
本文提出一个从大规模 3D 人脸数据集中学习到的「通用物理人脸模型」:训练时完全不跑 FEM 仿真(simulation-free),运行时又能输出可直接送入物理仿真器的骨骼、肌肉激活与软组织材质。训练好后只需一张 3D 扫描甚至一张人脸照片就能快速拟合到任意新身份,自动得到一套「即拿即用」的物理仿真人脸,支持碰撞处理、重定向、麻痹、骨骼重塑等物理效果。
研究背景
3D 面部动画长期以线性 blendshape 绑定为主,因其简单易用而流行,但存在两个众所周知的缺陷:只能表达线性运动,以及在嘴唇等区域出现表面自穿插。
物理仿真是更精确的替代方案,用解剖学意义上的肌肉激活来驱动软组织变形,天然能处理接触碰撞、响应外力、做解剖编辑。物理方法主要有两条路线:
- 第一性原理法:按真实肌肉结构建模(来自 MRI/CT 或肌肉模板),生理上准确但极其费力,且真实感高度依赖解剖模型精度。
- 形状定位法(shape targeting):把网格的每个单元都视为可激活元素,从捕捉到的皮肤几何反推激活量。只需皮肤几何和骨骼数据,大幅降低建模负担,是近年主流。
但形状定位法目前只能服务于一部制作里的少数「主角」,原因有二。其一,每个角色仍需专门的准备流程:扫描并追踪大量面部皮肤几何、捕捉底层骨骼来界定「材质空间」(rest 骨骼与皮肤之间的软组织),随后为每个角色单独训练一个神经网络来预测各表情的肌肉激活。其二,训练回路里必须嵌入基于有限元法(FEM)的可微仿真,它既慢又吃显存,且是身份专属的。这使得在合理时间与资源内从上百个身份学一个通用模型变得不可行;更糟的是,现有大型人脸数据集普遍缺少材质空间信息,直接卡住了 FEM 仿真。
本文目标就是消除这些障碍,让物理面部动画像 blendshape 一样通用、可控、易用。
核心方法
模型由两个隐式神经网络和两个潜码驱动:身份潜码 \(\beta\) 与表情潜码 \(\gamma\)。输出三样东西,全部可直接喂给现成的物理仿真器:
- 由身份专属材质空间 \(\Omega_{0,\beta}\) 离散得到的静止仿真网格 \(M_{sim}\)(含颅骨、下颌、皮肤及其间软组织);
- 下颌变换 \(\{R_{jaw}, t_{jaw}\}\);
- 激活张量场 \(A\)。
整套方法建立在两个关键贡献上:无仿真学习(Sec. 4.1)与材质空间形变(Sec. 4.2)。
预备知识:激活式人脸仿真
连续介质中,形变梯度 \(F(X)=\nabla_X\phi(X)\) 编码局部旋转与拉伸。无外力时准静态平衡由逐点方程约束:
\[\mathrm{div}\cdot P = \mathrm{div}\cdot \frac{\partial \Psi}{\partial F}(F) = 0\]
其中 \(P\) 是第一 Piola–Kirchhoff 应力张量。激活式人脸仿真采用 shape targeting 的能量密度:
\[\Psi(F, A) = \min_{R\in SO(3)}\lVert F - RA\rVert_F^2 = \lVert F - R^{*}A\rVert_F^2\]
\(A\) 是对称激活张量,模拟单点处的局部肌肉激活;\(R^{*}\) 为 \(FA\) 的极分解,使能量旋转不变。离散化后仿真归结为对形变顶点 \(u\) 的能量最小化,并满足颅骨固定、下颌刚性铰接的边界条件:
\[\arg\min_{u}\ \sum_{e}\frac{V_e}{2}\lVert F_e(u, u_0) - R^{*}_e A_e\rVert_F^2\]
传统上这套仿真无法在大数据集上训练:FEM 计算昂贵,且需要预定义的材质空间 \(\Omega_0\)——而后者在大型数据集里通常缺失。
贡献一:无仿真学习
给定材质空间 \(\Omega_0\)(皮肤、颅骨、下颌已显式定义),目标是在不跑 FEM 的前提下推断连续激活场 \(A(\cdot)\) 和下颌变换来匹配给定表情。作者的关键观察是:对任意可逆映射 \(\phi\),只要把激活张量场设为
\[A(X) = R_\phi(X)^{\top}\nabla_X\phi(X)\]
(\(R_\phi(X)\) 是 \(\nabla_X\phi(X)\) 的极分解),就能得到处处为零的应力张量、从而满足平衡方程。于是逆向设计被大幅简化:只需找一个映射 \(\phi^{*}\),让它在皮肤表面 \(\partial\Omega_{skin}\) 上逼近真值 \(\hat\phi\),同时尽量满足颅骨固定、下颌刚性、生物力学合理三个约束;随后从 \(\phi^{*}\) 自动算出 \(A(\cdot)\)(用上式)和 \(\{R_{jaw}, t_{jaw}\}\)(对下颌区域做 Procrustes 对齐)。
映射函数 \(\phi\) 用隐式网络 \(N_e\) 参数化,并用四个逐点损失约束:
- 重建损失 \(\mathcal{L}_{skin}\):在皮肤表面监督网络输出逼近真值位置。
- 刚性损失 \(\mathcal{L}_{rigid}\):对颅骨和下颌分别施加,逼使其做刚性运动(求解最优 \(R\in SO(3), t\))。
- 固定损失 \(\mathcal{L}_{fix}\):约束颅骨区域保持不动(\(N_e(X_i)\approx X_i\))。
- 软组织损失 \(\mathcal{L}_{soft}\):受杨氏模量 \(E\) 与泊松比 \(\nu\) 启发,含弹性项与体积保持项,用 Lamé 参数 \(\mu,\lambda\) 描述材料行为:
\[\mathcal{L}_{soft}(\Omega_0) = \sum_{i}^{N_s}\frac{1}{N_s}\Big[\min_{R\in SO(3)}\mu\lVert \nabla_X N_e(X_i) - R\rVert_2^2 + \min_{\det(D)=1}\lambda\lVert \nabla_X N_e(X_i) - D\rVert_2^2\Big]\]
\(\mathcal{L}_{soft}\) 尤为关键:它不仅正则化变形,还通过中间的软组织隐式连接皮肤与骨骼,使皮肤被监督向真值时下颌也被「拖」到受约束的合理位置,从而推断出下颌运动学。作者把它类比为物理信息神经网络(PINN)——用一个更光滑、更易微分的神经代理替代 FEM 仿真。
由于所有损失都是逐点的,传统的 FEM 离散仿真被彻底移出学习回路,方法因此又快又可扩展。
贡献二:材质空间形变
为解决「每个身份都需要定制材质空间」的问题,作者用另一个隐式网络 \(N_c\) 学习把单一的规范材质空间 \(\Omega_c\) 形变到任意新身份的材质空间 \(\Omega_0\)。这里用三个损失约束:
- 身份损失 \(\mathcal{L}_{id}\):在皮肤区提供监督(对齐到数据集中该身份的中性网格)。
- 骨形状损失 \(\mathcal{L}_{bone}\):由于只有皮肤有直接监督,借助现成的参数化骨骼生成器 SCULPTOR 给出的伪真值颅骨/下颌形状来约束骨形状。
- 弹性正则 \(\mathcal{L}_{ereg}\):只在表面监督,故加体积形变的弹性平滑项,兼具对骨预测误差的鲁棒性。
完整流程与拟合
完整管线(论文 Fig. 2):给定身份码 \(\beta\),\(N_c\) 把规范空间 \(\Omega_c\) 形变为身份专属的 \(\Omega_{0,\beta}\);再给表情码 \(\gamma\),\(N_e\) 生成身份+表情专属的形变 \(\Omega_{\gamma,\beta}\),从中提取仿真所需的物理约束。
为规范潜空间、鼓励解耦并支持艺术家驱动动画,潜码用现成的 3DMM(FLAME)参数化:\(\beta = P_{id}(\hat\beta)\),\(\gamma = P_{exp}(\hat\gamma)\),\(P_{id}, P_{exp}\) 是充当可学习位置编码的小 MLP。完整训练目标把上述所有损失加上潜码 \(l\)-2 正则与 Lipschitz 正则线性组合,端到端、无仿真地训练,只用皮肤扫描做直接监督,骨形状、下颌运动学、面部激活全部自动推断。
测试期把训练目标里与网络权重相关、与中性表情相关的项去掉,只优化潜码 \(\beta,\gamma\)(拟合图像时还优化相机投影矩阵 \(C\))来拟合未见数据。拟合到 3D 扫描时用 scan-to-mesh 损失;拟合到图像时把 \(\mathcal{L}_{skin}\) 改为约 8000 个稠密 2D landmark 的投影损失,把 \(\mathcal{L}_{bone}\) 改为用回归出的中性皮肤自监督预测骨骼。
技术细节
- 训练数据:Chandran et al. 2020 的 3D 人脸数据集,336 个身份、约 13000 张拓扑一致的表情扫描(已去除刚性头动)。用 SCULPTOR 预拟合骨骼,用 FLAME 预拟合 \((\hat\beta,\hat\gamma)\)。
- 规范空间:用 SCULPTOR 的平均骨骼与皮肤面定义;皮肤拓扑对齐到数据集以保证顶点一致。
- 网络:潜码维度 128;\(\hat\beta\) 用 FLAME 身份空间前 100 主成分,\(\hat\gamma\) 用完整表情空间加 3 维关节姿态。\(N_e, N_c\) 采用条件 SIREN(5 层、128 隐单元、频率 30),因其良好的微分特性利于评估物理约束。
- 训练:Adam,200 epoch,batch 16,学习率 \(1e{-4}\)(前 100 epoch 恒定,之后线性衰减到 0)。物理参数密度 0.9 g/ml、\(E=5\) kPa、\(\nu=0.47\)。
- 仿真:六面体单元,离散分辨率约 2mm,沿用 Yang et al. 2022/2023 的求解器。
- 计时(单块 RTX A6000 + 16 核 CPU):训练共 23.13h(每次迭代 0.5s);测试阶段每帧潜码优化约 7s、生成物理约束约 0.05s、仿真约 2.6s。
实验结果
评估指标涵盖重建精度(V2V、S2M、F-Score、法向误差)与解剖保真度(下颌刚性、颅骨固定、骨保真度、骨-皮穿插对数)。
分辨率消融:在静态测试集上,离散分辨率越高仿真越准;2mm 时仿真结果已能逼近网络纯拟合输出(V2V 0.8975 vs 网络 0.8642;S2M 0.4721 vs 0.4532),证明无仿真学习框架确实推断出了与仿真兼容的合理物理约束。
| 分辨率 (mm) | V2V ↓ | S2M ↓ | F-Score ↑ | Normal ↓ |
|---|---|---|---|---|
| 6.8 | 1.4679 | 0.6615 | 0.7346 | 0.0178 |
| 3.0 | 0.9469 | 0.4892 | 0.8427 | 0.0146 |
| 2.0 (Ours) | 0.8975 | 0.4721 | 0.8546 | 0.0143 |
| Network | 0.8642 | 0.4532 | 0.8672 | 0.0141 |
损失消融:去掉 \(\mathcal{L}_{rigid}\) 会严重恶化精度与下颌刚性(V2V 从 0.8975 升到 1.2891,Jaw Rig. 从 0.13 飙到 2.25);去掉 \(\mathcal{L}_{soft}\) 则无法推断下颌运动学、总是产生固定下颌位置(其刚性/固定指标反而更好但物理不合理);去掉 \(\mathcal{L}_{bone}\) 精度略好但骨结构真实感下降。
与 FLAME 对比:在本文数据集与 FACESCAPE 上,用 scan-to-mesh 距离公平比较,本方法与 FLAME-100/FLAME-300 精度相当(本方法 0.3487/0.4713,优于 FLAME 两种配置),但额外支持碰撞处理等物理效果。与 SCULPTOR 对比:直接拟合 SCULPTOR 到中性扫描常出现骨-皮穿插(2628 对),本方法借弹性正则做到 0 穿插且骨形状可比。
可扩展性:Yang et al. 2023 用 6 块 GPU、近 2 天才训 6 个身份;本方法单 GPU 一天可训练 300+ 身份,且在其测试集上精度相当(V2V 0.3813 vs 0.3849)。
应用展示:拟合单张 3D 扫描或单张人脸图像;碰撞处理(叠加 IPC 接触能量解决唇-唇、齿-唇穿插);面部麻痹;骨骼重塑(如下颌截骨 osteotomy);重力效应;跨身份动画重定向(换身份码保留表情码,无穿插);潜空间插值生成新身份。
贡献与局限
贡献:
- 首个「通用物理人脸模型」,像 blendshape 一样通用可控,却带来更物理准确的形变;
- 无仿真学习框架:把 FEM 移出训练回路,用逐点损失+PINN 式软组织代理,使大规模训练可行;
- 材质空间形变网络:自动预测身份专属的皮肤、骨骼与软组织体,无需手工建模;
- 拟合灵活:可从单张扫描或单张图像拟合,并支持重定向、插值与多种物理效果。
局限:
- 不精确建模口腔内部(数据集未准确追踪该区域),忽略牙齿区解剖;
- 不保证学到的激活在生物学上准确,尤其对远离训练分布的未见身份;
- 侧重通用性而非特异性,难以捕捉演员专属的精细面部细节;
- 应用于非人类角色时可能无法准确重建几何(失败案例)。