创新点:
- 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 普遍存在的问题)。