一句话定位

PHC 是一个基于物理仿真的 SMPL 人形运动模仿控制器(motion imitator):单一策略在不施加任何外力的前提下模仿整个 AMASS 动作库的 98.9%,还能从摔倒 / 偏离参考的失败态自然爬起走回并恢复跟踪,从而”永续”地驱动实时仿真化身而无需 reset。核心是渐进式乘性控制策略(PMCP = PNN 渐进扩容 + MCP 乘性组合 + 独立的失败恢复原语),这套 tracker 后来被 PULSE 以及大量人形整机 whole-body-control 工作复用为底层动作跟踪器(ICCV 2023)。

背景与定位

论文攻击的是”用物理仿真人形忠实模仿大规模人体动作数据”这一基础问题,其范式属于 RL 目标条件运动模仿(goal-conditioned physics-based motion imitation),直接谱系是 DeepMimic(单片模仿)→ ScaDiver / UniCon / MoCapAct(数据集级模仿)→ UHC(Universal Humanoid Control,作者前作,AMASS 97%)。此前把整套 AMASS(约一万条 clip、40 小时)用单一策略高成功率模仿一直没做到:要么用 mixture-of-expert 扩容(ScaDiver ~80% by time-to-failure、MoCapAct 蒸馏后约达专家 80%),要么退而依赖残差外力控制(Residual Force Control, RFC)——UHC 靠 RFC 在人形根部施加非物理外力把成功率顶到 97%,代价是牺牲物理真实性、出现”上帝之手”般的漂浮 / 甩动伪影。

PHC 的立意是同时解决两件事:(1) 去掉外力仍能高成功率模仿整库;(2) 让控制器优雅处理噪声输入与失败态——视频估计出的姿态(遮挡 / 深度歧义 / 抖动)会让人形摔倒,而多数物理方法只能”检测到失败就 reset 到运动学姿态”,在噪声姿态上 reset 会陷入”摔倒→reset 到不可靠姿态→再摔”的恶性循环。PHC 用一个能自然爬起、走回参考、恢复模仿的统一策略打破这个循环,为实时视频 / 语言驱动的虚拟化身服务。仿真在 NVIDIA Isaac Gym 上做大规模并行;动作先验借用 AMP(Adversarial Motion Prior)。相较同期模仿学习里 diffusion-policy / aloha-act 走”动作分块 + 监督克隆”路线,PHC 是纯 RL + 物理仿真的另一支。

说明:本仓库入口元数据把机构标为 “NVIDIA / CMU”,但论文 v3 一手署名为 1 Reality Labs Research, Meta; 2 Carnegie Mellon University(Zhengyi Luo 由 Meta AIM 项目资助)。NVIDIA 的关联体现在仿真器 Isaac Gym;一作 Zhengyi Luo 后续才加入 NVIDIA。本页以论文一手署名为准。

模型架构

策略骨干:目标条件 RL(MDP ⟨S, A, T, R, γ⟩),策略 π_PHC(a_t|s_t)=N(μ(s_t), σ) 为固定对角协方差的高斯。所有网络——原语(primitive)、composer、value、AMP discriminator——都是 2 层 MLP [1024, 512],刻意用小网络。没有视觉编码器:视觉理解由外部现成姿态估计器完成,PHC 只吃下一时刻参考姿态。

状态 s_t =(本体感受 s^p, 目标态 s^g):本体感受 s^p=(q_t, q̇_t, β) 含 3D 体姿、速度、(可选)体型参数;旋转版目标态 s^g-rot=(θ̂_{t+1}⊖θ_t, p̂_{t+1}−p_t, v̂_{t+1}−v_t, ω̂_t−ω_t, θ̂_{t+1}, p̂_{t+1}),关键点版 s^g-kp=(p̂_{t+1}−p_t, v̂_{t+1}−v_t, p̂_{t+1})。所有量都相对人形当前朝向 / 根位置归一化。

动作头:每个 DoF 一个 PD 控制器,动作 a_t 即 PD 目标 q^d_t=a_t,力矩 τ_i=k_p∘(a_t−q_t)−k_d∘q̇_t,是连续控制。关键区别:不用 UHC/RFC 那种”残差动作叠加在参考姿态上”(q^d_t=q̂_t+a_t)——去掉对参考姿态的依赖,才能对噪声 / 病态参考鲁棒;不用任何外力、不用 meta-PD

人形本体:SMPL 运动学结构,24 个刚体、其中 23 个可驱动 → 动作空间 a_t∈R^{23×3};体型 β∈R^10,平均 70 kg。支持 capsule-based(默认,好仿真)与 mesh-based(凸包近似、更贴合体型、便于人物交互)两种,实验证明二者性能相近。

PMCP(渐进乘性控制策略)——核心创新,三件套

  • PNN 渐进神经网络:先在全库 Q̂ 上训练原语 P^(1) 至收敛,评测挑出失败子集 Q̂^(1)_hard;冻结 P^(1),新建 P^(2) 学更难的子集,如此 Q̂^(k)_hard⊆Q̂^(k−1)_hard 越来越小越来越难。两种衔接:横向连接(lateral connection,h^(k)i=f(W^(k)i h^(k){i-1}+Σ{j<k}U^(j:k)i h^(j){i-1}))或权重共享(用上一个原语权重 warm-start);实验证明二者等效,主实验用权重共享(训练更快,因新原语带着基础运动技能起步)。这样避免了”学新动作忘旧动作”的灾难性遗忘。
  • 失败恢复原语 P^(F):在原语栈末尾新增,专门学”摔在地上 / 远离参考(>0.5m) / 二者叠加”三类失败态的爬起 + 走回。恢复时把状态里除根之外的参考信息全部替换为仿真值(目标塌缩成 point-goal),根太远(>5m)时对目标位移做归一化裁剪;一旦靠近(<0.5m)切回全动作模仿。
  • MCP 乘性组合 + composer:原语学完后训练一个 composer C 动态组合冻结原语,输出权重向量 w^{1:K+1}_t,PHC 输出分布是原语高斯分布的乘积(式 5/6,等价 top-inf MOE:同时激活所有原语并组合动作分布),区别于只激活一个的 top-1 MOE。把预训练原语当作”informed search space”,composer 只需选谁激活。

主实验用 4 个原语(3 个模仿 + 1 个失败恢复)。输入两版:rotation-based(吃 θ̂+关键点)与 keypoint-based(只吃 3D 关键点 p̂,等于让物理仿真做 IK),后者更易由视觉 3D 关键点估计器或 VR 手柄产生,且实验中反而常常更好。

跨本体:SMPL 支持任意体型 / 性别;训练时可随机采样 AMASS 体型构造人形。仓库后续扩展到 SMPL-X(含手指)以及 Unitree H1 / G1 真人形,成为其整机跟踪底座。

数据

  • 训练库 = AMASS:论文口径”一万条 clip、40 小时动作”。沿用 UHC 的启发式过滤剔除人-物交互(坐椅子、跑步机、靠桌、上楼梯、悬空等)→ 11313 条高质量训练序列 + 140 条测试序列(README 注:曾为 11315,后修正为 11313)。
  • 失败恢复子集 Q_loco:从 AMASS 手挑、以走 / 跑为主,专门训 P^(F)——刻意让 AMP 判别器与风格奖励偏向简单 locomotion。
  • 评测集:AMASS-Test*(140)、H36M-Motion*(140 条 H36M 高质量 MoCap)、H36M-Test-Video*(160 条由视频估计出的噪声姿态,因 SOTA 估计器在 H36M 训练集上训过)。* 表示移除含人-椅交互的序列。
  • 噪声动作来源:视频→姿态用 HybrIK(出关节旋转 θ̃)+ MeTRAbs(出全局 3D 关键点 p̃),二者都是逐帧、无时序、可实时(~30 FPS)的因果模型;对估计姿态加高斯滤波(t-120→t,边界 mirror padding)。
  • 语言→动作:用 MDM(Motion Diffusion Model)出关键点,靠 PHC 的恢复能力把多段不连续 clip 自然衔接(in-betweening)。
  • 动作标注:无需额外动作标签——参考动作本身即监督,RSI(reference state init)随机选起点。

训练方法

  • 算法:PPO;单帧目标条件(reward r_t=R(s_t, q̂_{t+1}))。
  • 奖励:r_t=0.5·r^g + 0.5·r^amp + r^energy。模仿任务奖励 r^g-imitation=w_jp·e^{−100‖p̂_t−p_t‖}+w_jr·e^{−10‖q̂_t⊖q_t‖}+w_jv·e^{−0.1‖v̂_t−v_t‖}+w_jω·e^{−0.1‖ω̂_t−ω_t‖}(权重 w_jp=0.5, w_jr=0.3, w_jv=0.1, w_jω=0.1)。AMP 判别器奖励 r^amp 贯穿全流程(同 AMP 的观测 / 损失 / 梯度惩罚),保证动作自然、尤其让失败恢复动作像人。能量惩罚 r^energy=−0.0005·Σ_j|μ_j·ω_j|²,抑制无外力时脚部高频抖动。失败恢复奖励 r^g-recover=0.5·r^g-point+0.5·r^amp+0.1·r^energy,其中 point-goal 奖励 r^g-point=(d_{t-1}−d_t) 为根距离缩短量。
  • 多阶段流水线(Alg.1):① 逐个渐进训练原语 P^(1..K)(每个学更难 hard subset,评测→挑难→冻结);② 在 Q_loco 上训 P^(F)(不新建 value/discriminator,持续微调);③ 冻结全部原语,训 composer C 把它们组合,训练中交织失败恢复。value 与 discriminator 全程延续微调、不重置。
  • 早停与初始化:RSI + Relaxed Early Termination(RET)——把踝 / 趾关节移出”平均偏离参考 >0.5m 即终止”的判据(真人多段足与仿真足存在动力学失配),允许踝趾略偏以保持平衡,但仍对其计模仿 / 判别奖励防止非人化。还用 UHC 式 hard negative mining。
  • 关键超参(Table 5):batch size 1536、learning rate 2×10^{-5}(官方代码 phc/data/cfg/train/rlg/im.yaml2e-5;论文 Table 5 印作 5×2⁻⁵≈0.156,系排版笔误)、策略固定方差 σ=0.05、γ=0.99、PPO clip ε=0.2、horizon 32、minibatch 16384(代码)。

Infra(训练 / 推理工程)

  • 训练算力单张 NVIDIA A100 即可训练;Isaac Gym并行仿真 1536 个人形;训完全部原语 + composer 约 7 天,收集约 100 亿(10 billion)样本。控制策略 30 Hz、物理仿真 60 Hz。
  • 推理 / 实时:训练后 composite policy >30 FPS;含仿真 + 渲染 ~32 FPS,不渲染 ~50 FPS。原语数量增加对推理速度影响很小(小网络)。
  • 模型体积:4 原语最终模型 28.8 MB(对比 UHC 30.4 MB)。
  • 实时化身管线:YOLOv8 做人检测 + MeTRAbs/HybrIK 逐帧姿态(~30 FPS) + OCSort 多人跟踪关联;30 fps 直播 demo(webcam / 多人)。实时的额外挑战:检测 + 估计 + 仿真都得 ≥30 FPS,帧率波动会让模仿失稳。
  • 未披露:训练总 GPU-hours 的精确值(仅给”单 A100 约 7 天”)、并行 / 精度方案细节。

评测 benchmark

主基线为 SOTA 模仿器 UHC(官方实现,分带 RFC 外力 / 不带两种)。Succ↑=模仿中体关节平均偏离参考 <0.5m 才算成功;Eg-mpjpe / Empjpe 为全局 / 根相对 MPJPE(mm),Eacc / Evel 为加速度 / 速度误差。所有实验跑 3 次取平均。

MoCap 模仿(Table 1)

数据集UHC(+RFC)UHC(无外力)PHC(Ours)PHC-KP
AMASS-Train* Succ97.0%84.5%98.9% (Eg 37.5 / Empjpe 26.9 / Eacc 3.3)98.7% (40.7)
AMASS-Test* Succ96.4%62.6%96.4%97.1%
H36M-Motion* Succ87.0%23.6%92.9%95.7%

PHC 无外力即超过带 RFC 外力的 UHC,且加速度误差远低(UHC 无外力靠高频抖动维持平衡,Eacc 高)。

*噪声视频输入(Table 2, H36M-Test-Video)**:UHC(+RFC) 58.1% / UHC(无外力) 18.1% / PHC 88.7% / PHC-KP 90.0%(HybrIK+MeTRAbs root);PHC-KP 用 MeTRAbs 全关键点更达 91.9%。验证 PHC 对噪声鲁棒、可直接视频驱动。

失败恢复(Table 4,1000 次随机试验,Succ-5s / Succ-10s):摔倒态 PHC 95.0%/98.8%、PHC-KP 92.5%/94.6%;远离态 PHC 83.7%/99.5%、PHC-KP 95.1%/96.0%;摔倒+远离 PHC 93.4%/98.8%、PHC-KP 79.4%/93.2%——即便最难的”又摔又远”也 >90%。

消融(Table 3, 噪声输入):无 RET 51.2% → +RET 59.4% → +MCP 66.2% → +PNN(完整 PMCP) 86.9%,逐步验证每个组件。原语数(Table 6):1→2→3→4→5 = 59.4%/65.6%/80.9%/88.7%/87.5%,4 个最优(第 4 个之后更难的 Q̂ 主要是高跳 / 后空翻 / 侧手翻,难以合训)。MCP 略优于 top-1 MOE;lateral connection 与 weight sharing 等效。遗忘分析:约 30% 失败序列重叠、约 40 条(后空翻 / 杂技类)始终学不会。

论文后续(README,Cleaned AMASS 11313):PHC 98.9%/37.5/3.3、PHC-KP 98.7%/40.7/3.5、PHC+(用于 PULSE)100%/26.6/2.7、PHC-Prim 单原语 99.9%/25.9/2.3、PHC-Fut(用未来帧)100%/25.3/2.5、PHC-X-Prim(SMPL-X 单原语)99.9%/24.7/3.6——说明单原语 + Auto-PMCP 也能到极高成功率(但无失败恢复能力)。

创新点与影响

贡献:(1) 首个不用任何外力就把整套 AMASS 模仿到 98.9% 的单策略人形控制器(对比 UHC 靠 RFC 外力才 97%),物理真实性更高;(2) 提出 PMCP——把”越来越难的序列”当不同任务渐进扩容 + 乘性组合,避免灾难性遗忘,可作通用的渐进 RL / 多任务框架;(3) 把失败态恢复(爬起 + 走回 + 恢复模仿)整合进模仿策略,实现无需 reset 的”永续”控制;(4) 证明只用 3D 关键点即可模仿(物理仿真代做 IK),降低对关节旋转估计的依赖;(5) task-agnostic,可即插即用接现成视频姿态估计器 / 语言动作生成器(HybrIK / MeTRAbs / MDM)驱动实时化身。

影响:PHC 的 tracker 成为一批下游工作的底座——PULSE 在其上学潜在动作空间(含 100% 成功率的 PHC+),仓库随后加入 SMPL-X、Unitree H1/G1 支持、PHC-Act 离线数据集、IsaacLab 评测,被广泛复用为人形整机 whole-body-control 的低层动作跟踪器(GitHub 约 1.3k star)。它把”渐进扩容避免遗忘 + 乘性专家组合 + 失败恢复原语”这套配方带入物理仿真人形控制。

作者自述局限:未达训练集 100%(高跳 / 后空翻 / 侧手翻等高动态动作仍失败,约 40 条;单帧目标缺少规划 / 意图信息);渐进训练耗时长;姿态估计器与仿真解耦(估计器不知物理),需更紧集成;实时化身相比离线有明显性能退化(单目深度噪声、帧率失配、多人身份切换);失败恢复步态有对称性伪影(AMP 已知问题)、恢复→模仿切换时会突兀顿挫。

原始链接

一手源存档(sources/)

  • phc-perpetual-humanoid-control—github-readme — GitHub 官方 README 快照(含”Current Results on Cleaned AMASS”结果表、PHC+/PHC-Fut 后续结果、News 时间线、引用)
  • 论文全文见上方 arXiv 链接(arXiv 原文 PDF,不入 git)