MotionCLIP:把动作 manifold「贴」到 CLIP 的语义空间里
🎯 为什么重要:动作生成的「数据稀缺」与「语言丰富」之间的桥
2022 年前,文本→动作的最大瓶颈是数据。最大的数据集(KIT ~11 小时、BABEL ~40 小时)和「人类动作的真实分布 + 自然语言的描述力」相比,仍然像一勺水对一片海:
MotionCLIP 的回答是:不指望在动作数据里学到语言,而是把动作空间「贴」到已经学过语言的 CLIP 上:
💡 核心思想:用两个对齐损失,把动作 latent「钉」到 CLIP 上
MotionCLIP 的核心是一个 Transformer 自编码器(论文 Fig.3):编码器把动作序列 $p_{1:T}$ 压成一个 latent $z_p$,解码器从 $z_p$ 还原动作。重点是两个对齐损失,让 $z_p$ 同时贴近「文本的 CLIP 嵌入」和「渲染图的 CLIP 嵌入」:
$$L = L_{recon} + \lambda_{text}\underbrace{\left(1 - \cos(\mathrm{CLIP}_{text}(t), z_p)\right)}_{L_{text}} + \lambda_{image}\underbrace{\left(1 - \cos(\mathrm{CLIP}_{image}(s), z_p)\right)}_{L_{image}}$$
其中 $L_{recon}$ 是动作的 L2 重建(关节朝向 + 顶点位置 + 关节速度),$\lambda_{text}=\lambda_{image}=0.01$(小权重,但对齐信号极强)。
关键是 CLIP 的语义结构是组合式、连续的:「walking」和「running」在它里面靠得很近,「Spiderman」靠近「web」「swing」「jump」。MotionCLIP 只需要把动作 latent 局部对齐到这些语义点,CLIP 自己的插值与组合能力就会自动填补「训练集没见过的动作」。这就是为什么输「couch」会得到坐下——CLIP 知道 couch 和 sit 语义近。
🛠️ 四个让「免费语言能力」真生效的设计
| 设计 | 心智 | 为什么必要 |
|---|---|---|
| ① 双对齐(text + image) | 同时用 CLIP 文本编码器和图像编码器监督 $z_p$ | 文本标签稀疏粗(BABEL 260 类),单独用文本对齐会塌缩(消融:去 text loss,Top-1 从 40.9% 掉到 4.54%);图像监督提供更细粒度信号 |
| ② 渲染一帧而非整段 | 从每个 60 帧序列里随机选 1 帧,用 Blender + SMPL-X 渲染成图 | CLIP 是单图模型;用 1 帧代表整段动作的「语义快照」,让对齐可行 |
| ③ 重建损失 + 速度项 | $L_{recon}$ = 关节朝向 L2 + 顶点 L2 + 相邻帧差分 L2 | 差分项等效于监督速度,避免「位置对了但动作卡顿/抖动」 |
| ④ 冻结 CLIP | CLIP-ViT-B/32 完全不更新,只训 Transformer AE | 保护 CLIP 的语义结构;如果放开 CLIP 训练,几十小时动作数据会把它「拉坏」 |
📊 关键结果:用户偏好 + 抽象语言「无中生有」
| 文本→动作用户研究(与 JL2P 对比,preference score) | JL2P | MotionCLIP |
|---|---|---|
| In-domain set(标签在两数据集都见过) | 23.3% | 76.7% |
| Out-of-domain set(奥运会运动项,两边都没见过) | 24.7% | 75.3% |
| 风格迁移用户研究(vs. Aberman et al. 专门设计的风格迁移模型) | Aberman et al. | MotionCLIP |
|---|---|---|
| 平均偏好(8 种风格) | 62.1% | 37.9% |
| 赢/平的风格(Happy、Angry 赢;Drunk 平) | — | 赢 Happy (68.7%)、Angry (56.5%),平 Drunk (50%) |
| 动作识别消融(BABEL-60) | Top-1 | Top-5 |
|---|---|---|
| MotionCLIP(完整) | 40.9% | 57.71% |
| w/o image loss(去渲染图对齐) | 35.05% | 50.26% |
| w/o text loss(去文本对齐) | 4.54% | 18.37% |
| 2s-AGCN(专门设计的动作识别网络,监督训练) | 41.14% | 73.18% |
| 训练细节(论文 §4.1) | 数值 |
|---|---|
| 数据集 | BABEL(基于 AMASS,~40 小时 mocap,260 类标签) |
| 预处理 | 下采样到 30 fps,切成长度 60 的片段;SMPL $\beta=0$ 中性身体 |
| 动作表示 | $p_i \in \mathbb{R}^{24\times 6}$(23 个关节 + 全局朝向,各 × 6D 旋转表示) |
| Transformer | encoder 8 层 + decoder 8 层 |
| CLIP | ViT-B/32,全程冻结 |
| 损失权重 | $\lambda_{text} = \lambda_{image} = 0.01$ |
🌐 在领域中的位置
MotionCLIP 是动作生成「外挂 foundation model」路线的起点。它的核心 trick(把任务 latent 贴到 CLIP/BigGAN 等预训练空间)被后续无数工作复用——从 3D 形状生成、字体生成到机器人策略。同年稍晚的 MDM(Tevet et al. 2022,同作者)把扩散模型 + CLIP 文本条件接上,把生成质量再推一阶;T2M-GPT(2023)则把 VQ-VAE 加进来。MotionCLIP 的核心遗产是:当任务数据稀缺,去找一个已经学过世界的 foundation model 把 latent 拉过去——这条思路后来在 VLA(RT-2、π0)里继续生效。
❓ 常见误区
MotionCLIP 是 CLIP 的微调吗?
不是。CLIP 全程冻结,不动一个参数。MotionCLIP 训的是一个独立的 Transformer 自编码器,只用 CLIP 作为「latent 空间的参照系」。这是它能保留 CLIP 全部语言知识的关键。
那它的动作生成质量比 TEMOS / MDM 强吗?
绝对质量不一定更强,但泛化能力压倒性领先。论文里和 TEMOS 没有直接定量对比(不同数据集:BABEL vs KIT),但 MotionCLIP 的杀手锏是抽象语言和分布外动作——「Spiderman」「couch」「Williams sisters」这种是其他方法做不到的。
为什么 text loss 那么关键,image loss 反而不那么关键?
消融显示:去 text 掉到 4.54%,去 image 只掉到 35.05%。原因是 BABEL 的文本标签已经携带语义,CLIP 文本编码器能直接利用;而渲染图只是 1 帧,信息密度低,更多是辅助对齐(防止 latent 在 CLIP 空间里乱漂)。但 image loss 对分布外泛化很重要——它提供了文本没说的细节。
它真的是「无监督」地学到了动作语义吗?
不完全是。它用了 BABEL 的文本标签(虽然是粗的 260 类)。完全无监督的话,CLIP 对齐会塌掉——因为没有锚点告诉它哪段动作对应哪段文本。论文的「自监督」指的是渲染图那一路,因为图是程序自动渲染的,不需要额外标注。
能用在机器人动作上吗?
不能直接用。MotionCLIP 输出的是 SMPL 人体动作(23 个关节 + 全局朝向),而机器人是另一套关节。但「把策略 latent 贴到 CLIP/语言空间」的思路被 RT-2 / VLA 直接继承——只不过那边贴的不是动作 latent,是 token 序列。