标题:Sparse to Dense Dynamic 3D Facial Expression Generation
链接:https://arxiv.org/pdf/2105.07463
本文主要做的是基于人脸网格的表情动画合成。思路是先用一个conditional GAN来学习基于landmark的动画序列,然后将landmark序列输入解码器还原为稠密的人脸网格动画。作者做这篇文章的灵感是来源于“每个人在做表情时的肌肉运动是一致的”,因此作者试图学习出一套通用的运动模板,然后套用到每个个体身上,进而让每个人在面部特征不变的情况下产生表情动画。
特色主要在于对landmark的动画序列使用了基于SRVF的轨迹表示(这个其实是借鉴MotionGAN的,这里作者只是把他从2D改成了3D),和对landmark解码时loss的设计。
模型结构
Motion 3D GAN
这是模型的第一部分,输入一个情绪标签和噪声,要求模型输出一个landmark序列。因为在连续运动过程中,每个点在空间中都可以视作是画了一条曲线,因此我们可以直接用一个方程来拟合这个曲线,因此作者就选择了Square-Root Velocity Function(SRVF)来对这个landmark轨迹建模,建模出的轨迹可以很简单的还原回我们想要的landmark序列。
Sparse to dense decoder(S2D-Dec)
为了将离散的landmark序列还原为稠密的网格序列,作者这里考虑的是直接模拟网格的形变,即预测人脸网格每一帧之间的位移图。这样在我们知道中性脸(neutral mesh)的时候就可以通过将位移图加上去进而产生动画了。
损失函数
本文提出的两个模型是分别训练的,因此都有自己的一套损失。另外,文中合成的每个量都有ground truth,因此全部都可以做重建损失。
首先,针对Motion 3D GAN的部分有:1. 对抗损失(判断轨迹是否真实)2.重建损失(合成轨迹和真实轨迹做差)3.梯度惩罚(防止模式崩溃)
针对S2D-Dec的部分有:1.位移图损失(真实与合成值做差)2.网格损失(使用位移图后的网格与真实网格做差)+landmark距离权重(因为作者发现距离landmark越近的地方形变越大,越远的地方往往越不会有形变,比如额头。因此对所有顶点都计算了一个与landmark距离相关的权重)