Text-based Animatable 3D Avatars with Morphable Model Alignment
ETH Zürich; Zhejiang University
一句话总结
本文提出 AnimPortrait3D 框架,先用预训练文本到 3D 模型初始化出外观、几何都稳健且与参数化模型(SMPL-X)对齐的 3DGS 头像,再用一个以法线图与语义分割图为条件的 ControlNet 引导动态优化,从而只凭文本就能生成高质量、可用形变模型参数驱动的可动 3D 头像。
研究背景
从文本生成高质量、可动画的 3D 头部头像,在游戏、影视和具身虚拟助手等内容创作场景中有巨大潜力。当前主流做法把参数化头部模型与 2D 扩散模型结合,通过分数蒸馏采样(Score Distillation Sampling, SDS)把 2D 信息注入 3D 表示,以获得 3D 一致的结果。
但作者指出这类方法有两个根本性的模糊来源,导致合成细节不真实、外观与驱动参数化模型错位,进而产生不自然的动画:
其一,外观与几何被文本严重欠约束。单条文本提示在扩散模型中对应大量可能图像,蒸馏出的结果往往模糊,还会出现多面朝向的「Janus」问题。Portrait3D 用外观-几何联合先验缓解了这点,但几何噪声大且只能做静态重建,无法驱动。
其二,预测与参数化模型之间的语义对齐不足。扩散模型本身无法感知参数化模型的信息,导致刚性绑定(rigging)不准、动画出现伪影。HeadStudio 用基于关键点(landmarks)的 ControlNet 引导,但稀疏关键点提供的 3D 约束仍然不够。
核心难题因此变成:如何把同时感知几何与语义的稳健引导信号,注入到 3D 头像的优化过程中。
方法
整体框架
AnimPortrait3D 选用 3DGS 作为 3D 表示(渲染高效、便于绑定驱动),整体分两个阶段:3D 头像初始化阶段消除外观与几何模糊,产出一个绑定到 SMPL-X、语义对齐良好的初始头像;动态优化阶段用 2D 扩散模型加 ControlNet 修复新表情、新姿态下的动画伪影,补足眼部与口腔内部细节,最终做精修。
flowchart TD
A[输入文本] --> B[Portrait3D 生成静态 NeRF 头像 P]
B --> C[拟合 SMPL-X]
B --> D[Marching Cubes 提粗糙网格<br/>法线图优化得精细网格]
D --> E[分割出头发/衣物/面部网格]
C --> F[采样点云并绑定到 SMPL-X 面片]
E --> F
F --> G[多视图图像优化外观<br/>初始 3DGS 头像 θ]
G --> H[动态优化阶段]
H --> H1[眼部预训练 SDEdit]
H --> H2[口腔预训练 ISM]
H1 --> H3[全头像全优化 ISM]
H2 --> H3
H3 --> H4[SDEdit 最终精修]
H4 --> I[可动 3D 头像]
J[法线+语义 ControlNet] -.几何语义感知引导.-> H1
J -.-> H2
J -.-> H3
关键设计
3D 头像初始化。 给定文本提示 \(y\),先用 Portrait3D 生成静态 NeRF 头像 \(P\),再用多视图头部跟踪拟合出 SMPL-X 模型 \(M_{SMPL-X}\)。由于 SMPL-X 无法表达头发和衣物,作者用 Marching Cubes 从 \(P\) 提取粗糙网格 \(M_{raw}\)、经拉普拉斯平滑得 \(M_{smooth}\),再用 Unique3D 的法线估计器从多视图渲染 \(\{I_i^{raw}\}\) 得到法线图,据此把 \(M_{smooth}\) 优化成细节更丰富的 \(M_{refined}\)。随后借鉴 MeshSegmenter 的 Face Revoting,配合 Sapiens 面部分割与专门的头发分割模型,把 \(M_{refined}\) 切成头发、衣物、面部三类资产网格。
接着借鉴 GaussianAvatars,从 \(M_{SMPL-X}\)、头发网格、衣物网格表面采样点云并绑定到 SMPL-X 面片:SMPL-X 采样点直接继承所在面片的绑定关系,头发和衣物采样点则各自找到头皮、身体分区上最近的面片继承其绑定参数。该绑定点云初始化 3DGS 的可动位置,再用 \(\{I_i^{raw}\}\) 优化外观;由于中性表情下口腔完全不可见,作者用通用代理几何与颜色初始化牙齿。初始头像记作可训练参数 \(\theta\)。
动态优化。 初始头像虽可驱动,但新表情下会出现明显伪影,根因有二:眼睑与眼球和对应高斯的轻微错位造成绑定行为异常;初始化时口腔闭合,口腔内部表征不足。作者的解法是训练一个 ControlNet 提供几何与语义感知引导。借鉴 Joker,ControlNet 以法线图为条件输入(训练法线图由预训练人脸重建方法从 RGB 肖像提取),并补充牙齿、眼睛、虹膜的分割图作为补充控制信号,因为这些区域仅靠法线图欠定;训练集含 453,385 对高质量的 RGB 与条件配对数据。推理时以 SMPL-X 渲染的法线图与分割图作为条件。
动态优化按「预训练 → 全优化 → 精修」三步递进:
眼部预训练用 ControlNet 生成的图像做监督。随机采样眼睑参数(控制睁闭)和眼球姿态参数(控制注视方向)施加到 SMPL-X 上形变头像,用 ControlNet 做 SDEdit(编辑强度 0.9)生成精修眼部图像,损失为:
\[L_{eye\_pre} = L_2\left(I_e,\ \mathrm{SDEdit}(\epsilon_D, \epsilon_C, I_e, y, N_e, S_e)\right)\]
其中 \(I_e\) 为渲染眼部图像,\(N_e\)、\(S_e\) 为其法线图与分割掩码,\(\epsilon_D\)、\(\epsilon_C\) 分别为预训练扩散模型与 ControlNet。
口腔内部只有通用代理初始化,因此改用间隔分数匹配(Interval Score Matching, ISM)优化。ISM 损失定义为:
\[\nabla_\theta L_{ISM}(\theta, I, t, y, N, S) \triangleq \mathbb{E}_t\left[\omega(t)\left(\epsilon_D(z_t, t, y, F_{ctrl}) - \epsilon_D(z_t, s, \varnothing)\right)\frac{\partial z_0}{\partial I}\frac{\partial I}{\partial \theta}\right]\]
其中 \(F_{ctrl} = \epsilon_C(z_t, t, y, N, S)\),\(z_0\) 由图像 \(I\) 经 VAE 编码得到,\(s = t - \delta T\) 为调整后的时间步(反演步长 \(\delta T = 50\)),\(\varnothing\) 表示无条件。口腔预训练从 NeRSemble 数据集采张嘴表情以保证口腔可见:
\[\nabla_\theta L_{mouth\_pre}(\theta) = \nabla_\theta L_{ISM}(\theta, I_m, t, y, N_m, S_m)\]
全优化阶段随机采样 NeRSemble 的姿态、表情与相机视角,对眼部、口腔、面部裁剪区域施加带 ControlNet 引导的 ISM,并对整幅渲染施加不带 ControlNet 的 ISM:
\[\nabla_\theta L_{full}(\theta) \triangleq \sum_{r\in\{e,m,f\}}\nabla_\theta L_{ISM}(\theta, I_r, t, y, N_r, S_r) + \nabla_\theta L_{ISM}(\theta, I_{full}, t, y)\]
作者发现整幅渲染中受表情影响、可被法线与语义图控制的区域太小,用 ControlNet 无增益,故省去以加速。
最终精修用 SDEdit(编辑强度 0.3,不用 ControlNet)在随机表情、姿态、视角下精修各区域,结合 L1 与 LPIPS 损失兼顾像素精度与感知质量:
\[L_{refine} = \sum_{r\in\{e,m,f,full\}} L_1\left(\mathrm{SDEdit}(\epsilon_D, I_r, y), I_r\right) + L_{lpips}\left(\mathrm{SDEdit}(\epsilon_D, I_r, y), I_r\right)\]
其中整幅更新时会屏蔽非面部区域,避免干扰放大后的眼、口、脸区域的更精细更新。
实验结果
作者与可动 3D 头像生成的代表方法(HeadStudio、TADA、HumanGaussian)、3D 头像编辑方法(PortraitGen)以及基于 3DGS 的头部重建方法(GPAvatar、GAGAvatar)比较。评测生成 20 个头像(男女各 10),每个渲染 100 张随机视角、随机参数图像。指标含:几何对齐用预测面部关键点与参数模型对应点的偏差(Landmarks),语义对齐用平均表情距离(AED)与 CLIP 相似度,质量用无参考的 HyperIQA 与专门的人脸质量指标 DSL-FIQA。
| 方法 | Landmarks ↓ | AED ↓ | CLIP ↑ | HyperIQA ↑ | DSL-FIQA ↑ |
|---|---|---|---|---|---|
| Ours | 0.0148 | 0.1265 | 0.2749 | 59.6879 | 0.6426 |
| HeadStudio | 0.0263 | 0.3136 | 0.2687 | 46.7009 | 0.3819 |
| TADA | 0.1353 | 0.2162 | 0.2492 | 60.1467 | 0.4190 |
| HumanGaussian | 0.0429 | 0.2754 | 0.2661 | 23.8779 | 0.1123 |
| PortraitGen | 0.0269 | 0.1618 | 0.2485 | 38.1552 | 0.2714 |
| GPAvatar | 0.0220 | 0.1265 | 0.2131 | 49.4826 | 0.5157 |
| GAGAvatar | 0.0199 | 0.1267 | 0.2627 | 51.2861 | 0.5550 |
本方法在几何对齐、语义对齐(CLIP)与人脸质量(DSL-FIQA)上均居首。唯一例外是通用质量分 HyperIQA 上 TADA 反而得分最高,作者认为这是 HyperIQA 对 TADA 强伪影不敏感所致,与定性观察矛盾,而人脸专用的 DSL-FIQA 更贴合人类偏好。
消融分为递进式与减法式两类。递进式展示流水线各阶段效果:初始化后的头像存在绑定不准、颜色失真、空洞等动画伪影;眼口预训练显著缓解伪影;全优化补充细节但残留伪影;最终精修得到高度真实、驱动稳健的头像。减法式逐一移除组件:去掉外观初始化会出现不自然色调、衣物模糊;去掉几何初始化难以刻画复杂真实人体特征;去掉眼口预训练会削弱这两个区域的真实感与几何对齐;去掉 ControlNet 即便有良好初始化与预训练,仍会出现眼睛过大、绑定不准、嘴唇伪影等明显质量退化。
亮点与局限
亮点:一是初始化策略把外观与几何先验联合注入,并同时建立与参数化模型的稳健绑定关系,从源头消除外观模糊;二是提出几何与语义感知的动态优化,用以稠密法线图与分割图为条件的 ControlNet 替代稀疏关键点引导,对齐精度明显更好;三是针对眼睑、口腔内部等复杂遮挡区域设计专门的预训练策略(眼部用 SDEdit、口腔用 ISM),把传统方法难处理的区域做实。
局限:作者坦言其一,静态高斯特征把光影烘焙进固定颜色,牙齿等对光照敏感区域受限,也难渲染皱纹等动态细节,未来可引入动态高斯属性与面部数据;其二,网格分割质量依赖 2D 分割性能,效果不佳会导致绑定错误或漂浮高斯;其三,动画表现力受限于底层 3DMM 的混合形状(blend shapes),长发和复杂衣物往往需物理仿真,且用视频提取的混合形状会带来唇形同步伪影、缺失注视动画、表情欠真实,用美术设计或工业级混合形状可望更好。
延伸思考
这篇工作的核心方法论价值在于「用强先验消除蒸馏模糊」——与其让单一扩散模型在欠约束的文本条件下硬蒸馏,不如先借一个成熟的文本到 3D 模型(Portrait3D)把外观与几何锚定下来,把生成问题转化为「初始化 + 对齐修复」。这种「先拿到一个足够好的起点,再用条件化引导精修」的范式,对其他容易陷入模糊与多义的生成蒸馏任务同样有借鉴意义。
另一个值得注意的点是把「可驱动性」当作一等目标贯穿全流程:从初始化阶段就建立与 SMPL-X 的绑定关系,再用 NeRSemble 采样真实表情、姿态在优化中显式覆盖动态分布,而非事后再套动画。这提示生成可动资产时,动画约束应尽早介入而非后处理。局限中反复提到的静态高斯光影烘焙与 3DMM 混合形状表达力上限,也指向下一步方向:可重光照的动态高斯表示,以及超越线性混合形状的更强表情基,或许是让文本生成头像真正走向影视级可用的关键。