人脸特征点检测指南

人脸特征点任务

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

试试吧!

开始使用

如需开始使用此任务,请遵循目标平台的实现指南之一。这些平台专用指南将引导您完成此任务的基本实现,包括推荐的模型和包含推荐配置选项的代码示例:

任务详情

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

特性

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

配置选项

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

选项名称 说明 值范围 默认值
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 FaceMarkerer 是否输出面部转换矩阵。FaceMarkerer 使用矩阵将人脸特征点从规范脸部模型转换为检测到的人脸,以便用户可以对检测到的特征点应用效果。 Boolean False
result_callback 设置结果监听器,以在 FaceMarkerer 处于直播模式时异步接收地标结果。 只能在跑步模式设为“LIVE_STREAM”时使用 ResultListener N/A

模型

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

以下模型打包成一个可下载的模型软件包:

  • 人脸检测模型:检测是否存在具有一些关键面部特征的人脸。
  • 人脸网格模型:添加人脸的完整映射。模型会输出 478 个三维人脸特征点的估计值。
  • Blendshape 预测模型:接收人脸网格模型的输出,并预测 52 个融合变形分数,这些分数是代表不同面部表情的系数。

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

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

人脸特征点要点

如需查看人脸特征点的详细视图,请参阅完整尺寸的图片

模型包 输入形状 数据类型 模型卡片 Versions
FaceMarkerer FaceDetector:192 x 192
FaceMesh-V2:256 x 256
混合形状:1 x 146 x 2
浮点数 16 FaceDetector
FaceMesh-V2
Blendshape
最新动态