头像的实时面部动画 PlatoBlockchain 数据智能。垂直搜索。人工智能。

头像的实时面部动画

面部表情是 Roblox 通过自然和可信的化身交互使元宇宙成为人们日常生活的一部分的关键一步。 然而,实时制作虚拟 3D 角色面部动画是一项巨大的技术挑战。 尽管取得了许多研究突破,但实时面部动画应用的商业示例仍然有限。 这在 Roblox 尤其具有挑战性,我们支持一系列令人眼花缭乱的用户设备、真实世界条件以及来自我们开发人员的极具创意的用例。

头像的实时面部动画 PlatoBlockchain 数据智能。垂直搜索。人工智能。

头像的实时面部动画 PlatoBlockchain 数据智能。垂直搜索。人工智能。

在这篇文章中,我们将描述一个深度学习框架,用于从视频中回归面部动画控制,它既解决了这些挑战,又为我们打开了许多未来的机会。 这篇博文中描述的框架也被呈现为 at SIGGRAPH 2021.

面部动画

有多种选项可以控制和设置 3D 面部绑定的动画。 我们使用的称为面部动作编码系统或 FACS,它定义了一组控件(基于面部肌肉位置)来变形 3D 面部网格。 尽管已有 40 多年的历史,但 FACS 仍然是事实上的标准,因为 FACS 控件直观且易于在钻机之间转移。 下面可以看到正在运行的 FACS 钻机的示例。

头像的实时面部动画 PlatoBlockchain 数据智能。垂直搜索。人工智能。

付款方式

我们的想法是让我们基于深度学习的方法将视频作为输入,并为每一帧输出一组 FACS。 为了实现这一点,我们使用了两阶段架构:人脸检测和 FACS 回归。

头像的实时面部动画 PlatoBlockchain 数据智能。垂直搜索。人工智能。

人脸检测

为了获得最佳性能,我们实现了相对知名的 MTCNN 人脸检测算法的快速变体。 原始的 MTCNN 算法非常准确和快速,但速度不够快,无法在我们用户使用的许多设备上支持实时人脸检测。 因此,为了解决这个问题,我们针对特定用例调整了算法,一旦检测到人脸,我们的 MTCNN 实现只在连续帧中运行最终的 O-Net 阶段,从而平均加速 10 倍。 我们还使用 MTCNN 预测的面部标志(眼睛、鼻子和嘴角的位置)在随后的回归阶段之前对齐面部边界框。 这种对齐允许对输入图像进行严格裁剪,从而减少 FACS 回归网络的计算。

头像的实时面部动画 PlatoBlockchain 数据智能。垂直搜索。人工智能。

FACS 回归 

我们的 FACS 回归架构使用多任务设置,该设置使用共享主干(称为编码器)作为特征提取器来共同训练地标和 FACS 权重。

这种设置允许我们使用捕捉面部表情细微差别的真实图像来增强从合成动画序列中学习到的 FACS 权重。 与地标回归器一起训练的 FACS 回归子网络使用 因果卷积; 这些卷积随着时间的推移对特征进行操作,而不是仅对编码器中的空间特征进行操作的卷积。 这允许模型学习面部动画的时间方面,并使其对抖动等不一致性不太敏感。

头像的实时面部动画 PlatoBlockchain 数据智能。垂直搜索。人工智能。

产品培训

我们最初使用真实图像和合成图像训练模型仅用于地标回归。 经过一定数量的步骤后,我们开始添加合成序列来学习时间 FACS 回归子网络的权重。 合成动画序列由我们的跨学科艺术家和工程师团队创建。 用于所有不同身份(面部网格)的标准化装备由我们的艺术家设置,使用包含 FACS 权重的动画文件自动执行和渲染。 这些动画文件是使用在面部健美操视频序列上运行的经典计算机视觉算法生成的,并辅以手工动画序列,以处理健美操视频中缺少的极端面部表情。 

损失

为了训练我们的深度学习网络,我们线性组合了几个不同的损失项来回归地标和 FACS 权重: 

  • 位置损失。 对于地标,回归位置的 RMSE (L点点滴滴 ),对于 FACS 权重,MSE (L事实 ). 
  • 时间损失。 对于 FACS 权重,我们使用合成动画序列的时间损失来减少抖动。 速度损失(Lv ) 灵感来自 [库代罗等人。 2019] 是目标速度和预测速度之间的 MSE。 它鼓励动态表达的整体平滑度。 此外,加速度的正则化项(LACC ) 被添加以减少 FACS 权重抖动(其权重保持较低以保持响应性)。 
  • 一致性损失。 我们在无监督的一致性损失中使用没有注释的真实图像(Lc ), 相似 [霍纳里等人。 2018]。 这鼓励地标预测在不同的图像变换下是等变的,提高了帧之间的地标位置一致性,而不需要训练图像子集的地标标签。

性能

为了在不降低精度或增加抖动的情况下提高编码器的性能,我们选择性地使用未填充的卷积来减小特征图大小。 与跨步卷积相比,这使我们能够更好地控制特征图大小。 为了保持残差,我们在将特征图添加到未填充卷积的输出之前对其进行切片。 此外,我们将特征映射的深度设置为 8 的倍数,以便与 AVX 和 Neon FP16 等矢量指令集有效地使用内存,从而实现 1.5 倍的性能提升。

我们的最终模型有 1.1 万个参数,需要 28.1 万次乘法累加才能执行。 供参考,香草 移动网络V2 (我们的架构所基于)需要 300 亿次乘法累加才能执行。 我们使用 神经网络 下表列出了设备端模型推理框架和一帧视频的单线程执行时间(包括人脸检测)。 请注意,16 毫秒的执行时间将支持每秒处理 60 帧 (FPS)。 

头像的实时面部动画 PlatoBlockchain 数据智能。垂直搜索。人工智能。

下一步是什么

我们的合成数据管道使我们能够迭代地提高训练模型的表现力和鲁棒性。 我们添加了合成序列以提高对遗漏表情的响应能力,并平衡了不同面部身份的训练。 由于我们的架构和损失的时间公式、精心优化的主干以及来自合成数据的无错误地面实况,我们以最少的计算实现了高质量的动画。 在 FACS 权重子网络中执行的时间过滤使我们能够减少骨干网中层的数量和大小,而不会增加抖动。 无监督的一致性损失让我们可以使用大量真实数据进行训练,从而提高模型的泛化性和鲁棒性。 我们将继续努力进一步完善和改进我们的模型,以获得更具表现力、无抖动和稳健的结果。 

如果您有兴趣在实时面部跟踪和机器学习的前沿应对类似挑战,请查看我们的一些 公开仓位 与我们的团队。

该职位 头像的实时面部动画 最早出现 Roblox博客.

时间戳记:

更多来自 Roblox