MDM:把「人体动作」当成「序列信号」去扩散生成
🎯 为什么重要:文本到动作的「多对多」死结
「一段文字 → 一段人体动作」是计算机动画的圣杯。难点不是「能不能生成」,而是多对多:
这意味着 文本 ↔ 动作 是一个固有的多模态映射。
但之前的 SOTA(JL2P / TEMOS / T2M / MotionCLIP)几乎都是 VAE / 自编码器——它们只能学到 一对一,或者强行把分布塞进一个高斯潜变量。结果:要么分布塌缩到「平均动作」,要么多样性很差。
扩散模型天生就是为多模态而生(它能表达任意形状的分布)。但直接把图像扩散搬过来不行:图像是 2D 像素,用 U-Net;动作是 1D 时间序列,每个样本是一组关节坐标。MDM 的贡献就是「针对动作域,把扩散改造对」——架构换 Transformer,预测目标换成 sample 本身,再把动作学里成熟的几何损失接进来。
💡 核心思想:Transformer 骨干 + 预测样本 + 几何损失
整个采样过程:从纯高斯噪声 xT ∼ 𝒩(0, I) 开始,每步用模型预测 x̂0,再把它「重新加噪」到 xt-1,循环 T=1000 步得到最终动作。
🛠️ 让扩散真正适配动作域的 4 个关键设计
| 设计 | 具体做法 | 为什么必要 |
|---|---|---|
| ① Transformer 骨干(非 U-Net) | 8 层 encoder-only,dim=512;时间步 t 和条件 c 各经 MLP 投影后相加成 token ztk | 动作是时间序列(非空间网格),U-Net 的卷积归纳偏置不匹配;Transformer 天然处理变长序列 |
| ② 预测样本 x̂0(非噪声 ε) | 网络输出直接是「干净动作估计」,损失 Lsimple = ‖x0 − G(xt, t, c)‖² | 只有预测样本本身,才能在它上面施加几何约束(位置、速度、脚接触)——这些是动作域的物理先验 |
| ③ 三个几何损失 | 位置损失 Lpos(前向运动学后的关节位置)/ 速度损失 Lvel(抑制抖动)/ 脚接触损失 Lfoot | 脚滑(foot sliding)是动作生成最显眼的伪影;接触地面时把脚速度强制置零 |
| ④ Classifier-free guidance | 训练时 10% 概率把条件 c 置空;推理时用 Gs = G(∅) + s·(G(c) − G(∅)),s=2.5 | 同一个模型既能条件生成也能无条件生成;s 控制「保真度 ↔ 多样性」的权衡 |
最终训练损失:
$$L = L_{simple} + \lambda_{pos} L_{pos} + \lambda_{vel} L_{vel} + \lambda_{foot} L_{foot}$$
这套设计还顺带解锁了动作编辑:扩散 inpainting——把序列前 25% 和后 25% 固定,中间 50% 让模型补全(in-betweening);或者空间编辑——固定下半身,让上半身按新文本重新生成。都不需要重训。
预测噪声 ε 时,损失是
‖ε − ε̂‖²,作用在噪声空间里——但「脚不滑」「速度连续」这些约束是定义在干净动作空间的,无法直接施加。预测样本 x̂0 后,损失直接作用在估计出的动作上,几何先验立刻生效。代价:训练略不稳定,但作者证明在动作域里值得。
几何损失是 MDM 的核心能力,但在 HumanML3D / KIT 的文本→动作实验中,作者并未启用它——因为这些数据集的表示已经显式包含关节位置和脚接触标签(PDF §4.1 原文:"Since foot contact and joint locations are explicitly represented in HumanML3D, we don't apply geometric losses in this section")。几何损失真正发挥作用是在动作→动作任务(HumanAct12 / UESTC,见表 3、4 的「w/o foot contact」消融)。所以下文文本→动作的 FID/Diversity/MultiModality 第一,主要来自「预测样本 + Transformer + 扩散」本身,而非几何损失。
📊 关键结果:SOTA + 42% 用户偏好超过真值
| 训练成本 | 数字 |
|---|---|
| 硬件 | 单张 RTX 2080 Ti |
| 训练时长 | 约 3 天 |
| 扩散步数 | T = 1000(余弦调度) |
| 推理耗时 | 每条动作 < 1 分钟 |
文本→动作(HumanML3D,全集 14,616 段动作 / 44,970 描述,下表为测试集指标)——MDM 在 FID(分布相似度)、Diversity(多样性)和 MultiModality(多模态性)三项同时拿到第一(R-precision 仍低于 T2M):
| 方法 | FID ↓ | R-precision Top3 ↑ | Diversity → | MultiModality ↑ |
|---|---|---|---|---|
| Real(真值) | 0.002 | 0.797 | 9.503 | — |
| JL2P | 11.02 | 0.486 | 7.676 | — |
| T2M(前 SOTA) | 1.067 | 0.740 | 9.188 | 2.090 |
| MDM(本文) | 0.544 | 0.611 | 9.559 | 2.799 |
文本→动作(KIT,全集 3,911 段,下表为测试集指标)——FID 同样第一:
| 方法 | FID ↓ | R-precision Top3 ↑ |
|---|---|---|
| T2M(前 SOTA) | 2.770 | 0.693 |
| MDM(本文) | 0.497 | 0.396 |
动作→动作(HumanAct12,12 类)——MDM 在 4 个指标中 3 个领先:
| 方法 | FID ↓ | Accuracy ↑ | Diversity → |
|---|---|---|---|
| ACTOR(前 SOTA) | 0.120 | 0.955 | 6.840 |
| INR(前 SOTA) | 0.088 | 0.973 | 6.881 |
| MDM(本文) | 0.100 | 0.990 | 6.860 |
用户研究(KIT,N=31)——MDM 生成的动作有 42.3% 被用户选为「比真实动作还好」:
| 对比 | 用户偏好 MDM |
|---|---|
| MDM vs JL2P | 90.4% |
| MDM vs TEMOS | 59.4% |
| MDM vs T2M | 54.8% |
| MDM vs Ground Truth | 42.3% |
🌐 在领域中的位置
MDM 是「动作生成扩散化」的奠基。后续的 MLD(潜扩散版本)、MotionGPT(语言模型化)都站在它肩膀上;它的「预测样本 + 几何损失」思路也被机器人的扩散策略(如 Diffusion Policy)间接继承。关联线索:T05 扩散策略谱系。
❓ 常见误区
MDM 是在物理模拟器里跑吗?能直接给机器人用吗?
不能直接用。MDM 生成的是运动学动作(关节位置/旋转序列),不保证物理可行(不摔、能平衡)。要给机器人用,需要再接一层「跟踪器」(如 PHC、BeyondMimic stage 1)。MDM 解决的是「生成什么样的动作」,不是「怎么执行」。
为什么 R-precision 反而比 T2M 低?
R-precision 测「文本和生成的动作有多匹配」。MDM 多样性高(MultiModality 2.799 vs T2M 的 2.090),意味着同一个文本会生成更多样的动作——其中一些可能在「字面匹配」上偏离 top-1。合理的解释是多样性 vs 准确率的内在权衡,扩散选择偏向多样性(论文仅报告数字,未展开论述此权衡)。
1000 步去噪是不是太慢?
是主要局限。单条动作 < 1 分钟可接受,但实时交互不够。后续工作(MLD 在潜空间扩散、DDIM 加速、一致性模型)正是为提速而生。
几何损失只能在「预测样本」范式下用吗?
原则上是的。预测噪声的范式(DDPM 原版)无法直接在干净动作空间施加约束,这正是 MDM 切换到「预测 x̂0」的核心动机——一个看似小的改动,却解锁了动作学里几十年积累的几何先验。