人脸检测指南

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

试试吧!

开始使用

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

任务详情

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

特性

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

配置选项

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

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

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

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

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) 卷积网络技术与自定义编码器结合使用。如需了解详情,请参阅关于单样本多框检测器的研究论文。

模型名称 输入形状 量化类型 模型卡片 Versions
BlazeFace(短程) 128 x 128 浮点数 16 信息 最新动态

BlazeFace(全范围)

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

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

BlazeFace 稀疏(全范围)

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

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

任务基准

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

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