BakedAvatar: Baking Neural Fields for Real-Time Head Avatar Synthesis
Beihang University; Tencent
一句话总结
把用于头部化身的连续神经场”烘焙”成一叠可变形的分层网格与静态纹理,让 NeRF 级画质的 4D 头部化身能跑在标准光栅化管线上,在笔记本、平板、手机等常见设备上实时渲染并支持表情、姿态、视角的实时编辑与面部重演。
研究背景
- 领域现状:基于 NeRF 的方法结合可变形头部模型(如 FLAME),已能从单目视频重建高保真的 4D(动态 3D)头部化身,适用于 VR/AR、远程呈现与游戏。
- 核心痛点:NeRF 依赖密集的光线步进和大型 MLP,每条光线要评估上百个采样点,计算开销巨大,难以在消费级设备(尤其手机)上实时渲染。已有的”烘焙”加速方法(把 NeRF 转成体素、网格、三平面等显式结构)大多只针对静态场景,难以扩展到动态、可驱动的头部化身;而纯表面网格方法又难以刻画头发这类半透明、细尺度结构。
- 本文 idea:借鉴 GRAM 用学习到的流形约束采样点的思路,学习一组紧贴头部表面的流形等值面,从中提取多层网格代理,把光线—流形的交点作为体渲染的近似采样点。再用 FLAME 形变场驱动这些网格,把表情/姿态/视角相关的外观烘焙成可线性混合的纹理基,从而完全用光栅化实现实时合成。
方法
整体是一条三阶段流水线:先在规范空间学习”形变场 + 流形场 + 辐射场”三个隐式场;再把这些神经场烘焙成可变形分层网格与多张静态纹理;最后用可微光栅化对纹理做微调,修复烘焙引入的误差。
flowchart LR
A["单目视频"] --> B["阶段一:学习隐式场<br/>流形场 M / FLAME 形变场 D / 辐射场 R"]
B --> C["阶段二:烘焙<br/>Marching Cubes 提层网格 + 静态纹理基"]
C --> D["阶段三:可微光栅化微调纹理"]
D --> E["WebGL 实时渲染<br/>顶点着色器变形 + 片元着色器混合"]
关键设计:
-
规范流形场约束采样点:用一个坐标 MLP 把规范空间坐标映射为标量 level,预定义若干 level 的等值面 \(S_i = \{\hat{\boldsymbol{x}}_c \mid M(\hat{\boldsymbol{x}}_c) = l_i\}\) 作为分层代理表面。辐射只在光线与这些等值面的交点上累积,用 alpha 合成近似体渲染 \(C(r) = \sum_{j=1}^{M} \prod_{k
-
FLAME 驱动的前向形变器:借鉴 IMavatar,用形变场 \(D: \boldsymbol{x}_c \to (E, P, W)\) 为每个规范点预测表情混合形状、姿态修正与蒙皮权重,再按 FLAME 公式把规范等值面前向变形到当前帧。这些权重可作为顶点属性烘焙下来,推理时在顶点着色器里做混合形状与线性混合蒙皮,实现实时变形。
-
可线性混合的辐射基 + 轻量外观解码器:辐射场不直接输出颜色,而是预测 \(n_T\) 组基色 \(\{\boldsymbol{c}_i\}\)、占据度 \(\{\alpha_i\}\) 与一个位置特征 \(\boldsymbol{f}_p\),全部可存成静态纹理。外观解码器是一个 tiny 超网络:全局 MLP 只按表情/姿态每帧算一次,输出空间 MLP 的权重;空间 MLP 在每个交点按位置特征、法线、视角方向算出 softmax 归一化的混合权重 \(\boldsymbol{w} \in \mathbb{R}^{n_T}\),最终颜色为 \((\boldsymbol{c}, \alpha) = \sum_{i \in n_T} \boldsymbol{w}_i (\boldsymbol{c}_i, \alpha_i)\)。这样把表情/姿态/视角相关的动态外观编码进纹理基,空间 MLP 足够小可在片元着色器里跑。
-
烘焙与微调:用 Marching Cubes 在规范空间按每个 level 提网格,再用二次误差边折叠做选择性简化(尤其简化背向面)以提速;UV 展开后逐 texel 采样烘焙辐射基、位置特征与 FLAME 顶点属性,量化为 8-bit 纹理。烘焙引入的离散化误差(网格简化、UV 接缝等)通过第三阶段可微光栅化微调修复:固定几何只优化纹理,加 VGG 感知损失,并顺带优化每帧相机平移与 FLAME 姿态。
实验结果
在 8 个单目视频主体上做自重演(self-reenactment),与多类代表方法对比图像质量(L1、PSNR、SSIM、LPIPS)、表情精度(关键点距离 KD)与速度(RTX 3090,512×512)。BakedAvatar 在画质各项指标领先,同时速度比次快的 PointAvatar 高近两个数量级。
| 方法 | L1↓ | PSNR↑ | SSIM↑ | LPIPS↓ | KD↓ | FPS↑ |
|---|---|---|---|---|---|---|
| BiLayer | 0.0765 | 15.39 | 0.830 | 0.172 | 5.77 | 3.39 |
| NerFace | 0.0219 | 25.68 | 0.888 | 0.112 | 5.44 | 0.15 |
| IMavatar | 0.0242 | 24.18 | 0.881 | 0.118 | 5.13 | 0.02 |
| PointAvatar | 0.0180 | 27.42 | 0.907 | 0.060 | 5.51 | 8.53 |
| 本文 | 0.0147 | 28.66 | 0.917 | 0.057 | 4.97 | 804 |
(NHA 不生成衣物部分,单独对比:本文去衣物版 PSNR 30.93 / SSIM 0.943 / FPS 831,对比 NHA 的 23.85 / 0.902 / 12.30。)
其余实验以文字概述:分阶段对比显示烘焙阶段画质略降(离散化误差),微调阶段不仅修复接缝还超过初始训练阶段(LPIPS 从 0.085 降到 0.057);设备速度上,游戏笔记本 512×512 可达 239 FPS,平板与手机在多数分辨率下也稳定实时(受 60 FPS 帧率上限约束);消融显示增加网格层数与纹理基数能提升画质但降低速度,需权衡。
亮点与局限
- 亮点:
- 首个在手机上达到实时、且保持 SOTA 画质的可驱动 NeRF 类头部化身方法,全程走标准光栅化管线,跨设备部署友好。
- 多层网格 + 可线性混合纹理基的设计,巧妙地用”少数层交点 + 静态纹理查询”逼近体渲染,把大 MLP 和光线步进彻底移出推理路径。
- 三阶段”训练—烘焙—微调”闭环,用可微光栅化把烘焙误差补回来,甚至反超原始隐式模型的画质。
- 局限:
- 仍是 person-specific,每个主体需单主体训练(RTX 3090 上约一天),不具备跨身份泛化能力。
- 依赖 FLAME 与 DECA 等现成模块提供伪形变监督,表情/姿态表达受这些先验的表达力限制。
- 分层网格数量固定(8 层),对极端形变或训练分布外的表情/姿态外推能力有限;论文未强调训练加速。
延伸思考
- 与后续用 3D Gaussian Splatting 做头部化身的工作相比,本文走的是”网格 + 纹理”的纯光栅化路线,在移动端和 Web 部署上天然更省心;两条路线在质量、可编辑性与端侧效率上的权衡值得对比。
- “把动态外观分解为若干可线性混合的纹理基 + 一个 tiny 超网络”是很通用的烘焙思路,可能迁移到身体、手部或一般可驱动物体的实时神经渲染。
- 位置特征与辐射基被量化成 8-bit 纹理,量化精度与层数/基数如何联合影响最终画质,是压缩化身资产时值得进一步挖掘的方向。