借助 MediaPipe Face Detector 任务,您可以检测图片或视频中的人脸。您可以使用此任务来定位帧内的人脸和面部特征。此任务使用可处理单张图片或连续图片流的机器学习 (ML) 模型。该任务会输出人脸位置,以及以下面部关键点:左眼、右眼、鼻尖、嘴巴、左眼耳屏点和右眼耳屏点。
开始使用
请按照以下针对目标平台的实现指南之一,开始使用此任务。以下特定于平台的指南将引导您完成此任务的基本实现,包括推荐的模型和包含推荐配置选项的代码示例:
任务详情
本部分介绍此任务的功能、输入、输出和配置选项。
功能
- 输入图片处理 - 处理包括图片旋转、调整大小、归一化和色彩空间转换。
- 得分阈值 - 根据预测得分过滤结果。
| 任务输入 | 任务输出 |
|---|---|
人脸检测器接受以下数据类型之一的输入:
|
人脸检测器会输出以下结果:
|
配置选项
此任务具有以下配置选项:
| 选项名称 | 说明 | 值范围 | 默认值 |
|---|---|---|---|
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) 卷积网络技术。如需了解详情,请参阅有关 Single Shot MultiBox Detector 的研究论文。
| 模型名称 | 输入形状 | 量化类型 | 模型卡片 | 版本 |
|---|---|---|---|---|
| BlazeFace(短距离) | 128 x 128 | float 16 | 信息 | 最新 |
BlazeFace(全范围)
一种相对轻量级的模型,用于检测智能手机摄像头或网络摄像头拍摄的图像中的单张或多张人脸。该模型针对全范围图像(例如使用手机后置摄像头拍摄的图像)进行了优化。模型架构采用类似于 CenterNet 卷积网络(具有自定义编码器)的技术。
| 模型名称 | 输入形状 | 量化类型 | 模型卡片 | 版本 |
|---|---|---|---|---|
| BlazeFace(全范围) | 128 x 128 | float 16 | 信息 | 最新 |
BlazeFace Sparse(全范围)
常规全范围 BlazeFace 模型的轻量版,尺寸大约小 60%。该模型针对全范围图像进行了优化,例如使用手机后置摄像头拍摄的图像。模型架构采用类似于 CenterNet 卷积网络(具有自定义编码器)的技术。
| 模型名称 | 输入形状 | 量化类型 | 模型卡片 | 版本 |
|---|---|---|---|---|
| BlazeFace Sparse(全范围) | 128 x 128 | float 16 | 信息 | 最新 |
任务基准
以下是基于上述预训练模型的整个流水线的任务基准。延迟时间结果是 Pixel 6 使用 CPU / GPU 时的平均延迟时间。
| 模型名称 | CPU 延迟时间 | GPU 延迟时间 |
|---|---|---|
| BlazeFace(短距离) | 2.94 毫秒 | 7.41 毫秒 |