Motivation
- 从行为标签合成运动缺乏描述力,这限制了运动合成的多样性和可控性
- 现有方法缺乏灵活的条件生成能力
Contribution
- 第一个将扩散模型应用到运动数据,为处理动作的时间性和可变长度设计新架构(Transformer decoder-based)
- 对于相同的文本,FLAME 生成的动作更多样
- FLAME 可以迁移到动作预测和动作填充的任务上,无需微调
Method
-
输入:时间步 token、运动长度 token、语言 token、动作 token。将预训练大语言模型提取的特征作为交叉注意力进行条件控制
-
输出:预测下一个时间步的噪声均值和方差,输出一个 2 - D m o 2\text{-}D_{mo} 2-Dmo 维度的向量表示均值和方差
-
为运动数据设计模型框架:由于动作具备时空属性,且不同动作的长度不同,因此无法用基于U-Net的框架处理统一所有数据,改用基于 transformer 的框架处理数据。
-
损失函数:参考 IDDPM
L h y b r i d = L s i m p l e + λ ⋅ L v l b L_{hybrid}=L_{simple}+\lambda\cdot L_{vlb} Lhybrid=Lsimple+λ⋅Lvlb
其中,
L
s
i
m
p
l
e
=
E
t
,
M
0
,
ϵ
t
[
∥
ϵ
t
−
ϵ
θ
(
M
t
(
M
0
,
ϵ
t
)
,
c
,
t
)
∥
]
L_{simple}=\mathbb{E}_{t,M_0,\epsilon_t}[\left \| \epsilon_t-\epsilon_{\theta}(M_t(M_0,\epsilon_t),c,t) \right \|]
Lsimple=Et,M0,ϵt[∥ϵt−ϵθ(Mt(M0,ϵt),c,t)∥] 表示对去噪过程中的每一步噪声分布的学习
L
v
l
b
:
=
L
0
+
L
1
+
⋯
+
L
T
−
1
+
L
T
L
0
:
=
−
log
p
θ
(
x
0
∣
x
1
)
L
t
−
1
:
=
D
K
L
(
q
(
x
t
−
1
∣
x
t
,
x
0
)
∣
∣
p
θ
(
x
t
−
1
∣
x
t
)
)
L
T
:
=
D
K
L
(
q
(
x
T
∣
x
0
)
∣
∣
p
(
x
T
)
)
\begin{align*} L_{vlb}&:=L_0+L_1+\cdots+L_{T-1}+L_T\\ L_0&:=-\text{log}\ p_\theta(x_0|x_1)\\ L_{t-1}&:=D_{KL}(q(x_{t-1}|x_t,x_0)\ ||\ p_\theta(x_{t-1}|x_t))\\ L_T&:=D_{KL}(q(x_T|x_0)\ ||\ p(x_T)) \end{align*}
LvlbL0Lt−1LT:=L0+L1+⋯+LT−1+LT:=−log pθ(x0∣x1):=DKL(q(xt−1∣xt,x0) ∣∣ pθ(xt−1∣xt)):=DKL(q(xT∣x0) ∣∣ p(xT))
可见
L
t
L_t
Lt 表示每一步的预测噪声与实际噪声的分布
-
动作合成:Classifier-Free Guidance
ϵ ^ θ ( M t ∣ c ) = ϵ θ ( M t ∣ ∅ ) + s ⋅ ( ϵ θ ( M t ∣ c ) − ϵ θ ( M t ∣ ∅ ) ) \hat{\epsilon}_{\theta}(M_t|c)=\epsilon_{\theta}(M_t|\emptyset)+s\cdot (\epsilon_{\theta}(M_t|c)-\epsilon_{\theta}(M_t|\emptyset)) ϵ^θ(Mt∣c)=ϵθ(Mt∣∅)+s⋅(ϵθ(Mt∣c)−ϵθ(Mt∣∅)) -
动作编辑:先扩散后条件去噪
-
M 0 r e f M_0^{ref} M0ref 加噪得到每个时间步 t t t 的扩散数据 M t r e f M_t^{ref} Mtref
-
使用训练好的模型对完全扩散的数据 M T r e f M_T^{ref} MTref 进行逐步去噪。去噪过程中,不需要编辑的部分用真实数据替代
M t − 1 e d i t = ( 1 − m ) ⊙ M t − 1 p r e d + m ⊙ M t − 1 r e f M_{t-1}^{edit}=(1-m)\odot M_{t-1}^{pred}+m\odot M_{t-1}^{ref} Mt−1edit=(1−m)⊙Mt−1pred+m⊙Mt−1ref
其中, M t − 1 p r e d ∼ p θ ( M t − 1 ∣ M t e d i t , c e d i t ) M_{t-1}^{pred}\sim p_{\theta}(M_{t-1}|M_t^{edit},c^{edit}) Mt−1pred∼pθ(Mt−1∣Mtedit,cedit) 是根据新条件 c e d i t c^{edit} cedit 生成的去噪样本。
Evaluation Metrics
-
APE(Average Position Error):计算每个关节在所有帧上的平均位置误差,然后对所有关节求平均,得到整个动作序列的平均位置误差。
A P E [ j ] = 1 N F ∑ n ∈ N ∑ f ∈ F ∥ M f [ j ] − M ^ f [ j ] ∥ 2 APE[j]=\frac{1}{NF}\sum_{n\in N}\sum_{f\in F}\left \| M_f[j]-\hat{M}_f[j] \right \|_2 APE[j]=NF1n∈N∑f∈F∑ Mf[j]−M^f[j] 2 -
AVE(Average Variance Error):计算每个关节在真实动作序列和生成动作序列中位置分布的标准差差异,然后对所有关节求平均,得到整个动作序列的平均方差误差。
A V E [ j ] = 1 N ∑ n ∈ N ∥ σ [ j ] − σ ^ [ j ] ∥ σ [ j ] = 1 F − 1 ∑ f ∈ F ( M f [ j ] − M ~ f [ j ] ) 2 ∈ R 3 AVE[j]=\frac{1}{N}\sum_{n\in N}\left \| \sigma[j]-\hat{\sigma}[j] \right \|\\ \sigma[j]=\frac{1}{F-1}\sum_{f\in F}(M_f[j]-\tilde{M}_f[j])^2\in \mathbb{R}^3 AVE[j]=N1n∈N∑∥σ[j]−σ^[j]∥σ[j]=F−11f∈F∑(Mf[j]−M~f[j])2∈R3 -
Multimodality:计算由同一文本提示生成的不同动作样本之间的平均差异,衡量由单个文本描述生成的动作样本的多样性。
Multimodality = 1 C × S l ∑ c = 1 S ∑ i = 1 S l ∥ v c , i − v c , i ′ ∥ \text{Multimodality}=\frac{1}{C\times S_l}\sum_{c=1}^S\sum_{i=1}^{S_l}\left \| v_{c,i}-v'_{c,i} \right \| Multimodality=C×Sl1c=1∑Si=1∑Sl vc,i−vc,i′
Ablation Study
从消融实验可以看出,交叉注意力和冻结 PLM 对结果的性能提高帮助最大。
为什么冻结 PLM 的效果更好?我猜测是 PLM 的表达能力已经很不错了,再去训练反而会破坏它的表达能力。
Gains
-
图像生成与动作生成区别:
- 图像只有空间信息,没有时间信息;而动作序列同时具备空间-时间信息
- 运动的长度可以从短程运动到长程运动不等,模型需要能处理任意长度的运动(个人理解:同类的运动表现的时长可能不一样,模型需要知晓如何将这些动作序列进行对齐)
-
交叉注意力用作编辑:
将提示词通过预训练语言大模型得到的语义嵌入,再通过 cross-attention 辅助语义编辑的方法似乎很常见。我在阅读图片编辑 SmartEdit 和三维部署 LayoutGPT 时都有看到类似的做法。当前动作生成的精度还不是很高,或许可以通过这种约束方式,将各个肢体都限定在某个范围内来提高精度?

