Hierarchically Structured Neural Bones for Reconstructing Animatable Objects from Casual Videos¶
会议: ECCV2024
arXiv: 2408.00351
代码: subin6/HSNB
领域: robotics
关键词: Animatable 3D Reconstruction, Neural Bones, Hierarchical Deformation, NeRF, Manipulation
一句话总结¶
提出层次化神经骨骼(Hierarchical Neural Bones)框架,通过树状结构的骨骼系统以粗到细的方式分解物体运动,从随手拍摄的视频中重建可操控的高质量 3D 模型。
背景与动机¶
从随手拍摄的视频中构建可操控的 3D 模型具有重要的应用价值(影视、混合现实、游戏等),但现有方法存在两大问题:
- 依赖先验模板的方法(如骨架、3D 人体模型)需要大量 3D 扫描数据或标注,缺乏对任意物体的通用性
- 无模板方法(如 BANMo)虽然使用高斯椭球体作为控制点具有通用性,但骨骼分布缺乏结构,散落在物体表面,不考虑运动粒度,导致:
- 骨骼之间缺乏关联性,用户难以理解和操控
- 需要大量输入视频才能产生合理结果
- 重建质量有提升空间
核心问题¶
如何在不依赖任何先验结构知识的前提下,学习一组有层次结构的控制点,使其既能准确捕获物体运动、提升重建质量,又能为用户提供直观、易操控的 3D 模型编辑接口?
方法详解¶
整体框架基于 BANMo 构建,核心改进为 层次化变形模型 和 骨骼占用函数。
1. 基础框架(BANMo)¶
- Canonical Model:用 NeRF 表示物体的形状和外观,输出颜色和 SDF 值
- Deformation Model:使用高斯椭球体骨骼和 Linear Blend Skinning (LBS) 将每帧 3D 点变形到 canonical 空间
- 通过可微体渲染联合优化所有组件
2. 层次化神经变形模型(Hierarchical Neural Deformation Model)¶
核心思想:将骨骼组织为树状结构,父骨骼捕获大区域的粗运动,子骨骼表示更细粒度部位的精细运动。
-
骨骼层次公式:深度为 \(d\) 的骨骼变换通过递归左乘所有父级变换得到: $\(T^d = \hat{T}^1 \hat{T}^2 \cdots \hat{T}^{d-1} \hat{T}^d\)$ 子骨骼在父骨骼的局部坐标系中定义,自然继承父级运动。
-
神经骨骼表示:每根骨骼由旋转 \(R\)、中心 \(\mathbf{t}\)(逐帧变化)和共享尺度 \(\mathbf{s}\) 组成。不同深度使用独立 MLP \(f^d\),输入为父骨骼的 embedding 和根 embedding。
-
蒙皮权重:基于 Mahalanobis 距离计算每个 3D 点与叶骨骼之间的权重,结合 MLP 预测的 delta 权重进行 LBS 变形。
-
粗到细优化:先优化 depth-1 骨骼(粗运动),训练过程中逐步添加子骨骼捕获更细运动。初始骨骼数:动物 5 根,人类 6 根;每根骨骼后续扩展 2 根子骨骼。
3. 骨骼占用函数(Bone Occupancy Function)¶
解决骨骼位置和形状欠约束问题,将骨骼正则化到物体部件中心。
- 骨骼占用:\(g_b(\mathbf{x}) = d_M(\mathbf{x}, b) - \gamma\),点在骨骼内部为负值,外部为正值
- 骨骼掩码损失 \(\mathcal{L}_{bone}\):将所有骨骼的占用聚合后渲染出 2D 掩码,与真实前景掩码对比,约束骨骼形状与物体对齐
- 重叠损失 \(\mathcal{L}_{overlap}\):限制每个表面点被不超过 \(\lambda\) 个骨骼覆盖,避免骨骼过度重叠
- 覆盖损失 \(\mathcal{L}_{cover}\):确保每根骨骼占据一定比例的表面区域,防止骨骼退化
4. 总体损失函数¶
5. 操控方式¶
优化完成后提取 canonical mesh,用户通过调整父骨骼控制大范围运动,调整子骨骼实现细粒度运动,还可交互式添加/删除控制点。
实验关键数据¶
| 方法 | Eagle CD↓ | Eagle F2↑ | Swing CD↓ | Swing F2↑ | Samba CD↓ | Samba F2↑ |
|---|---|---|---|---|---|---|
| ViSER | 19.22 | 24.76 | 16.29 | 19.95 | 23.28 | 22.47 |
| BANMo (复现) | 4.66 | 81.44 | 7.33 | 64.88 | 7.22 | 64.99 |
| CAMM* | 4.50 | 81.21 | 9.02 | 56.00 | 7.50 | 62.17 |
| RAC* | - | - | 6.10 | 70.33 | 6.63 | 67.71 |
| 本文 | 4.64 | 81.59 | 7.11 | 65.88 | 6.15 | 72.07 |
- 在所有数据集上超越所有无模板方法,在 Samba 上超越需要骨架的 RAC
- Eagle 数据集仅使用 10 根叶骨骼(BANMo 用 25 根以上),仍达到可比结果
- 神经渲染质量全面领先:Samba 上 PSNR 31.74 / SSIM 0.942(BANMo 为 30.72 / 0.916)
亮点¶
- 无需先验的层次结构学习:完全无监督地从视频中发现物体的部件层次和运动关联,无需预定义骨架或模板
- 粗到细的运动分解:树状骨骼结构提供多粒度运动表示,既提升重建质量又增强可解释性
- 骨骼占用正则化:借鉴 part-based generative model 的思想,通过掩码、重叠和覆盖三个损失项确保骨骼与物体形状对齐
- 更少控制点更好效果:用更少的骨骼数量达到甚至超越使用大量控制点的基线方法
- 用户友好的操控接口:层次化骨骼支持粗到细操控,用户可交互式增删控制点
局限性 / 可改进方向¶
- 训练耗时较长(每个深度 20k 迭代,2×RTX 3090 每阶段约 3 小时),多阶段训练累计时间可观
- 子骨骼数量(每父骨骼 2 个)为手动设定,未根据运动复杂度自适应调整
- 仅在人体和动物上验证,对拓扑变化较大的物体(如布料、流体)适用性未知
- 依赖预处理(PointRend 分割、VCN 光流、CSE 特征),级联误差可能影响结果
- 3D Gaussian Splatting 等更高效的表示方式可能替代 NeRF 进一步提升效率
与相关工作的对比¶
| 维度 | BANMo | CAMM | RAC | 本文 (HSNB) |
|---|---|---|---|---|
| 先验知识 | 无 | 需要 RigNet 骨架 | 需要预定义骨架 | 无 |
| 控制点结构 | 无结构散布 | 运动链 | 固定骨架 | 层次化树结构 |
| 运动分解 | 无 | 有限 | 有限 | 粗到细多粒度 |
| 骨骼数量 | 25 | 25+ | 按类别定义 | 最少 10 根叶骨骼 |
| 可操控性 | 困难 | 较好 | 较好 | 直观且可交互增删 |
| 通用性 | 任意物体 | 需匹配骨架 | 单类别 | 任意物体 |
启发与关联¶
- Bone Occupancy Function 的思路可扩展到其他需要部件对齐的任务(如 part-aware 人体重建)
- 层次化控制点思想可与 3D Gaussian Splatting 结合,构建更高效的可操控重建管线
- 粗到细的训练策略对其他分层表示学习任务有借鉴意义(如场景级别的层次化表示)
- 骨骼占用函数中的重叠/覆盖损失设计可应用于其他 primitive-based 方法的正则化
评分¶
- 新颖性: ⭐⭐⭐⭐ — 层次化骨骼结构 + 骨骼占用正则化的组合在无模板动画重建中较新颖
- 实验充分度: ⭐⭐⭐⭐ — 多数据集定量/定性比较充分,含消融实验和操控演示
- 写作质量: ⭐⭐⭐⭐ — 结构清晰,公式推导完整
- 价值: ⭐⭐⭐⭐ — 在实用性(操控接口)和学术贡献(层次化运动分解)上均有价值