Diffusion与交互运动生成¶
最近在看交互运动生成方面的论文,大多数技术路线都是基于Diffusion增加一些模块来提升生成效果。最早的Diffusion运动学生成应该是Human Motion Diffusion这篇论文搞的,不过做的是但单人运动学生成。
然后双人的话有InterFormer、InterGen、InterMask、ReGenNet、ReMoS、Role-aware、TIMotion等等,非常的多。
双人Motion Generation
双人运动学生成模型宏观分为两类,一种是文本为cond生成两人的交互motion,一种是Actor的Motion为Cond生成Reactor的Motion,但是这两种可以交互融合,比如以文本+Actor的Motion为cond生成reactor的motion。另外,有些论文也考虑了时间的因果性,即Reactor只能根据t时刻之前actor的motion来生成自己的motion,这里主要用Mask实现因果训练的效果。
Diffsuion的应用方式在每个论文里有所差异,比如ReMoS这篇论文,搞了两个Diffusion的Denoiser,一个用来生成Body,一个用来生成Hand,然后Actor的Motion以KV的形式与Reactor Motion的Q进行CrossAttention。除此之外,还利用了手部距离来增强两个人的接触性,具体咋搞的忘了,总之复现之后感觉人物之间接触性还是很好的。
而InterGen这篇论文,由出发点是文本生成交互运动,所以用CLIP对Text进行了Embedding,然后以Cond的形式加入Diffusion中,而Denoiser则是通过噪声生成两个人的Motion。Denoiser所采用的骨干网络是一个双Transformer架构,共享权重且两个Transformer之间有CrossAttention。(Role-Aware和InterGen有点像,不多说)
TIMotion也是文本生成,只是在Denoiser之前多了一些两个人的运动融合操作,不多说。
ReGenNet是Actor+Cond生成Reactor的motion,然后用了方向性注意力掩码,来确保不泄露t时刻之后Actor的信息。另外Actor的motion通过linear层提取特征,然后与Reactor加噪后的特征相加之后得到Denoiser的输入\(Z_t\),此外\(Z_t\)还包括位置编码,然后cond是Text和时间t的特征相加得到的。Denoiser骨干网络也就是一层Transformer,最后生成的是Reactor的Motion。
InterMask虽然也是文本生成两个人的Motion,但是方法比较新颖,没有用Diffusion而是用VQ-VAE,先用VQ-VAE对Motion提取特征,然后对特征做Flatten和Mask,这里Mask掉的元素貌似就是后续需要Predict的,用来Predict的网络是Transformer变体,里面搞了两个并联Attention(貌似跟InterGen也有点像),然后最后predict完整的双人Motion。
有Object的Motion Generation
只了解了一篇清华佬的Interactive Humanoid,方法有些复杂,暂时不知道咋说。
物理可行的Reactor Motion Generation
了解到一篇PhysReaction,大概是生成更容易跟踪的Motion,细节之后再看。