移动GPU上单目视频的实时人脸表面几何


前言

本文为翻译搬砖和总结一些自己的心得体会。


作者:
在这里插入图片描述
发布于2019年

摘要

我们提出了一种基于端到端神经网络的模型,用于从AR应用的单个相机输入推断人脸的近似3D网格表示。468个顶点的相对密集的网格模型非常适合基于人脸的AR效果。所提出的模型展示了移动GPU上的超实时推理速度(100–1000+FPS,取决于设备和模型变型)和高预测质量,与同一图像的手动注释的差异相媲美。

1. 介绍

通过对齐面部网格模板来预测面部几何形状的问题,也称为面部对齐或面部配准,长期以来一直是计算机视觉的基石。它通常以定位相对较少(通常为68个)的界标或关键点的方式提出。这些点要么有自己独特的语义,要么是在有意义的面部轮廓中意料之外的。我们请读者参考[4],了解有关2D和3D面部对齐问题的相关工作。

另一种方法是估计3D可变形模型(3DMM)的姿势、比例和参数[3]。3DMM,如BFM2017,巴塞尔人脸模型2017版[7],通常通过主成分分析获得。生成的网格通常具有更多的点(在BFM的情况下大约为50K),但可能的预测范围受到PCA基础所跨越的线性流形的限制,而PCA基础又由为模型捕获的一组人脸的多样性决定。作为一个具体的例子,BFM似乎无法准确地表示一张眼睛紧闭的脸。

我们提出了一个用神经网络估计三维网格顶点位置的问题,处理每个顶点作为一个独立的地标。网格拓扑由468个点组成,以固定四边形排列(见图2a)。这些点是根据假定的应用程序手动选择的,例如表现力增强现实效果、虚拟配饰和服装试穿和化妆。预期在人类感知中具有更高可变性和重要性的区域被分配了更高的点密度。它允许通过应用例如Catmull-Clark细分[6](图2b)来构建看似光滑的表面表示。
在这里插入图片描述

模型的输入是单个RGB相机的一帧(或更一般地说,一帧流),不需要深度传感器信息。模型输出的示例如图1所示。我们的设置目标是实时移动GPU推断,但我们也设计了较轻版本的模型,以解决缺乏适当GPU支持的移动设备上的CPU推断。我们将GPU目标模型称为“完整”模型,与实验中为CPU量身定制的“最轻”模型形成对比。
在这里插入图片描述

2. 图像处理流水线

我们将图像的处理组织如下:

  1. 摄像机输入的整个帧由一个非常轻的面部检测器[2]处理,该检测器产生面部边界矩形和几个界标(例如眼睛中心、耳垂和鼻尖)。界标用于旋转面部矩形以对齐连接线眼睛以矩形的水平轴为中心。
  2. 从原始图像中裁剪在前一步骤中获得的矩形并调整其大小,以便形成网格预测神经网络的输入(大小范围从完整模型中的256×256像素到最小模型中的128×128像素)。该模型生成3D地标坐标向量,随后将其映射回原始图像坐标系。不明显的标量网络输出(面部标志)产生了在提供的作物中确实存在合理对齐的面部的可能性。

我们采用了这样的策略,即顶点的x和y坐标对应于由图像像素坐标给出的2D平面中的点位置。z坐标被解释为相对于穿过网格质心的参考平面的深度。它们被重新缩放,以便在x坐标的跨度和z坐标的跨度之间保持固定的纵横比,即缩放到一半大小的面的深度范围(最近到最远)由同一乘数缩小。

当在面部跟踪模式下用于视频输入时,可以从前一帧预处理中获得良好的面部裁剪,并且面部检测器的使用是多余的。在这种情况下,它仅在第一帧和罕见的重新采集事件中使用(在面部标志预测的概率低于适当阈值之后)。

应该注意的是,在这种设置下,第二个网络接收输入,并将面合理地居中和对齐。我们认为,这可以节省一些模型代表能力,否则这些能力可能会用于处理大量轮换和翻译的案例。特别是,我们可以减少相关预兆的数量,同时提高预测质量。

3. 数据集、注释和培训

在我们的培训中,我们依赖于全球范围内大约30K的数据集,这些数据集来自各种传感器在不断变化的照明条件下。在训练期间,我们进一步使用标准裁剪和图像处理原语以及一些专门的原语来扩展数据集:建模相机传感器噪声[8],并将随机非线性参数变换应用于图像强度直方图(后者有助于模拟边缘光照条件)。

获取468个3D网格点的地面实况是一项劳动密集型且高度模糊的任务。我们使用以下迭代过程,而不是逐个手动注释点。

  1. 使用以下两种监督来源训练初始模型:
  • 3DMM在真实世界照片的面部矩形上的合成渲染(与实心背景相反,以避免过度拟合)。因此,从468个网格点和3DMM顶点子集之间的预定义对应关系可以立即获得地面真实顶点坐标。
  • 2D地标对应于网格顶点的一小部分,参与了一组语义巡视(见图3),在实际的“野外”数据集上进行了注释。地标被预测为专用网络分支末端的分离输出,目的是在2D和3D路径之间共享中间面表示。
    在训练了第一个模型之后,我们数据集中多达30%的图像具有适合于在后续步骤中进行细化的预测。
  1. 通过将最新的模型应用于图像,迭代细化自举的x和y坐标,筛选出适合这种细化的模型(即预测误差可容忍的情况)。通过半径可调的“笔刷”工具可以实现快速注释细化,可以一次移动整个范围的点。移动量随着网格边与鼠标光标下的枢轴顶点之间的距离呈指数递减。这允许注释器在局部细化之前用大的“笔划”调整大量的区域位移,同时保持网格表面的平滑度。我们注意到z坐标保持不变;他们唯一的监督来源是上述合成3D渲染。尽管深度预测因此在数学上不准确,但根据我们的经验,生成的网格在视觉上足够可信,例如,在面部上驱动逼真的3D纹理渲染,或对齐作为虚拟配件试穿体验一部分重新排序的3D对象。
    在这里插入图片描述

4. 模型体系结构

对于网格预测模型,我们使用自定义但相当简单的残差神经网络架构。我们在网络的早期层使用更积极的子采样,并将大部分计算用于其浅层部分。

因此,神经元的感受野相对较早地开始覆盖输入图像的大面积区域。当这样的接收场到达图像边界时,其在输入图像中的相对位置就隐式地可供模型依赖(由于卷积填充)。因此,较深层的神经元很可能在嘴相关和眼相关特征之间进行区分。

该模型能够完成轻微遮挡或穿过图像边界的面部。这使我们得出一个结论,即高维和低维网格表示是由仅在网络的最后几层中转换为坐标的模型构建的。

5. 视频时间一致性过滤

由于我们的模型在单帧级别上运行,因此在帧之间传递的唯一信息是旋转的面部边界矩形(以及是否应该使用面部检测器重新评估)。由于后续视频帧中人脸的像素级图像表示的不一致性(由于视图的小仿射变换、头部姿势变化、照明变化以及不同类型的相机传感器噪声[8]),这导致了人类明显的波动或时间抖动,在单个地标的轨迹中(尽管整个网格作为一个表面受到这种现象的影响较小)。

我们建议通过使用独立应用于每个预测地标坐标的一维时间滤波器来解决这个问题。由于我们提出的管道的主要应用是视觉吸引力的渲染,我们从人机交互方法中获得灵感,特别是1欧元过滤器[5]。1欧及相关滤波器的主要前提是,在噪声降低和相位滞后消除之间的权衡中,当参数基本不变时,人类更喜欢前者(即稳定),而当变化率较高时,人类则更喜欢后者(即避免滞后)。我们的过滤器为速度估计保持了几个时间戳样本的固定滚动窗口,速度估计由面部大小调整,以适应视频流中的面部比例变化。使用此过滤器可以在视频上生成具有吸引力的预测序列,而不会出现明显的抖动。

6.结果

我们使用了前视点和地面真实顶点位置之间的平均绝对距离(MAD),由眼间距离(IOD)归一化,定义为眼中心之间的距离(估计为眼角连接段的中点,以避免视线方向依赖)。该标准化旨在避免在面部比例中进行因子分解。由于z坐标完全是从合成监督中获得的,因此我们只报告了2D误差,但3D眼间距离用于解释可能的偏航头旋转。

为了量化问题的模糊性并获得度量的基线,我们给了任务,即向11个经过训练的注释器中的每一个注释一组58幅图像,并计算出同一图像的注释之间的IOD归一化平均绝对距离。估计IOD MAD误差为2.56%。

我们给出了1.7K幅图像的地理上双向评估集的评估结果。速度估计基于TensorFlow Lite GPU框架[1]。
在这里插入图片描述
本文描述的技术正在推动手机上的主要AR自我表达应用程序和AR开发者API。图4展示了它所支持的大量渲染效果的两个示例。
在这里插入图片描述


博主总结


论文原地址:https://arxiv.org/abs/1907.06724


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值