创新点:
VQ-VAE 👉 Residual VQ-VAE,对每个 motion sequence 输出一组 base motion tokens 和 v 组 residual motion tokens bidirectional 的 Masked transformer 用来生成 base motion tokens Residual Transformer 对 residual motion tokens 进行建模1. Residual VQ-VAE
VQ 0:就是和 T2M-GPT 一样的 codebook(T2M-GPT 的 VQ-VAE 只有这一级) 👉 base motion tokens
VQ 1:就是把 Encoder 的 output - VQ 0 codebook 的 embedding,对 residual(差值)的结果建立一个 codebook 👉 residual motion tokens
VQ V:(以此类推) 👉 residual motion tokens
decode 的时候,把每个层级的 token embedding 加起来,得到一个 embedding,送入 Decoder 里。
训练:
这里和 T2M-GPT 的 VQ-VAE (下面这个公式)有一点区别:
T2M-GPT 的 loss 由三部分组成,对比 MoMask 里 RVQ 只有 T2M-GPT 里 VQ 的 commit loss,不包含 embed loss
MoMask 里 RVQ 的 b 是编码过后,codebook 里的 embedding;T2M-GPT 的 Z 是进入 codebook 前的 embedding
sg 里的是 codebook 里的 embedding
效果:
这个是 T2M-GPT 里 VQ 的结果,FID 在 0.07 左右
这个是 MoMask 里 RVQ 的结果:
1. 不用 Residual(w/o RQ)就是单层级的 VQ(和 T2M-GPT 里 VQ 类似),FID 在 0.091 左右,比 T2M-GPT 里 VQ 稍微差一点(估计的 reconstruction loss 少了那一部分的原因?)
2. 用了多层级 motion tokens 后,也就是 with residual(MoMask)后,FID 是 0.019,提升蛮多。说明 residual 多层级 motion tokens 影响还蛮大的。
注意:
作者不希望 residual motion tokens 削弱 base motion tokens 的表达能力,还是希望 base motion tokens 能存储尽可能多的信息。所以在训练的时候还提出了一个 Quantization Dropout 的策略,即 randomly disables the last 0 to V layers with probability q ∈ [0, 1] during training.
Implementation Details
q = 0.2;V = 5
2. Masked transformer
1. 随机替换掉序列中占比 mask ratio 这么多的 motion tokens,替换为 a special [MASK] token
2. 在给定 text embedding(用 CLIP 提取)和 the sequence after masking 的情况下,去预测 masked tokens
注意:
训练时,mask ratio 是变化的,取值范围在 0-1.
训练过程中用了 BERT 的 remasking 策略:如果某个 token 要被 mask,那它有:(1)80% 的可能被替换为 [MASK] token;(2)10% 的可能被随机替换为其他 tokens;(3)10% 的可能不变。
预测:
First,所有的 tokens 都是被 mask 的。给定 text embedding,预测所有 tokens.
Next,保留置信度大的 tokens,mask 住置信度小的 tokens,预测被 mask 的 tokens.
让 Masked transformer 预测 L 次(L = 10),得到最终的 base motion tokens
3. Residual transformer
结构和 Mask Transformer 类似,区别在 Residual transformer 有 V 个不同的 token embedding layers
训练时,随机选择一个层级 j 进行学习:该层级之前所有层级(0 到 j-1)的 tokens 会经过各自的 token embedding layers,得到对应的 embedding,然后相加,作为当前层级的 input token embedding。
那么,当前层级 j 的学习任务就为:给定(1)当前层级的 input token embedding、(2)text embedding,和 (3)层级 id,目标是去预测(predict)当前层级 j 的 residual motion tokens
注意:为了高效训练,第 j 个层级的 token predicting layers 和 第 j+1 个层级的 token embedding layers 共享参数。
整体推理流程
此外,他们还采用了 classifier-free guidance (CFG),即
在训练时,10% 的时候,不给 text embedding
推理时,推理两遍:一遍不给 text embedding,一遍给 text embedding。两遍的 final linear projection layer before softmax 的输出值按如下公式加和,得到最终的 logits.
limitations
diversity 不高。 生成 motion 的时候,需要 motion 的序列长度。 面对这类 fast-changing root motions, such as spinning 的动作,生成还是会有一些问题(VQ 普遍存在的问题)。总结
本文介绍了MoMask模型在运动序列生成方面的创新点,主要集中的三个方面:Residual VQ-VAE、Masked Transformer以及Residual Transformer。下面是文章的总结:### 创新点总结
**1. Residual VQ-VAE**
- **出发点**:为了更细致、多层次地捕捉运动序列信息,提出Residual VQ-VAE结构。
- **结构**:通过多层级的VQ(Vector Quantization)机制,生成基础的motion tokens(base motion tokens)和多层级的residual motion tokens。每一层VQ利用上一层的残差(即实际输出与上一层VQ编码的嵌入之差)建立codebook。
- **解码**:将所有层级的token embeddings相加后,送入Decoder进行最终的运动序列生成。
- **训练与效果**:
- 相比T2M-GPT的单层VQ-VAE,MoMask的Residual VQ-VAE通过多层残差tokens显著提高了重建质量(FID从0.091提升至0.019)。
- 引入了Quantization Dropout策略,确保base motion tokens能存储尽可能多的信息,避免被多层残差削弱。
**2. Masked Transformer**
- **任务**:预测被随机mask掉的高质量motion tokens。
- **方法**:
- 序列中的motion tokens以一定比例被mask,替换为[MASK] token。
- 利用给定的text embedding和未mask的motion tokens序列,通过BERT的remasking策略预测masked tokens。
- 多轮迭代(L=10)预测,逐步提升预测的精度。
**3. Residual Transformer**
- **结构**:类似于Masked Transformer,但针对每个层级j的residual motion tokens进行建模。
- **训练**:随机选择一个层级j,使用之前层级的token embedding之和作为输入,结合text embedding和层级id,预测当前层级j的residual tokens。
- **高效训练**:通过共享相邻层级token predicting layers和token embedding layers的参数,提高训练效率。
**整体推理流程**
- **Classifier-free Guidance**:在训练时部分情况下不提供text embedding,推理时通过混合有text embedding和无text embedding的两次输出,以生成最终的运动序列。
**局限性与挑战**
- **多样性不足**:生成的motion多样性有限。
- **需要序列长度信息**:模型在生成运动序列时需要知道序列的期望长度。
- **处理快速变化的动作**:在处理像旋转这样的快速变化的root motions时,效果仍有提升空间。
综上所述,MoMask通过引入Residual VQ-VAE、Masked Transformer和Residual Transformer创新性地提升了运动序列的生成质量和多样性,同时面临一些局限性和未来改进的空间。