人脸检测指南

三名人的脸部用边界框突出显示

借助 MediaPipe 人脸检测器任务,您可以检测图片或视频中的人脸。您可以使用此任务在画面中定位人脸和面部特征。此任务使用可处理单张图片或连续图片流的机器学习 (ML) 模型。该任务会输出脸部位置以及以下面部关键点:左眼、右眼、鼻尖、嘴巴、左眼屏点和右眼屏点。

试试吧!

开始使用

如需开始使用此任务,请按照适用于目标平台的以下任一实现指南操作。以下平台专用指南将引导您完成此任务的基本实现,包括推荐的模型,以及包含推荐配置选项的代码示例:

任务详情

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

功能

  • 输入图片处理 - 处理包括图片旋转、调整大小、归一化和颜色空间转换。
  • 得分阈值 - 根据预测得分过滤结果。
任务输入 任务输出
人脸检测器接受以下任一数据类型的输入:
  • 静态图片
  • 解码后的视频帧
  • 实时视频画面
人脸检测器会输出以下结果:
  • 图片帧中检测到的人脸的边界框。
  • 每个检测到的人脸的 6 个面部地标的坐标。

配置选项

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

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

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

视频:视频的解码帧的模式。

LIVE_STREAM:输入数据(例如来自摄像头)的直播模式。在此模式下,必须调用 resultListener 以设置监听器以异步接收结果。
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
min_detection_confidence 人脸检测被视为成功所需的最低置信度得分。 Float [0,1] 0.5
min_suppression_threshold 人脸检测被视为重叠的最小非最大抑制阈值。 Float [0,1] 0.3
result_callback 设置结果监听器,以便在人脸检测器处于实时流模式时异步接收检测结果。仅当运行模式设置为 LIVE_STREAM 时才能使用。 N/A Not set

模型

面部检测模型可能会因预期用例而异,例如短距离和长距离检测。模型通常还需要在性能、准确性、分辨率和资源要求之间进行权衡,在某些情况下,还需要包含额外的功能。

本部分列出的模型是 BlazeFace 的变体,BlazeFace 是一种轻量级且准确的面部检测器,专为移动 GPU 推理进行了优化。BlazeFace 模型适用于 3D 面部关键点估算、表情分类和人脸区域分割等应用。BlazeFace 使用与 MobileNetV1/V2 类似的轻量特征提取网络。

BlazeFace(短距离)

这是一个轻量级模型,用于检测智能手机摄像头或摄像头拍摄的自拍照类图片中的单人或多人脸。该模型针对近距离的前置手机摄像头图片进行了优化。该模型架构使用了结合自定义编码器的单次检测器 (SSD) 卷积网络技术。如需了解详情,请参阅有关单次射击多盒检测器的研究论文。

模型名称 输入形状 量化类型 模型卡片 版本
BlazeFace(短距离) 128 x 128 float 16 信息 最新

BlazeFace(全范围)

这是一个相对轻量级的模型,用于检测智能手机摄像头或摄像头拍摄的图片中的单个或多个人脸。该模型针对全范围图片(例如使用手机后置摄像头拍摄的图片)进行了优化。该模型架构使用与 CenterNet 卷积网络类似的技术,并采用自定义编码器。

模型名称 输入形状 量化类型 模型卡片 版本
BlazeFace(全范围) 128 x 128 float 16 信息 即将发布

BlazeFace 稀疏(全范围)

常规全范围 BlazeFace 模型的较轻版本,大小缩减了约 60%。该模型针对全范围图片进行了优化,例如使用手机后置摄像头拍摄的图片。该模型架构使用了一种类似于 CenterNet 卷积网络的技术,并采用了自定义编码器。

模型名称 输入形状 量化类型 模型卡片 版本
BlazeFace 稀疏(全范围) 128 x 128 float 16 信息 即将发布

任务基准

下面是基于上述预训练模型的整个流水线的任务基准。延迟时间结果是使用 CPU / GPU 在 Pixel 6 上的平均延迟时间。

模型名称 CPU 延迟时间 GPU 延迟时间
BlazeFace(短距离) 2.94 毫秒 7.41 毫秒