AMASS:把 15 个动捕数据集「统一成一张皮」
🎯 为什么重要:mocap 数据是物理角色 / motion prior 的「石油」
论文 §1 开宗明义:「Large datasets are the cornerstone of recent advances in computer vision using deep learning. In contrast, existing human motion capture (mocap) datasets are small and the motions limited」。具体瓶颈有三:
① 规模小、种类窄:单一 lab 的数据集最多覆盖几百段动作,根本喂不饱深度模型。
② 参数化不统一:每个 mocap 数据集用不同的 marker set(37–91 个)和不同的骨架定义,「合并」就意味着要重定向(retarget),而 retarget 本质上会修改原始数据。
③ 丢了表面信息:传统 pipeline 把 marker 转成「关节角度」,把软组织抖动当噪声滤掉——但论文 §2 反驳:soft-tissue motion 让角色看起来「活着」,是动画真实感的关键。
AMASS 的回答是:绕开「骨架」这一层,直接把 marker 拟合到带皮肤、带软组织、带手指的 SMPL+DMPL+MANO 网格上。任何骨架表示都能从网格推导出来,反过来不行——所以这是「最大公约数」表示。
💡 核心思想:MoSh++ = MoSh 的四个升级
方法核心是改进 MoSh(Loper 2014),称为 MoSh++。论文 §3 列了四个升级点:
🛠️ MoSh++ 相对 MoSh 的四个升级(论文 §3)
| 升级 | MoSh(2014) | MoSh++(本文) |
|---|---|---|
| ① 身体模型 | SCAPE / BlendSCAPE(与主流图形软件不兼容) | SMPL:6890 顶点 + UV map + 24 关节运动学树,主流引擎和图形包都支持 |
| ② 软组织动力学 | 用 identity shape 变化「冒充」软组织(不真实) | DMPL 8 维 φ 系数,从 DYNA 4D 扫描学到的真软组织空间 |
| ③ 手部 | 不估计手 | 加 SMPL-H / MANO:28 个手部关节,手部 pose 90 维参数投影到 24 维 MANO PCA 子空间(双手,论文 §3.2) |
| ④ 超参 + 评估 | 少量拟合,凭经验调 | 新建 SSM 数据集(同步 4D 扫描 + 67 markers,3 受试者 × 30 动作)做线搜索 + cross-validation |
• marker 自适应权重:$b=46/n$ 自动按 marker 数缩放 data term,所以同一套 $\lambda$ 权重能跨 37/41/53/91 marker set 工作。
• missing-marker 鲁棒:pose prior 权重 $q=(1+\frac{x}{|M|}\cdot 2.5)$,marker 丢得越多 prior 拉得越紧(最大 3.5×)。论文 Fig.4 展示脚部 marker 全丢时仍能维持合理姿态。
• graduate optimization:4 个退火阶段,$\lambda_D$ 翻倍、正则项减半——避免局部最优。
β(16) + φ(8) + θ(90),其中 θ 是含手部关节的完整 SMPL 姿态参数(论文原文:「the full SMPL pose parameters (90 dimensions), including hand articulations」)。需要的话还能直接 render 纹理网格(SMPL 自带 UV map)。
📊 关键结果:精度反超 MoSh,规模 10× 于以往
MoSh++ 精度(论文 §4.3-4.4,SSM 测试集,scan-to-mesh 距离 mm)
| 任务 | marker 数 | MoSh | MoSh++ | 提升 |
|---|---|---|---|---|
| Shape 估计 | 46 | 12.1 mm | 7.4 mm | -39% |
| Pose 估计(无软组织) | 46 | 10.5 mm | 8.1 mm | -23% |
| Pose 估计(含软组织) | 46 | 10.24 mm | 7.3 mm | -29% |
| 参考:scan-to-scan 基准 | — | ~0.5 mm(不同扫描配准本身的误差下限) | ||
论文 §4.3:「MoSh++ with only 46 markers is nearly as good as MoSh with 67 markers」——精度提升同时还能用更少 marker。
AMASS 数据集组成(论文 Table 1,15 个来源数据集)
| 数据集 | markers | subjects | motions | minutes |
|---|---|---|---|---|
| ACCAD | 82 | 20 | 258 | 27.22 |
| BioMotionLab | 41 | 111 | 3130 | 541.82 |
| CMU | 41 | 97 | 2030 | 559.18 |
| KIT | 50 | 55 | 4233 | 662.04 |
| MPI HDM05 | 41 | 4 | 219 | 147.63 |
| Eyes Japan | 37 | 12 | 795 | 385.42 |
| TCD Hand | 91 | 1 | 62 | 8.05 |
| 其他 8 个 | … | … | … | … |
| Total | 37–91 | 346 | 11,451 | 2,488.01(≈ 42 小时) |
运行时(论文附录 §2,2015 MacBook Pro i7)
| 阶段 | 耗时 |
|---|---|
| Stage I(per sequence) | ~25 分钟 |
| Stage II 无软组织 | ~0.5 秒/帧 |
| Stage II 含软组织 | ~2 秒/帧 |
🌐 在领域中的位置
AMASS 是物理角色动画 / motion prior 这条线的「ImageNet」:几乎所有 2020 年后的 motion prior 工作(AMP、ASE、CALM、PULSE、MotionGPT、HumanML3D、Motion-X)都以 AMASS 或其子集为训练数据。它的统一 SMPL 格式也是 SMPL-X / MANO / FLAME 生态扩展的起点。论文 §6 的 future work(FLAME 面部、实时运行)后续都被 AMASS 系列作品(SMPL-X、STAR、PIXIE)逐步实现。
❓ 常见误区
AMASS 是「新数据集」还是「老数据的统一」?
后者。AMASS 本身没采新动作(除了用于评估的 SSM 30 段),它的核心贡献是「把 15 个已有 mocap 数据集用 MoSh++ 拟合成统一 SMPL 格式」。规模来自聚合,精度来自 MoSh++。
为什么不直接用关节角度?
论文 §1 + §2 给了三点:(1) 关节角度依赖骨架定义,不同数据集骨架不同,合并就要 retarget,retarget 改数据;(2) 关节丢了表面信息(无法 render、无法估软组织);(3) 关节角度无法恢复 marker,而 SMPL 网格可以正向生成任何 marker set。
42 小时听起来不多?
对比 ImageNet 的百万级样本,42 小时 mocap 确实小。但 mocap 数据的「密度」高:每秒 30-120 帧的连续姿态流,每帧是高维 (90+ 维) 时序样本。论文 §1 也承认 mocap 数据规模仍是限制——这正是后续 AMASS 扩展、合成数据(如 SURREAL、HumanML4D)的动机。
MoSh++ 是实时的吗?
不是。论文附录 §2:Stage II 含软组织 ~2 秒/帧,远低于实时(60 fps 需 16ms/帧)。论文 §6 future work:「current runtime for MoSh++ is not real-time」,提到可以用 TensorFlow 并行化。实际使用中 MoSh++ 是离线跑一次、之后所有人只用拟合好的 SMPL 参数。
SMPL / SMPL-X / SMPL-H / MANO / FLAME 什么关系?
都是 MPI 同一系列的参数化人体部件模型:SMPL(身体)→ SMPL-H(+手)= AMASS 用的版本 → MANO(仅手)→ SMPL-X(身体+手+脸)→ FLAME(仅脸头部)。AMASS 选 SMPL-H 因为发布时 SMPL-X 还不完全,且 SMPL-H 的手部 marker 数据极少(只有 TCD 等少数数据集)。
为什么不用 IMU / 视频动捕?
AMASS 只处理光学 marker-based mocap。IMU 噪声大、视频动捕精度不够,都达不到 scan-to-mesh ~7mm 的精度。论文 §3.1 强调「work directly with the markers and not the skeleton」——这要求输入是可靠的三维 marker。