MaskedMimic:把所有物理角色控制任务统一成「动作补全」
🎯 为什么重要:「一个任务一个 policy」不可持续
游戏、数字人、VR 这种需要数千种行为组合的场景,传统「每任务训一个 controller」根本走不通。每个新任务都需要:(a) 挑选对应 MoCap 子集;(b) 手写 reward;(c) 训练并调参。
💡 核心思想:motion inpainting + 两阶段蒸馏
MaskedMimic 的核心是把所有任务看作「masked motion inpainting」——给定部分约束,生成满足约束的完整物理动作。架构上分两阶段:
为什么是 C-VAE?
C-VAE 三个组件的分工:
| 组件 | 输入 | 输出 | 作用 |
|---|---|---|---|
| Encoder $E$(仅训练用) | $s_t + g_t^{\text{full}} + \text{mask}$ | $E(z_t \mid s_t, g_t^{\text{full}})$ | 训练时给出 latent z 的「真值」分布 |
| Prior $\rho$(推理用) | $s_t + g_t^{\text{partial}}$ | $\rho(z_t \mid s_t, g_t^{\text{partial}})$ | 部署时只用它采 latent |
| Decoder $D$ | $s_t + \text{sampled } z_t$ | deterministic action $a_t$ | 把 latent 解码成 PD target |
$E(\cdot) = \mathcal{N}(\mu_\rho(\cdot) + \mu_E(\cdot),\,\sigma_E)$——encoder 不离 prior 太远,推理时丢掉 encoder 也能用。训练目标(Eq.8):最大化 $\pi^{\text{FC}}$ 输出动作的 log-likelihood + KL 项让 $E$ 对齐 $\rho$。
Masking 是核心:temporally structured
每条训练样本的目标 $g_t^{\text{full}}$ 被随机 mask 函数 $M$ 处理。⚠️ 关键细节:mask 不是逐步随机重采——否则不同帧露的 joint 不同,跨帧信息泄漏让任务太容易,泛化差。论文用「temporally structured masking」:一个 mask 模式被重复采样到连续多帧上,确保某些 joint 在整段窗口内持续隐藏。
🛠️ 怎么做:5 个关键训练 trick
| Trick | 具体 | 为什么必要 |
|---|---|---|
| ① Temporally structured masking | 一个 mask 模式重复采到连续多帧 | 逐步独立采样 → 跨帧泄漏 → 泛化垮 |
| ② KL-scheduling(β-VAE 风格) | KL 系数 $0.0001 \to 0.01$ 线性升 | 前期让 encoder-decoder 紧贴 $\pi^{\text{FC}}$;后期逼 latent 空间结构化便于 prior 推理 |
| ③ Episodic latent noise | 每 episode 采一个 $\epsilon \sim \mathcal{N}(0,I)$ 在整段 episode 内固定 | 保证时序一致性(同一 episode 内动作连贯) |
| ④ Observation history | 过去 40 步里子采样 5 帧 | text-conditioned 长 motion 必备——没有它 text 任务会「漂」 |
| ⑤ Deterministic action sampling | FC 和 PC 都采 mean action | 减小 DAgger 数据收集随机性 |
三种 modality 的 token 表示
| Modality | 表示 |
|---|---|
| Keyframe $\hat q_{t+\tau}$ | 每关节 4 分量(相对当前关节+相对 root 的旋转差+位置差)+ 时间 $\tau$;mask 后置零 |
| Object $o_t$ | bbox 8 角点(角色局部坐标系)+ object type index(chair/sofa/stool/...) |
| Text $w_t$ | XCLIP embedding(视频-语言对训练,比纯文本 CLIP 更能捕捉时序) |
| Terrain $h_t$ | heightmap(沿角色 facing direction) |
Prior 是 transformer-encoder,每个 modality 一组 token;mask 的 token 通过 attention mask 直接排除(而非填 0)。训练只在 6 个关键 joint 上做 any-joint-any-time masking:Left/Right Ankle、Pelvis、Head、Left/Right Hand。
训练规模(Sec.7)
Goal-engineering:用 FSM 把任务拼出来(Sec.8.2)
部署时不重训,而是为每个任务搭一个有限状态机(FSM),根据当前 state 选择给 MaskedMimic 喂哪一种 partial goal。例如「sit on chair」:先在 FSM 状态 1 用 any-joint-any-time(接近物体),距离 < 阈值后切到状态 2 用 object bbox(坐下)。论文明确类比:"a process akin to prompt-engineering for language models"。
📊 关键结果:单一模型战胜 mixture-of-experts
(A) Full-body tracking(AMASS,flat terrain)
| 模型 | Train 成功率 | Train MPJPE | Test 成功率 | Test MPJPE |
|---|---|---|---|---|
| FC(ours) | 99.96% | 30.4 | 99.9% | 31.3 |
| PHC+ | 100% | 26.6 | 99.2% | 36.1 |
| MaskedMimic(ours) | 99.4% | 32.9 | 99.2% | 35.1 |
| PULSE | 99.8% | 39.2 | 97.1% | 54.1 |
⚠️ 关键观察:PHC+ 的 train MPJPE 更低(26.6),但 test MPJPE 反而更高(36.1 vs FC 的 31.3)——说明 PHC+ 的 mixture-of-experts 过拟合训练 motion,而 MaskedMimic 的单一 monolithic network 泛化更好。论文原文:"a single monolithic network offers better generalization capabilities"。FC tracker 把 test failure rate 比 PHC+ 降了 62.5%。
(B) VR tracking(flat terrain)——MaskedMimic 没专门训过这个任务
| 模型 | Train 成功率 | Test 成功率 | Test MPJPE |
|---|---|---|---|
| MaskedMimic | 98.6% | 98.1% | 58.1 |
| PULSE(专门训过) | 99.5% | 93.4% | 88.6 |
| ASE | 79.8% | 37.6% | 120.5 |
| CALM | 16.6% | 10.1% | 122.4 |
(D) Irregular terrain——训练 playground 含 flat / irregular / object 三区,Table 4 在不规则地形上评估
| 模型(irregular terrain) | Train 成功率 | Train MPJPE | Test 成功率 | Test MPJPE |
|---|---|---|---|---|
| FC(full-body) | 98% | 51.5 | 98.2% | 51 |
| MaskedMimic(full-body) | 94.7% | 61.3 | 95.4% | 62.9 |
| MaskedMimic(VR) | 94.4% | 62.7(MPOJPE) | 93.6% | 69.4(MPOJPE) |
训练 playground(Sec.5.4)本身就含 flat / irregular(stairs、slopes、gravel)/ object 三个区域,模型在不规则地形上同时训练与评估(非 flat-only 训练后 zero-shot 部署)。Table 4 显示 train→test motion 在不规则地形上成功率几乎不掉(MaskedMimic 95.4%),这是它区别于前作的关键泛化能力。
(E) Goal-engineering 任务套件(所有任务共享同一模型)
| 任务 | Flat 成功率 | Flat 误差 | Terrain 成功率 | Terrain 误差 |
|---|---|---|---|---|
| Locomotion(path-follow) | 96.3% | 11.2 cm | 96.3% | 12.5 cm |
| Steering(joystick) | 97.8% | 8.4 cm/s | 93.8% | 8.4 cm/s |
| Reach(单手) | 88.7% | 20.3 cm | 87.3% | 21.7 cm |
🌐 在领域中的位置
MaskedMimic 是第一个真正的「unified」物理角色 controller。论文最重要的一句话:"a single unified model…without requiring tedious reward engineering for all behaviors of interest"。它把「reward engineering」换成「goal engineering」,对应 LLM 领域从 fine-tune 到 in-context learning 的转变。单一 network 战胜 mixture-of-experts(PHC+ test MPJPE 36.1 vs FC 31.3)——给后续 humanoid control(OmniH2O、HOVER、BeyondMimic)吃下定心丸:scaling 单模型就够了。关联线索:T04 motion prior + T08 物理角色控制统一化。
❓ 常见误区
MaskedMimic 是 RL 还是模仿学习?
两阶段都有。Stage 1 的 $\pi^{\text{FC}}$ 用 RL(A2C + GAE)训 motion tracker,reward 是 Eq.5 的六项(关节位置/旋转/根高度/线速度/角速度/能量惩罚);Stage 2 的 $\pi^{\text{PC}}$ 用 DAgger 在线蒸馏——是 imitation learning(supervised behavior cloning),teacher 是 FC。所以严格说是「RL 训 teacher + IL 蒸馏 student」。
「motion inpainting」和图像 inpainting 是一回事吗?
思想一致(给定部分约束 → 补全整体),但「画布」不同:图像 inpainting 补像素,motion inpainting 补未来一段关节轨迹。而且 motion 必须满足物理约束(不能穿地、不能飞的关节 target),所以用 physics simulation 验证。
它在真机上跑过吗?
没有。MaskedMimic 是纯仿真角色动画工作,目标是虚拟角色 / 游戏 / 数字人 / VR avatar。与 humanoid robot 的 sim2real 链条是后续工作(OmniH2O、HOVER、BeyondMimic)补的。但它的 VR tracking 能力(98.1%)成了 humanoid teleop 的技术底座之一。
为什么 C-VAE 而不是 diffusion?
C-VAE 推理快(一次前向),适合 30 Hz 实时控制;diffusion 需要多步去噪,实时性差。但 episodic latent noise 也是为了缓解 C-VAE 固有的 mode collapse / 时序漂移问题。后续 BeyondMimic 把 inpainting 思想搬到了 diffusion 上。
训练成本有多高?
4 × A100 × 2 周 × 16,384 envs,~30B + 10B steps——只有大厂能复现。本质上还是 reference-motion-tracking,没有 MoCap 的 skill 学不到(比如机器人特有的精细 manipulation)。object interaction 也局限于「sit on」类(chair/sofa/stool),更复杂的 manip(拎起、搬动、开门)没验证。