Journal

BakedAvatar: Baking Neural Fields for Real-Time Head Avatar Synthesis

Hao-Bin Duan, Miao Wang, Jin-Chuan Shi, Xu-Chuan Chen, Yan-Pei Cao

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/>顶点着色器变形 + 片元着色器混合"]

关键设计:

  1. 规范流形场约束采样点:用一个坐标 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

  2. FLAME 驱动的前向形变器:借鉴 IMavatar,用形变场 \(D: \boldsymbol{x}_c \to (E, P, W)\) 为每个规范点预测表情混合形状、姿态修正与蒙皮权重,再按 FLAME 公式把规范等值面前向变形到当前帧。这些权重可作为顶点属性烘焙下来,推理时在顶点着色器里做混合形状与线性混合蒙皮,实现实时变形。

  3. 可线性混合的辐射基 + 轻量外观解码器:辐射场不直接输出颜色,而是预测 \(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 足够小可在片元着色器里跑。

  4. 烘焙与微调:用 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 纹理,量化精度与层数/基数如何联合影响最终画质,是压缩化身资产时值得进一步挖掘的方向。