里程碑
数据集AMASS
物理感知
输入模态text,vision

MaskedMimic:把所有物理角色控制任务统一成「动作补全」

Chen Tessler, Yunrong Guo, Ofir Nabati, Gal Chechik, Xue Bin Peng(NVIDIA + Bar-Ilan + SFU)。SIGGRAPH Asia 2024 / ACM TOG 43(6) Article 209 / arXiv:2409.14393。 项目页 · character controlmotion prior 线索 T04

🧠 一句话心智模型:物理角色控制的历史一直是「一个任务训一个 policy」——VR tracking、坐椅子、text-to-motion 各训一个。MaskedMimic 的洞察:所有这些任务都是同一个问题的实例——给定一个「部分被遮挡的动作描述」(VR 只露头和手 / text 只有文字 / scene 只有物体 bbox),生成满足约束的完整物理动作。这就是「motion inpainting」。训练时把目标随机 mask 一下让 controller 学会「补全」,部署时无需任何额外训练就能接受任意组合的约束。

🎯 为什么重要:「一个任务一个 policy」不可持续

游戏、数字人、VR 这种需要数千种行为组合的场景,传统「每任务训一个 controller」根本走不通。每个新任务都需要:(a) 挑选对应 MoCap 子集;(b) 手写 reward;(c) 训练并调参。

传统:每任务训一个 controller VR tracking sit on chair text2motion path follow stair climb 每个:挑 MoCap + 手写 reward + 调参 N 个任务 = N 周工程 MaskedMimic:单一模型 + 部分目标 ✅ 单一 controller(C-VAE) 训练时见「随机 mask 的完整目标」 部署时:FSM 切 goal(不重训) 任意组合:keyframe + text + object + terrain N 个任务 = N 个 FSM(goal-engineering)
图 1:传统范式每个任务训一个 controller;MaskedMimic 训一个统一模型,部署时用 FSM 切换 goal——把「reward engineering」换成「goal engineering」(类比 LLM 的 prompt engineering)。

💡 核心思想:motion inpainting + 两阶段蒸馏

MaskedMimic 的核心是把所有任务看作「masked motion inpainting」——给定部分约束,生成满足约束的完整物理动作。架构上分两阶段:

Stage 1:Fully-Constrained $\pi^{\text{FC}}$ RL(A2C)训 motion tracker 输入:完整目标 $g_t^{\text{full}}$(未来 K 帧全关节) transformer-encoder + critic 输出:PD 控制目标(关节 target) 作用:teacher,提供标签 FC test 99.9% 成功率 Isaac Gym 16,384 envs × 4 A100 ~30B 步 / 2 周 Stage 2:Partially-Constrained $\pi^{\text{PC}}$ DAgger 在线蒸馏 → C-VAE Encoder $E$(训练用):见全目标 Prior $\rho$(推理用):见部分目标 Decoder $D$:sampled z → action Encoder = prior 的残差(Eq.7) 部署时丢掉 Encoder,只用 prior ~10B 步 / 2 周 30 Hz 控制 / 120 Hz 仿真 蒸馏
图 2:两阶段框架。Stage 1 用 PPO 训一个只见完整目标的 tracker $\pi^{\text{FC}}$(teacher);Stage 2 用 DAgger 在线蒸馏出只见部分目标的 $\pi^{\text{PC}}$(MaskedMimic,student),形式上是一个 conditional VAE。

为什么是 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
关键设计:Encoder = Prior 的残差(Eq.7)
$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 samplingFC 和 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)

Isaac Gym,16,384 个并行环境,跨 4 张 A100 GPU;约 2 周训练;$\pi^{\text{FC}}$ 约 300 亿步、$\pi^{\text{PC}}$ 约 100 亿步;控制器 30 Hz,仿真 120 Hz。

Goal-engineering:用 FSM 把任务拼出来(Sec.8.2)

🔮 直觉:goal-engineering = prompt-engineering
部署时不重训,而是为每个任务搭一个有限状态机(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 MPJPETest 成功率Test MPJPE
FC(ours)99.96%30.499.9%31.3
PHC+100%26.699.2%36.1
MaskedMimic(ours)99.4%32.999.2%35.1
PULSE99.8%39.297.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
MaskedMimic98.6%98.1%58.1
PULSE(专门训过)99.5%93.4%88.6
ASE79.8%37.6%120.5
CALM16.6%10.1%122.4
关键洞察:CALM 在 VR 任务上几乎崩盘(10% 成功),因为它需要专门训高层 policy,从未训过的任务直接零能力。MaskedMimic 没专门训过 VR tracking,test 成功率却优于专门训过的 PULSE(98.1% vs 93.4%,MPJPE 58.1 vs 88.6mm)。这是「单一统一模型 + goal-engineering」范式的直接证据。

(D) Irregular terrain——训练 playground 含 flat / irregular / object 三区,Table 4 在不规则地形上评估

模型(irregular terrain)Train 成功率Train MPJPETest 成功率Test MPJPE
FC(full-body)98%51.598.2%51
MaskedMimic(full-body)94.7%61.395.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 cm96.3%12.5 cm
Steering(joystick)97.8%8.4 cm/s93.8%8.4 cm/s
Reach(单手)88.7%20.3 cm87.3%21.7 cm

🌐 在领域中的位置

DeepMimic(每任务训一个 tracker) ASE / CALM / PULSE(latent skill 库 + 高层调度) MaskedMimic(单一 unified controller + goal-engineering)⭐ OmniH2O / HOVER / BeyondMimic(humanoid 应用)

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(拎起、搬动、开门)没验证。