枢纽
数据集HumanML3D, BABEL
输入模态text

PriorMDM:把「短动作扩散模型」当成乐高积木,拼出长序列/双人/精细控制

Yonatan Shafir, Guy Tevet 等(Tel-Aviv University)。ICLR 2024;arXiv:2303.01418v3, 2023-08。 项目页 · 开源 · action_genmotion diffusionprior composition

🧠 一句话心智模型:训练数据只有「单人 10 秒短动作」,但你要生成「10 分钟长序列」「双人对打」「指定轨迹+手腕的复合控制」——怎么办?别为每个新任务重训一个大模型。把已经训好的短动作扩散模型(MDM)当成「积木」,通过串行 / 并行 / 模型组合三种拼法,零样本或少样本(~10 条数据)就能搞定原本需要专门训练的任务。

🎯 为什么重要:动作生成最大的痛点是「没数据」,prior 能绕开它

动作捕捉(mocap)数据有两个先天限制:(公开数据集几乎全是 ≤10 秒)和(几乎只有单人)。所以「长序列」「多人交互」「精细控制」这些任务,标注数据几乎没有,专门训模型走不通。PriorMDM 给出新路线:

老路:为每个任务训专属模型 TEACH(长序列) MRT(双人) · 每任务都要标注数据 · 长序列要标注「过渡」 · 双人 mocap 极稀缺 · 训练 + 调参成本高 ❌ 数据天花板卡死 关键观察 已经有一个不错的 MDM 短动作扩散先验 · 学到了「什么是合理的人体动作」 · 学到了「文本 → 动作」对齐 它能不能像 CLIP / Stable Diffusion 一样 成为「动作界的生成先验」? PriorMDM 新路 三种「组合」拼出任务 · 串行 → 长序列(10 分钟)  DoubleTake(零样本) · 并行 → 双人(10 条数据)  ComMDM(少样本) · 模型 → 复合控制(微调+混合) ✅ 绕开数据瓶颈
图 1(依论文 Fig.1 思路重绘):从「每任务一模型」转向「一先验多组合」,是这个工作给动作生成领域的范式转移。
核心矛盾:扩散模型本以「数据饥渴」著称——但 PriorMDM 反其道而行之,用扩散采样过程本身作为「组合」的舞台。三种拼法都发生在推理时的去噪迭代里,不动 MDM 主体(或只训一个极小的「通信」模块),因此数据需求被压到了 0~10 条。

💡 核心思想:在扩散采样的每一步「拼」出复合动作

三种组合分别针对三类任务。它们的共同点是:都把 MDM 视为黑箱先验,只在去噪迭代的「中间状态」上动手脚

① 串行组合 / DoubleTake → 任意长序列 每个 interval(短段)独立 MDM 生成 "走" τ- "跑" τ "跳" τ+ Take 1:相邻段强制握手 τ 相等 Take 2:soft mask 重新去噪 τ  让过渡平滑、语义匹配 结果:用 ≤10s 数据训的 MDM 能出 10 分钟流畅长动作 零训练、推理时完成 每段 prompt 独立可控 ② 并行组合 / ComMDM → 双人交互动作 MDM(人 A) 冻结 MDM(人 B) 冻结 ComMDM(1 层) 取 transformer 第 8 层激活 → 输出「通信修正项」 → 加回到两个 MDM 同层 只用 10 条双人 mocap 数据 训 1 层 transformer 就够 位置偏移 D 也由 ComMDM 学 ③ 模型组合 / DiffusionBlending → 精细关节/轨迹控制 G_a (轨迹微调) 条件 c_a G_b (左手腕微调) 条件 c_b 去噪每步把两模型输出插值: G_s = G_a + s · (G_b − G_a) 分类器无关引导的泛化版 每个单一控制只需微调 ≤20K 步 任意组合 = 推理时插值 例如同时指定「轨迹」+「左腕」 → 半空中写 "hello" 从「单任务专用」到「乐高式拼装」
图 2(依论文 Fig.3/4 + §3.3 重绘):三种组合方法同框对比。左:串行拼长序列;中:并行拼双人;右:模型插值拼复合控制。三者都把 MDM 当黑箱先验。

公式上最优雅的是 DiffusionBlending:它把 classifier-free guidance 的「条件 vs 无条件」插值,推广到「条件 $c_a$ vs 条件 $c_b$」的插值——只要两个微调后的扩散模型「aligned」(结构一致),就能在去噪每步做线性组合。

$$G_{s}^{a,b}(X_t, t, c_a, c_b) = G_a(X_t, t, c_a) + s \cdot \big(G_b(X_t, t, c_b) - G_a(X_t, t, c_a)\big)$$

🛠️ 怎么做:三个方法的实现要点

方法训练量推理时的关键操作为什么能 work
DoubleTake
(长序列)
零训练(直接用现成 MDM)Take 1:相邻 interval 强制「握手」$\tau$(~1 秒前/后缀)每步平均等值;Take 2:把过渡段 sandwich 部分加噪 + soft mask 重新去噪MDM 已见过短过渡片段(隐含在短动作里),通过 batch 内握手让相邻段互相感知上下文
ComMDM
(双人)
10 条数据训 1 层 transformer ~240K 步每去噪步从两个 MDM 的第 $n$ 层取激活,ComMDM 输出修正项 $\Delta O$ 加回;同时学初始位姿 $D$ 避免两人重叠每人各自的合理性由冻结 MDM 保证;ComMDM 只学「协调」,参数极少 → 少样本可收敛
DiffusionBlending
(复合控制)
每个单控制微调 MDM ≤20K 步微调时把控制特征(如轨迹)的噪声 mask 掉 → 模型学会依赖它;推理时把任意两个微调模型去噪输出做线性插值微调使每个模型对特定条件敏感;插值 = classifier-free guidance 的多条件版本
🔮 直觉:为什么「DoubleTake 第二次 take」是点睛之笔?
第一次 take 强制握手 → 段间确实接上了,但「走 → 跳」这种语义差异大的过渡,会产生不自然的「急刹」。第二次 take 把这段过渡当作 sandwich,部分加噪再用 soft mask 重去噪——既保留前后段的语义,又能把过渡磨平。这就是「soft inpainting」的妙用:不是「全保留 vs 全生成」,而是渐变 mask,让模型自己决定每帧的「保留度」。

📊 关键结果:三种组合全面超过「专门训练」基线

任务方法核心指标对比基线
长序列
(BABEL)
Ground TruthFID 0.0004 / R-prec 0.62
TEACH(专门训)FID 1.12 / R-prec 0.46
DoubleTake(零样本)FID 1.04 / R-prec 0.43(+TransEmb 0.48)过渡 FID 1.88 vs TEACH 3.86(~2× 提升
双人
(3DPW, 10 条数据)
MRT(专门训)L2 更低,但动作「静态、不真实」用户偏好 ~21-36%(ComMDM 胜出 76.7%/64.2%/79.2% 的补数)
ComMDM(少样本)L2 略高,但动作流畅、语义正确用户偏好 76.7% 交互 / 64.2% 完成 / 79.2% 质量
精细控制
(HumanML3D)
MDM 原版(inpainting)轨迹 FID 0.98 / 左腕 FID 0.82基线
Finetuned MDM(轨迹)FID 0.54
Finetuned MDM(左腕)FID 0.34
DiffusionBlending(左腕+轨迹)FID 0.22MDM 原版 inpainting FID 1.18 → 提升
维度结论(PDF 溯源)
长序列长度论文明确演示 10 分钟流畅动作,由仅在 ≤10s 数据上训过的 MDM 生成(§3.1, §4.1)
数据效率双人任务:3DPW 去噪后只有 10 条训练 + 4 条验证(§4.2)。ComMDM 仅 1 层 transformer,240K 步收敛
用户研究30 个用户 × 10 prefix × 10 比较,ComMDM 在交互/完成/质量三维度都 >50% 偏好率(Fig.8)
精细控制DiffusionBlending 在「左腕+右脚」复合任务上 FID 0.18(MDM 原版 0.81,4.5× 提升
消融ComMDM 位置:layer 8 最佳(layer 0 性能最差);层数 1 最佳(2/4 层反而下降)——「高层语义通信」比低层更重要
关键洞察:PriorMDM 最反直觉的结论是——「专门训练」未必比「组合现成先验」好。TEACH 是专门为长序列设计的,但在长序列指标上输给零样本的 DoubleTake;MRT 是专门为双人设计的,但在用户偏好上被 10 条数据训出来的 ComMDM 碾压。当数据稀缺时,先验组合 > 任务专用

🌐 在领域中的位置

MDM(Motion Diffusion Model,单人短序列) PriorMDM(把 MDM 当先验,三种组合)⭐ ControlNet / 多条件引导(图像界的「先验+控制」思路) 机器人动作生成:扩散先验 + 任务控制信号

PriorMDM 是动作生成界把「扩散先验 + 组合」思路系统化的工作——图像界有 ControlNet / classifier-free guidance,PriorMDM 把这套搬到了人体动作:串行拼长度、并行拼人数、模型拼控制。「不要为每个任务重训」这个思想,后来也被机器人动作扩散(如 Diffusion Policy 的多任务扩展)所继承。

❓ 常见误区

PriorMDM 和 MDM 是什么关系?

MDM(Tevet et al. 2023)是被复用的先验,PriorMDM 是复用 MDM 的方法论。可以理解为:MDM 是「画师」,PriorMDM 教你怎么用多个画师拼出一幅大画。论文 §3 明确说「we choose a pretrained MDM to serve as the prior」。

DoubleTake 真的不需要训练吗?

对,零样本。它直接用现成的 MDM,所有逻辑都在推理时的去噪迭代里完成:batch 内握手 + 第二 take 的 soft inpainting。论文 §4.1 说「we applied DoubleTake with a one-second-long transition length」——是超参不是训练。

ComMDM 用 10 条数据训,能泛化到什么程度?

有限。论文 §4.2 老实承认:「due to the small number of samples, generalization is fairly limited to interactions from the same type seen during training」。它能学好「同类交互」,但跨类型的文本到双人动作还是开放问题。

DiffusionBlending 和 classifier-free guidance 有什么区别?

CFG 是「条件 vs 无条件」插值;DiffusionBlending 是「条件 $c_a$ vs 条件 $c_b$」插值,两个都是有条件的微调模型。论文 §3.3 把它叫做「generalizes the core idea of the classifier-free approach to any two aligned diffusion models」。本质都是去噪每步做线性组合。

它对机器人控制有启发吗?

有。「先验 + 组合」是机器人动作生成的通用思路——Diffusion Policy 之后再做长序列、多任务、复合约束,都借鉴了这种「不要为每任务重训,而要组合」的思想。PriorMDM 在动画界证明了这条路走得通。