Skip to content

MotionLatentDiffusion

Motion Diffusion in Latent Space

Introduction

条件人体运动生成,根据各种条件输入生成合理的人体运动序列。

本文首先设计了一个 VAE,为人体运动序列获得了具有代表性的低维潜在编码;然后对运动潜在空间执行扩散过程,学习从条件到代表性运动潜在代码的概率映射。

两种学习从纹理描述符到运动序列的概率映射函数的方法:

  • 运动和语言之间的跨模态兼容潜在空间

学习 motion VAE 和 text VE,通过 KL 散度将两个编码器约束到兼容的潜在空间中。

  • 条件扩散模型

提出了用于人体运动合成的条件扩散模型,学习从文本描述符到人体运动序列的更强大的概率映射。

本文采用两种运动表示:

  • 基于经典 SMPL 的运动参数——广泛应用于动作捕捉
  • 结合关节特征的冗余手工运动特征——主要应用于角色动画

Methods

输入的条件包括:

  • textual descriptions:\(w^{1:N}=\{w^i\}^N_{i=1}\),描述动作的句子
  • action labels:\(a \in A\),取自预定义动作类别集的动作标签
  • empty conditions:\(c=\empty\)

MLD 旨在以非确定性方式生成人体运动 \(\hat{x}^{1:L}=\{\hat{x}^i\}^L_{i=1}\),其中 \(L\) 表示运动长度或帧号。

本文在 3D 关节旋转、位置、速度和脚接触的组合中应用 motion representation。

  • 使用运动编码器 \(\mathcal{E}\) 将运动序列 \(x^{1:L}=\{x^i\}^L_{i=1}\) 编码成潜在的 \(z=\mathcal{E}(x^{1:L})\)
  • 使用运动解码器 \(\mathcal{D}\)\(z\) 解码为运动序列 \(\hat{x}^{1:L}=\mathcal{D}(z)=\mathcal{D}(\mathcal{E}(x^{1:L}))\)

Motion Representation in Latents

本文基于 transformer-based 架构,构建 motion VAE(之后记作 MAE),由 transformer encoder \(\mathcal{E}\) 和 transformer decoder \(\mathcal{D}\) 组成,\(\mathcal{V}=\{\mathcal{E,D}\}\) 由仅使用 MSE-loss 和 KL-loss 的运动 \(x^{1:L}\) 重建进行训练。此外,对 \(\mathcal{E,D}\) 使用长跳跃连接结构,进一步增强潜在表示。

放一个 VAE 的图:

什么是长跳跃连接?

长跳跃连接是指在神经网络中,将较早层的输出直接连接到较后层的输入,跨越多个中间层。

实现方式:直接相加,将早期层的输出直接加到后面层的特征图上;拼接,将早期层的输出与后面层的特征图在通道维度上拼接。

Transformer encoder \(\mathcal{E}\)

输入:可学习的分布标记,和具有任意长度的逐帧运动特征 \(x^{1:L}\)

输出:\(\mu\)\(\sigma\),作为高斯分布的两个参数,随后用于重参数化 \(z\)

Transformer decoder \(\mathcal{D}\)

输入:长度为 \(L\) 的零运动标记作为查询,潜在变量 \(z\in R^{n\times d}\) 作为记忆

处理:交叉注意力机制允许每个查询根据潜在记忆 \(z\) 中的信息,动态地调整关注点,每一步输出不仅依赖于先前的输出,还依赖于从潜在空间中提取的整体上下文信息

输出:包含 \(L\) 帧的人体动作序列 \(\hat{x}^{1:L}\)

Motion Latent Diffusion Model

Diffusion probabilistic models

能够学习长度为 \(T\) 的马尔可夫噪声过程,\(\{x_t\}^T_{t=1}\),把噪声从高斯分布逐渐退火到数据分布 \(p(x)\)

For Motion Generation

输入:随机噪声,时间步 \(t\),表示当前在扩散过程中的位置

输出:运动序列 \(\{\hat{x}_t^{{1:N}}\}^T_{t=1}\)

处理:模型从纯随机噪声开始,使用 transformer-based 去噪器 \(\epsilon_{\theta}(x_t,t)\) 来预测并去除部分噪声,迭代 \(T\) 次将随机噪声退火成有意义的运动序列

改进:扩散过程和去噪过程在低维的运动潜在空间中进行,最后模型将低维空间的结果映射回完整的运动序列。

Denoiser \(\epsilon_{\theta}\)

输入:噪声化的潜在表示 \(z_t\) 和时间步 \(t\)

输出:预测的去噪后的潜在表示 \(z_{t-1}=\epsilon_{\theta}(z_t,t)\)

潜在空间扩散过程
  • 使用马尔可夫噪声过程建模:\(q(z_t|z_{t-1})=N(\sqrt{\alpha_t}z_{t-1},(1-\alpha_t)I)\)
  • \(\alpha_t \in (0,1)\) 是采样的超参数
  • \(\{z_t\}^T_t\) 表示噪声序列
训练阶段
  • 使用无条件生成目标 \(L_{MLD}=E_{\epsilon,t}\left[||\epsilon-\epsilon_{\theta}(z_t,t)||^2_2\right]\) 来训练去噪器 \(\epsilon_{\theta}\)
  • \(\epsilon \sim \mathcal{N}(0,1)\)\(z_0=\mathcal{E}(x^{1:L})\)
  • 目标函数的意思是:最小化预测的噪声和实际添加的噪声之间的均方误差
  • 训练过程中,模型学习如何从给定的噪声化数据中预测原始的噪声。
生成阶段
  • 从纯噪声 \(z_T\) 开始,逐步应用去噪器
  • 在每一步,使用 \(z_{t-1}=\epsilon_{\theta}(z_t,t)\) 预测,重复 \(T\) 次得到 \(z_0\)

Conditional Motion Latent Diffusion Model

通过应用 \(p(z|c)\) 的条件分布可以生成条件运动 \(\mathcal{G}(c)\)

\(\mathcal{G}(c)\) 使用条件降噪器 \(\epsilon_{\theta}(z_t,t,c)\) 实现。

  • 对于不同的条件,只需要学习 \(\epsilon_{\theta}(z_t,t,c)\)
  • 为了处理不同的 \(c\),使用用于条件嵌入的域编码器 \(\tau_{\theta}(c)\in \mathbb{R}^{m\times d}\) 来优化去噪器 \(\epsilon_{\theta}(z_t,t,\tau_{\theta}(c))\)

什么是域编码器?

本文提到的域编码器 \(\tau_{\theta}(c)\) 是一个将条件信息 \(c\) 映射到一个固定维度向量空间的函数。

不同类型的条件(如文本、动作类别)可以被转换成相同格式和维度的向量。

具体实现:

  • 文本条件:使用预训练的 CLIP 文本编码器 \(\tau_{\theta}^w(w^{1:N}) \in \mathbb{R}^{1\times d}\)
  • 动作类别:使用可学习的嵌入 \(\tau_{\theta}^a(a)\in \mathbb{R}^{1\times d}\)
条件注入

把嵌入的条件注入 transformer-based 的 \(\epsilon_{\theta}\) 中:

  • 使用连接 (concatenatin) 和交叉注意力 (cross-attention) 两种方法
  • 连接更有效。

什么是连接 concatenation?

连接是将两个或多个向量或张量在特定维度上合并的操作。

假设有两个向量 A 和 B,连接操作会创建一个新向量 C,其中包含 A 和 B 的所有元素。

在扩散模型中,可以将条件向量直接连接到噪声潜在表示上,让模型同时处理这两种信息。

什么是交叉注意力 cross-attention?

一种注意力机制,允许模型在处理一种输入时关注另一种输入的相关部分。

  • 有三个关键组件:Query,Key,Value
  • Q 来自一个输入源,K 和 V 来自另一个输入源
  • 模型计算 Q 和 K 之间的相似度,然后使用这些相似度来加权值

在扩散模型中,可以让噪声潜在表示作为查询,条件信息作为键和值,从而让模型根据当前生成的内容动态地关注条件的不同方面。

放一个 self-attention 的图

Self-Attention:输入来源于单一输入序列

Cross-Attention:输入来源于两个不同的输入序列

条件目标函数

\(L_{MLD}:=\mathbb{E}_{\epsilon,t,c}\left[||\epsilon-\epsilon_{\theta}(z_t,t,\tau_{\theta}(c))||^2_2\right]\)

训练策略
  • 冻结 \(\tau_{\theta}^w\)
  • 通过条件目标函数,联合优化 \(\tau_{\theta}^a\)\(\epsilon_{\theta}\)
  • 使用无分类器扩散指导来学习 \(\epsilon_{\theta}\)

什么是无分类器扩散指导?

一种在条件扩散模型中改善生成质量的技术,不需要额外的分类器。通过在训练和采样过程中结合条件和无条件模型来实现。

工作原理:

  • 训练阶段:同时学习条件分布 \(p(x|c)\) 和无条件分布 \(p(x)\)
  • 采样阶段:通过线性组合生成样本

为什么说是一种权衡?

  • 通过增强条件信息的影响,生成的样本更符合给定的条件;

  • 强化条件信息使生成过程更确定性,可能导致生成结果的变化减少,多样性降低。

采样策略
  • 学习条件分布和无条件分布,在 \(10\%\) 的样本中丢弃条件信息
  • 使用线性组合 \(\epsilon_{\theta}^s(z_t,t,c)=s\epsilon_{\theta}(z_t,t,c)+(1-s)\epsilon_{\theta}(z_t,t,\empty)\)
  • \(s\) 是指导比例,\(s\gt 1\) 可以增强指导效果

\(s\) 值是什么?

\(s\) 是指导比例 guidance scale,控制条件模型和无条件模型输出的混合比例,通常 \(s\ge 1\)

这个线性组合用来干什么?

这个线性组合在每一个去噪步骤中都会被使用,我们用 \(\epsilon_{\theta}^s(z_t,t,c)\) 来预测噪声,并用于更新 \(z_t\)\(z_{t-1}\)

生成过程

完成了条件控制下的逐步去噪过程后,模型得到预测的潜在表示 \(z_0\),然后解码器 \(\mathcal{D}\) 将这个潜在表示转换为实际的运动数据。

所以!条件运动潜在扩散模型到底做了什么?
  1. 输入:原始运动数据和对应的条件信息,如文本描述或动作类别
  2. 编码:使用编码器 \(\mathcal{E}\) 将原始运动数据 \(x^{1:L}\) 映射到潜在空间,得到初始潜在表示 \(z_0=\mathcal{E}(x^{1:L})\)
  3. 条件嵌入:使用 \(\tau_{\theta}(c)\) 将条件信息 \(c\) 嵌入到适当的向量空间
  4. 扩散过程(训练阶段):使用马尔可夫噪声过程,从 \(z_0\) 开始逐步添加噪声,生成噪声序列 \(\{z_t\}^T_{t=0}\)
  5. 去噪器训练:训练去噪器 \(\epsilon_{\theta}\) 来预测和移除噪声
  6. 同时学习条件去噪和无条件去噪
  7. \(10\%\) 的样本中丢弃条件信息,以学习无条件生成
  8. 目标函数:条件目标函数 \(L_{MLD}\),联合优化 \(\epsilon_{\theta}\)\(\tau_{\theta}\)
  9. 生成过程:开始于纯噪声 \(z_T\),逐步去噪
  10. 使用无分类器扩散指导
  11. 解码阶段:使用解码器 \(\mathcal{D}\) 将最终的潜在表示 \(z_0\) 转换回原始运动数据空间,\(x^{1:L}=\mathcal{D}(z_0)\)

Experiments

Datasets and Evaluation Metrics

数据集
Text to motion
  • HumanML3D

  • KIT

Action to motion
  • HumanAct12
  • UESTC

Implementation Details

TODO

评价指标
Motion quality
  • FID,Frechet Inception Distance
  • MPJPE and PAMPJPE
  • ACCL,Acceleration Error
Generation diversity
  • DIV
  • MM,MultiModality
Condition matching
  • R Precision,motion-retrieval precision
  • MM Dist,Mult-modal Distance
Time costs
  • AITS,Average Inference Time per Sentence

Ablation Studies 消融研究

什么是消融研究?

用于评估模型中各个组件的重要性,通过系统地移除模型的某些部分,然后观察这种改变对模型性能的影响,从而了解每个组件的贡献。

MLD 包括 \(\mathcal{V}\) 和潜在扩散模型 \(\epsilon_{\theta}\)

首先关注 \(\mathcal{V}\),用生成和重构指标来评估它的组件。

Latents 在运动序列表示中的有效性

首先在受控装置中烧蚀 \(\mathcal{V}\) 的几个组件,研究 \(z\) 的形状,跳跃连接和 transformer 层数。

\(z\)\(\mathcal{V}\)\(\tau_{\theta}\) 之间的桥梁。将位姿 \(x^i\) 的嵌入维数锁定为 256,探索 \(z\in \mathbb{R}^{i\times 256}\),给出 \(MLD-i\)。然后在最佳的 \(MLD-7\) 上评估 skip connection 和 transformer 层。

Latents 在 latent-based 扩散模型中的有效性

\(MLD-i\) 指的是潜在变量 \(z\in \mathbb{R}^{i\times 256}\) 的形状,其中 \(MLD-1\) 使用最小的潜在变量,在大多数指标上取得了最佳性能。

之后给出对 \(\epsilon_{\theta}\) 的评价,级联嵌入的编码器设计比交叉注意力嵌入的更好。

跳跃连接对运动潜在扩散模型有显著改进。

然后,通过扩散采样评估 \(MLD\) 的生成,而不是通过潜在采样在 \(\mathcal{V}\) 中生成。最小潜在连接和跳跃连接的 \(MLD\) 优于其他方法。

Inference time

运动扩散模型的一个显著限制是推理时间较长。采用去噪扩散隐式模型 DDIM 提供推理时间、浮点运算和 FID 的详细评估。

Discussion

本文提出的 MLD 仍然存在以下局限性:

  • 可以生成任意长度的结果,但仍然低于数据集中的最大长度
  • MLD 关注的是关节型的人体,但没涉及面部运动、手部运动和动物运动