Face Mesh,采用机器学习,打造人脸3D表面动态轮廓
MediaPipe Face Mesh是一种脸部几何解决方案,即使在移动设备上,也可以实时估计468个3D脸部界标。它采用机器学习(ML)来推断3D表面几何形状,只需要单个摄像机输入,而无需专用的深度传感器。该解决方案利用轻量级的模型架构以及整个管线中的GPU加速,可提供对实时体验至关重要的实时性能。
此外,该解决方案与”人脸几何”模块捆绑在一起,该模块弥合了人脸界标估计与有用的实时增强现实(AR)应用程序之间的差距。它建立了一个公制3D空间,并使用人脸界标屏幕位置来估计该空间内的人脸几何形状。面部几何数据由常见的3D几何图元组成,其中包括面部姿势转换矩阵和三角形面部网格。在后台,采用了一种称为的轻量级统计分析方法来驱动健壮,高性能和可移植的逻辑。该分析在CPU上运行,并且在ML模型推断的基础上具有最小的速度/内存占用量。
MediaPipe Face Mesh
在统计中,Procrustes分析是一种形式,用于分析一组的分布。
在数学中:
· 一个正交普鲁克问题是可被用来找出最佳的方法旋转和/或反射的对象的叠加普鲁克(PS)(即,最佳的正交线性变换)相对于另一个。
· 受制于(R)= 1(其中R是旋转矩阵)的受约束正交Procrustes问题是一种可用于确定对象PS相对于另一个PS的最佳旋转的方法(不允许反射) )。在某些情况下,此方法称为。
当将一个形状与另一个形状进行比较,或者将一组形状与任意选择的参考形状进行比较时,有时Procrustes分析可以进一步被归类为经典或普通,而不是将三个或更多个形状进行比较的(GPA)最佳确定的”平均形状”。
为了比较两个或多个对象的形状,必须首先将对象最佳地”叠加”。通过优化平移,和对象来执行Procrustes叠加(PS)。换句话说,可以自由调整空间的和对象的大小。目的是通过最小化形状差异的度量(称为对象之间的Procrustes距离)来获得相似的放置和尺寸。与不执行缩放(即保留对象的大小)的部分PS相反,有时将其称为full。请注意,在完整PS后,如果它们的对象完全重合,形状是相同的。例如,对于全PS,两个半径不同的球将始终重合,因为它们的形状完全相同。相反,使用部分PS,它们将永远不会重合。这意味着,由长期的严格定义形状的,形状分析,应充分利用PS进行。基于局部PS的统计分析不是纯粹的形状分析,因为它不仅对形状差异敏感,而且对尺寸差异敏感。完全和部分PS都将永远无法完美匹配形状不同的两个对象,例如立方体和球体,或者右手和左手。
在某些情况下,全部PS和部分PS都可能包含反射。例如,反射允许右手到左手的成功(可能是完美的)叠加。因此,启用反射的部分PS保留大小,但允许平移,旋转和反射,而启用反射的完整PS允许平移,旋转,缩放和反射。
MediaPipe Face Mesh
ML管道
ML管道包含两个可协同工作的实时深度神经网络模型:一个在完整图像上运行并计算面部位置的检测器,以及一个在这些位置上运行并通过回归预测近似表面几何形状的3D面部界标模型。正确裁剪面部可以大大减少对常见数据增强的需求,例如由旋转,平移和缩放变化组成的仿射变换。相反,它允许网络将其大部分容量专用于坐标预测精度。另外,在我们的管道中,也可以基于前一帧中识别出的人脸标志生成作物,只有当地标模型不再能够识别人脸存在时,才调用人脸检测器来重新定位人脸。解决方案,它使用手掌检测器和手界标模型。
该管道被实现为MediaPipe图形,该使用来自人的人,并使用专用的人。在内部使用一个从面部检测模块。
人脸地标模型
对于3D人脸地标,我们采用转移学习并训练了具有以下目标的网络:该网络同时预测合成渲染数据上的3D标志地标坐标和带注释的实际数据上的2D语义轮廓。由此产生的网络为我们提供了合理的3D地标预测,不仅包括合成数据,还包括真实数据。
3D地标网络无需额外的深度输入即可接收裁剪后的视频帧作为输入。该模型输出3D点的位置,以及在输入中出现人脸并合理对齐的可能性。一种常见的替代方法是为每个地标预测2D热图,但这种方法不适合进行深度预测,并且对许多点都具有很高的计算成本。通过迭代自举和优化预测,我们进一步提高了模型的准确性和鲁棒性。
MediaPipe Face Mesh
面几何模块
人在屏幕坐标空间中执行单相机人脸标志检测:X和Y坐标是归一化的屏幕坐标,而Z坐标是相对的并在下按X坐标缩放。这种格式非常适合某些应用程序,但是它不能直接启用全部增强现实(AR)功能,例如将虚拟3D对象与检测到的面部对齐。
的远离屏幕移动坐标空间朝向度量三维空间,并提供必要的原语以处理检测到的面部作为常规3D对象。通过设计,您将能够使用透视相机将最终的3D场景投影回屏幕坐标空间,并确保不更改面部界标位置。
公制3D空间
在”面几何”模块中建立的度量3D空间是惯用右手的正交度量3D坐标空间。在空间内,有一个虚拟透视相机位于空间原点,指向Z轴的负方向。在当前管道中,假定正好通过此虚拟摄像机观察到输入的摄像机帧,因此,以后将使用其参数将屏幕界标坐标转换回Metric 3D空间。该虚拟摄像机的参数可以自由设置,但它建议将它们设置为接近于更好的效果真实的物理相机参数成为可能。
MediaPipe Face Mesh
规范脸模型
的典型面模型是人脸,它遵循的468三维面部界标拓扑的静态3D模型。该模型具有两个重要功能:
· 定义度量单位:规范人脸模型的比例定义了Metric 3D空间的度量单位。使用的度量单位是厘米。
· 桥接静态空间和运行时空间:脸部姿势转换矩阵-实际上是从规范化的脸部模型到每个帧上估计的运行时脸部界标集的线性映射。这样,可以通过对人脸姿势变换矩阵进行应用,将围绕规范人脸模型建模的虚拟3D资产与被跟踪人脸对齐。
组件
几何管道的几何流水线是一个关键组成部分,它负责度量3D空间内估计面部几何图形的对象。在每个框架上,以给定的顺序执行以下步骤:
· 脸部界标屏幕坐标转换为Metric 3D空间坐标;
· 面部姿势变换矩阵估计为从规范的面部度量界标集到运行时面部度量界标集的刚性线性映射,其方式是使两者之间的差异最小。
· 使用运行时面部度量界标作为顶点位置(XYZ)创建面部网格,而顶点纹理坐标(UV)和三角形拓扑都从规范的面部模型继承。
几何管道实现为MediaPipe计算器。为了方便起见,将面几何流水线计算器与面界标模块捆绑在一起,成为统一的MediaPipe。人脸几何格式定义为协议缓冲区。
MediaPipe Face Mesh
效果渲染器
影像呈现器是一个组件,其作用是面部效果渲染器的工作示例。它针对OpenGL ES 2.0 API,以在移动设备上实现实时性能,并支持以下渲染模式:
- · 3D对象渲染模式:将虚拟对象与检测到的脸部对齐以模拟附着到该脸部的对象(例如:眼镜);
- · 面部网格渲染模式:将纹理拉伸到面部网格表面的顶部,以模仿面部绘画技术。
在两种渲染模式下,首先将面部网格作为遮挡物直接渲染到深度缓冲区中。此步骤通过将不可见元素隐藏在脸部表面后,有助于创建更可信的效果。
https://m.toutiao.com/is/iLjn9d26/ 人工智能研究所: 视频动画详解Transformer模型–Attention is all you need.