借助 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 |
最新动态 |