StreamME: Simplify 3D Gaussian Avatar within Live Stream
University of Rochester; Adobe Research
一句话总结
StreamME 用一段直播(或单目)视频,边录边建,纯 PyTorch 在约 5 分钟内重建出可实时动画的高保真 3D 高斯头像,核心是抛弃可变形 3DGS 里的 MLP、只靠几何驱动表情,并通过运动感知锚点与点云简化把点数压到极低。
研究背景
- 领域现状:从单目视频快速重建头部 avatar 是 VR/AR、数字人、全息通信、直播等场景的热点。3DGS 与 NeRF 加速技术(如 INSTA、AvatarMAV、FlashAvatar)推动了这一方向,但普遍把训练和推理分成两个离线阶段。
- 核心痛点:现有方法在渲染质量与存储/训练开销之间难以平衡。它们大多依赖 MLP 或 CNN 来拟合表情形变,训练慢,无法做到”一边录一边建”;且预处理(如用 MICA 跟踪 FLAME)极其耗时,处理 10 分钟视频可能要一天,难以实时化。
- 本文 idea:提出”边录边训”(on-the-fly training)这一新任务,让录制、重建、可视化同步进行。关键手段是把 3D 高斯点直接绑到跟踪出的头部网格表面,让点随网格形变而运动,从而彻底去掉可变形 MLP;再配合锚点复制与点云简化,把点数和计算量压下来。这样做还带来隐私保护(无需把人脸模型缓存到外部机器)与带宽压缩(只传 3DGS 参数而非完整图像,约 70% 压缩)。
方法
整体框架:StreamME 先把首帧头部几何设为规范空间(canonical)的点云基准,用一个可选的”warm-up”步骤微调顶点几何;随后从 UV 采样初始化 3D 高斯点并绑到网格表面,靠网格形变直接带动表情,无需 MLP。训练过程中通过运动感知锚点(motion-aware anchor)决定哪些点该复制、哪些该剪枝,再用点云简化去掉过小、过透明以及远离表面的冗余点,最终由可微分光栅化器实时渲染。
flowchart LR
A[单目/直播视频] --> B[实时人脸跟踪 出位姿与网格]
B --> C[可选 Warm-Up 用Tex/SH辅助微调顶点几何]
C --> D[UV采样初始化3D高斯点 绑到网格表面]
D --> E[运动感知锚点 复制并剪枝]
E --> F[点云简化 去小点/透明点/离面点]
F --> G[可微分光栅化 实时渲染头像]
G -.在线迭代.-> E
关键设计:
-
几何驱动、去 MLP 的形变表示。3DGS 的每个高斯点由协方差矩阵与均值定义,协方差再分解为旋转 \(r\) 与缩放 \(s\),属性集为 \(g=\{\alpha, s, r, o, \mu\}\)。StreamME 不再让 MLP 预测形变,而是把点云挂到规范空间的形变网格上,网格随表情动,点就随之动,表情恢复不再需要迭代训练神经网络,因而能”从一开始就模拟动态表情”。
-
Warm-Up 几何预热(可选)。标准人脸模板难以表达头发等完整头部形状。作者引入两个仅在预热阶段学习、之后冻结的辅助属性——纹理 \(Tex\) 与光照 \(SH\),配合相邻面法向一致性约束,用约 20~30 秒把顶点位置(编码在高斯属性中)重定向到更贴合真实头部的几何,尤其改善头发等外围区域。这一步等价于点云形变 MLP 的作用,但快得多,跳过也能跑。
-
运动感知锚点选择。为每个点初始化一个可学习的二值属性 \(Idx\in\{0,1\}^N\)。判据同时考虑优化器累积的密度梯度 \(\alpha_{grad}\) 与相对首帧规范点云 \(\bar P_0\) 的位置差分梯度 \(\nabla P\):当两者的最大内积不低于阈值 \(\epsilon\) 时 \(Idx=1\)(该点被复制),否则 \(Idx=0\)(被剪枝)。这样只保留对表情运动有贡献的锚点(如眼、齿、口周),剔除额头等无运动区域的点,不用 MLP 就能快速适配表情变化。
-
高斯点云简化。用 \(Idx\) 作为掩码作用到缩放与不透明度上:\([s',o']=Idx\cdot[s,o]\);二值化的不可导问题用直通估计器解决:\(Idx'=\mathrm{sigm}(Idx)+\mathrm{sg}[\,U[\mathrm{sigm}(Idx)>\epsilon']-\mathrm{sigm}(Idx)\,]\),其中 \(\epsilon'=0.01\),前向按二值掩码取舍、反向用 sigmoid 导数回传。同时用点到面的距离正则把点拉近表面:\(d=\sum_{A\in Idx} Idx\cdot\sum_{P\in A}\lVert (P-P_0^A)\cdot n_0^A\rVert\),让锚点绑定的点更贴合表面、减少离面噪点。随训练推进点云越来越稀疏,反而使训练速度越来越快。
训练细节:损失用 \(L_1\)(权重 1)与 SSIM(权重 0.1),加上点到面距离正则(权重 0.01),warm-up 阶段再加暗通道损失(权重 10)分离 Tex 与 SH。在线优化时每个 mini-batch 混入一帧新采集图像与若干历史帧以缓解遗忘,每 1500 次迭代做一次复制/剪枝。
实验结果
在 GaussianBlendshape、NeRFBlendshape、StyleAvatar、InstantAvatar 等公开数据集的 6 个单目视频(512×512)上做自重演(self-reenactment)评测,并在 RTX 4090 上测速。主实验对比图像质量、推理帧率、存储与用户主观分:
| 方法 | PSNR↑ | LPIPS↓ | FPS↑ | 存储/MB↓ | 视频质量VQ↑ |
|---|---|---|---|---|---|
| StreamME | 29.7 | 0.095 | 139 | 2.52 | 4.1 |
| FlashAvatar | 27.8 | 0.109 | 94.5 | 12.6 | 3.1 |
| GaussianBlendshape | 26.4 | 0.112 | 22.9 | 872 | 3.6 |
| AvatarMAV | 24.1 | 0.137 | 2.58 | 14.1 | 2.3 |
StreamME 在质量、速度、存储与主观评价上全面领先,存储仅 2.52 MB(GaussianBlendshape 高达 872 MB)。效率实验中,StreamME 约 2 分钟即达到其他方法需 30 分钟才有的质量:10 秒时 PSNR 已达 23.1、2 分钟达 27.2、30 分钟达 29.8,且训练迭代速度随点云变稀疏而不断提升(其他方法迭代速度近似恒定)。消融显示:去掉运动锚点则需约 10 分钟预热才能适配表情;点云简化在 10 分钟训练后把点数从约 20 万压到约 2.4 万(8~10 倍),质量不降;收敛后平均点数 9807,远低于 FlashAvatar 的 13453 与 GaussianBlendshape 的 62530。此外方法支持跨身份动画、文本卡通化(约 5 分钟)与环境重光照等下游应用。
亮点与局限
- 亮点:
- 首个真正”边录边建并可视化”的头像重建方法,纯 PyTorch 约 5 分钟成型、10 秒即可看到基本外观。
- 用几何驱动 + 运动感知锚点彻底去掉可变形 MLP,表情适配无需长时间迭代。
- 点云简化让”点越训越少、训练越训越快”,存储极小(约 2.5 MB),并天然带来隐私保护与约 70% 带宽压缩。
- 一套框架延展到动画、卡通化、重光照多种下游应用,其中重光照是单目 3DGS 头像上的首次尝试。
- 局限:
- 单视角设定缺乏完整 3D 面部结构,在极端姿态下头部运动会出现渲染伪影。
- 外观与表情多样性高度依赖训练数据,重建训练分布外的样本效果差(作者指出这是单目设定的共性问题)。
- 重光照受单目视频光照信息有限所限,效果不及使用大规模数据集的专门方法。
延伸思考
- “去 MLP、把形变交给显式几何”这条路线,把速度瓶颈从神经网络反传转移到了几何跟踪质量上——实时人脸跟踪与 warm-up 几何的精度会直接决定上限,未来若接入更强的实时头部几何估计,可能进一步提升极端姿态表现。
- 运动梯度锚点 + 二值 Idx 直通估计的”可学习掩码剪枝”思路,本质是一种面向动态场景的自适应稀疏化,或可迁移到身体、手部等其他可动 3DGS 表示中。
- 只传 3DGS 参数而非图像的思路对远程会议/全息通信有现实意义,值得关注参数流的时序压缩与抗丢包鲁棒性;重光照与卡通化则指向”可编辑的轻量数字分身”这一更大的应用空间。