虚拟角色的实时面部动画


在本文中,我们将介绍一种基于深度学习的框架,用于从视频中回归面部动画控制参数。该框架不仅解决了上述挑战,还为我们开辟了诸多未来机遇。本文所述的框架也在 SIGGRAPH 2021 大会上作为演讲内容进行了展示。
面部动画
控制和动画化3D面部骨骼(3D face-rig)有多种方案。我们采用的是面部动作编码系统(FACS),该系统定义了一组基于面部肌肉位置的控制参数,用于变形3D面部网格。 尽管FACS已有40余年历史,但因其控制方式直观且易于在不同骨骼系统间移植,至今仍是业界事实上的标准。下图展示了FACS骨骼系统的运作示例。

方法
我们的构想是,基于深度学习的方法以视频作为输入,并为每个帧输出一个FACS结果集。为实现这一目标,我们采用两阶段架构:人脸检测和FACS回归。

人脸检测
为了获得最佳性能,我们实现了一个相对知名的MTCNN人脸检测算法的快速变体。 原始的 MTCNN 算法虽然准确且快速,但速度仍不足以支持用户所用的大多数设备进行实时人脸检测。因此,为解决这一问题,我们针对具体应用场景对算法进行了调整:一旦检测到人脸,我们的 MTCNN 实现仅在后续帧中运行最终的 O-Net 阶段,从而实现了平均 10 倍的加速。 此外,我们在后续回归阶段开始前,利用MTCNN预测的面部特征点(眼、鼻及嘴角位置)对人脸边界框进行对齐。这种对齐方式能实现对输入图像的精确裁剪,从而减少FACS回归网络的计算量。

FACS 回归
我们的FACS回归架构采用多任务设置,利用共享的骨干网络(即编码器)作为特征提取器,对面部特征点和FACS权重进行联合训练。
这种架构使我们能够利用捕捉面部表情细微变化的真实图像,来增强从合成动画序列中学习到的FACS权重。 与解剖标志回归器协同训练的FACS回归子网络采用了因果卷积;与编码器中仅作用于空间特征的卷积不同,这些卷积作用于随时间变化的特征。这使得模型能够学习面部动画的时间维度,并降低其对抖动等不一致现象的敏感度。

训练
我们最初仅使用真实和合成图像对模型进行特征点回归训练。经过一定数量的迭代后,我们开始加入合成序列,以学习时间性FACS回归子网络的权重。这些合成动画序列由我们的跨学科艺术家和工程师团队共同制作。 我们的艺术家搭建了一个适用于所有不同身份(面部网格)的标准化骨骼系统,该系统通过包含FACS权重的动画文件自动驱动并渲染。这些动画文件是利用经典计算机视觉算法处理面部体操视频序列生成的,并辅以手动绘制的动画序列,以补充体操视频中缺失的极端面部表情。
损失函数
为了训练我们的深度学习网络,我们线性组合了几个不同的损失项来回归特征点和FACS权重:
- 位置损失。针对面部特征点,采用回归位置的均方根误差(Llmks);针对FACS权重,采用均方误差(Lfacs)。
- 时序损失。针对FACS权重,我们利用合成动画序列上的时序损失来减少抖动。 受 [Cudeiro et al. 2019] 启发的速度损失 (Lv) 是目标速度与预测速度之间的均方误差。它有助于提升动态表情的整体平滑度。此外,还添加了针对加速度的正则化项 (Lacc) 以减少 FACS 权重的抖动(其权重保持较低以保留响应性)。
- 一致性损失。我们参照[Honari et al. 2018]的做法,利用无标注的真实图像构建无监督一致性损失(Lc)。这促使特征点预测在不同图像变换下保持等变性,从而在无需为部分训练图像提供特征点标签的情况下,提升帧间特征点位置的一致性。
性能
为了在不降低准确率或增加抖动的情况下提升编码器的性能,我们有选择地使用无填充卷积来缩小特征图尺寸。这使我们比使用步长卷积更能控制特征图的尺寸。为了保持残差,我们在将特征图添加到无填充卷积的输出之前对其进行切片。 此外,我们将特征图的深度设置为8的倍数,以配合AVX和Neon FP16等向量指令集实现高效内存利用,从而使性能提升了1.5倍。
最终模型拥有110万个参数,执行时需要2810万次乘积累加运算。作为参考,基础版Mobilenet V2(我们的架构基于此)执行时需要3亿次乘积累加运算。 我们采用 NCNN 框架进行设备端模型推理,下表列出了单线程处理单帧视频(含人脸检测)的执行时间。请注意,16 毫秒的执行时间可支持每秒处理 60 帧(FPS)。

下一步
我们的合成数据管道使我们能够迭代提升训练模型的表达能力和鲁棒性。我们添加了合成序列以增强对遗漏表情的响应能力,并实现了不同面部身份间的训练平衡。得益于架构与损失函数的时间化设计、精心优化的骨干网络,以及来自合成数据的无误真值,我们仅需极少的计算量即可生成高质量的动画。 FACS权重子网络中实施的时间滤波,使我们能够在不增加抖动的情况下减少骨干网络中层的数量和规模。无监督一致性损失使我们能够利用大量真实数据进行训练,从而提升了模型的泛化能力和鲁棒性。我们将继续致力于进一步优化和改进模型,以获得表现力更强、无抖动且更鲁棒的结果。
如果您有兴趣在实时人脸追踪和机器学习的前沿领域从事类似的挑战性工作,欢迎查看我们团队的招聘职位。


