现在的motion transfer主要分为两种流派:

  1. model-based:需要一个预训练的第三方模型,好处是把keypoints的识别和后续的形变独立开来,保证kp识别的正确。但是最大的问题就在于需要有这个模型,像人脸、人体等模型挺常见,但是推广到其他物体或动物可能就找不到对应的模型。
  2. model-free:把识别kp当作训练的一部分,这样的好处当然就是适用于多种场景,但是也存在kp容易识别错误的问题。

这篇paper是在出名的model-free模型,First Order Motion Model上进行的改进,在其中引入了Deformable Part Model。DPM的思想大概是把人体检测的工作分为身体各个部分的检测,然后根据root的位置把它们对应关联到一起。这篇paper把FOMM的kp检测中加入了DPM,来让kp的生成更加符合逻辑。

FOMM中出现的kp错误问题

如图,FOMM中时常存在kp检测错误(红、蓝框)的问题,这样的错误直接导致了动作估计的错误,使得生成效果出错。

DAM Pipeline

作者在训练的时候引入了DPM,先计算出了一些root anchor zrdz_r^d ,然后通过这些root的运动以及root与其控制的kp之间的运动计算出每一个kp zkdz_k^d 的运动:

Tr(zkd)=Tr(zrd)+θr(zkdzrd)T_r(z_k^d) = T_r(z_r^d) + \theta_r(z_k^d-z_r^d)

与此同时,作者也保留了原本FOMM的检测方法,将通过原本方法直接检测出的运动记为 TkT_k ,可以将其与 TrT_r 一同计算loss:

Lkr=Tk(zkd)Tr(zkd)2L_{k \gets r} = \|T_k(z_k^d) - T_r(z_k^d)\|_2

需要注意的是这些root anchor以及涉及的计算只存在于训练过程中,用来优化模型,在实际检测的时候还是直接用FOMM的那一套方法。

作者还提出如果还觉得这不够的话你可以再在root anchor和其余kp之间再加一层检测……