人脸特征点检测指南

人脸特征点检测器任务

借助 MediaPipe Face Landmarker 任务,您可以检测图片和视频中的人脸特征点和面部表情。您可以使用此任务来识别人脸表情、应用人脸滤镜和效果,以及创建虚拟头像。此任务使用可处理单张图片或连续图片流的机器学习 (ML) 模型。该任务会输出 3 维面部地标、融合变形得分(表示面部表情的系数),以实时推断详细的面部表面,并输出转换矩阵以执行效果渲染所需的转换。

试试看!

开始使用

按照目标平台的其中一个实现指南,开始使用此任务。以下特定于平台的指南将引导您完成此任务的基本实现,包括推荐的模型和包含推荐配置选项的代码示例:

任务详情

本部分介绍此任务的功能、输入、输出和配置选项。

功能

  • 输入图片处理 - 处理包括图片旋转、调整大小、归一化和颜色空间转换。
  • 得分阈值 - 根据预测得分过滤结果。
任务输入 任务输出
Face Landmarker 接受以下数据类型之一的输入:
  • 静态图片
  • 解码后的视频帧
  • 实时视频画面
人脸地标检测器会输出以下结果:
  • 每个检测到的人脸的完整人脸网格,其中包含表示面部表情的融合变形分数和面部特征点的坐标。
  • 面部混合形状和面部转换矩阵

配置选项

此任务具有以下配置选项:

选项名称 说明 值范围 默认值
running_mode 设置任务的运行模式。共有三种模式:

IMAGE:用于单张图片输入的模式。

VIDEO:视频解码帧的模式。

LIVE_STREAM:用于直播输入数据(例如来自摄像头的数据)的模式。在此模式下,必须调用 resultListener 来设置监听器以异步接收结果。
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
num_faces FaceLandmarker 可检测到的人脸数量上限。仅当 num_faces 设置为 1 时,才会应用平滑处理。 Integer > 0 1
min_face_detection_confidence 人脸检测被视为成功所需的最低置信度得分。 Float [0.0,1.0] 0.5
min_face_presence_confidence 人脸标志检测中人脸存在置信度分数的最低值。 Float [0.0,1.0] 0.5
min_tracking_confidence 人脸跟踪被视为成功所需的最低置信度得分。 Float [0.0,1.0] 0.5
output_face_blendshapes 人脸标记器是否输出人脸融合变形。 面部混合形状用于渲染 3D 面部模型。 Boolean False
output_facial_transformation_matrixes FaceLandmarker 是否输出面部转换矩阵。FaceLandmarker 使用该矩阵将人脸标志从规范人脸模型转换为检测到的人脸,以便用户在检测到的标志上应用效果。 Boolean False
result_callback 设置结果监听器,以便在 FaceLandmarker 处于直播模式时异步接收地标检测器结果。 只能在运行模式设置为 LIVE_STREAM 时使用 ResultListener N/A

模型

Face Landmarker 使用一系列模型来预测面部标志。 第一个模型检测人脸,第二个模型定位检测到的人脸上的特征点,第三个模型使用这些特征点来识别面部特征和表情。

以下模型打包在一起,形成一个可下载的模型软件包:

  • 人脸检测模型:检测人脸是否存在,并提供一些关键的面部地标。
  • 面部网格模型:添加完整的面部映射。该模型会输出 478 个 3 维面部特征点的估计值。
  • 混合形状预测模型:接收面部网格模型的输出,预测 52 个混合形状得分,这些得分是表示面部不同表情的系数。

人脸检测模型是 BlazeFace 短程模型,这是一种轻量级且准确的人脸检测器,针对移动 GPU 推理进行了优化。如需了解详情,请参阅人脸检测器任务。

下图显示了模型软件包输出中面部地标的完整映射。

人脸特征点检测器关键点

如需更详细地查看面部地标,请参阅全尺寸图片

模型包 输入形状 数据类型 模型卡片 版本
FaceLandmarker FaceDetector:192 x 192
FaceMesh-V2:256 x 256
Blendshape:1 x 146 x 2
float 16 FaceDetector
FaceMesh-V2
Blendshape
最新