你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

指定人脸检测模型

本指南介绍如何为 Azure AI 人脸服务指定人脸检测模型。

人脸服务使用机器学习模型对图像中的人脸执行运算。 我们将会根据客户反馈以及研究成果不断改进模型的准确度,并作为模型更新交付改进结果。 开发人员可以选择指定想要使用的人脸检测模型版本;他们可以选择最适合其用例的模型。

请继续了解如何在特定的人脸操作中指定人脸检测模型。 每当人脸服务将人脸图像转换为其他某种形式的数据时,就会使用人脸检测。

如果你不确定是否要切换到最新的模型,请跳转到评估不同的模型部分来评估新模型,并使用当前数据集比较结果。

必备条件

你应该熟悉 AI 人脸检测的概念。 如果你不熟悉,请参阅人脸检测的概念指南或操作指南:

评估不同的模型

不同的人脸检测模型已针对不同的任务进行优化。 有关差异概述,请参阅下表。

模型 说明 性能说明 属性 特征点
detection_01 所有人脸检测操作的默认选项。 未针对小尺寸人脸、侧视人脸或模糊人脸进行优化。 如果在检测调用中指定了主要的人脸属性(头部姿势、年龄、表情,等等),则返回这些属性。 如果在检测调用中指定了人脸特征点,则返回这些特征点。
detection_02 已于 2019 年 5 月发布,可以选择性地在所有人脸检测操作中使用。 已针对小尺寸人脸、侧视人脸或模糊人脸提高了准确度。 不返回人脸属性。 不返回人脸特征点。
detection_03 已于 2021 年 2 月发布,可以选择性地在所有人脸检测操作中使用。 进一步提升了准确度,包括针对人脸较小(64x64 像素)和人脸方向发生了转动等情况。 如果在检测调用中指定了面罩和头部姿势属性,则返回这些属性。 如果在检测调用中指定了人脸特征点,则返回这些特征点。

比较检测模型性能的最佳方式是针对示例数据集使用这些模型。 我们建议使用每个检测模型针对各种图像(尤其是许多人脸的图像,或者难以辨认的人脸的图像)调用 Face - Detect API。 请注意每个模型返回的人脸数。

使用指定的模型检测人脸

人脸检测可以查找人脸的边界框位置,并识别其视觉特征点。 它会提取人脸的特征并存储这些特征,以便稍后在识别操作中使用。

使用 Face - Detect API 时,可以使用 detectionModel 参数分配模型版本。 可用值有:

  • detection_01
  • detection_02
  • detection_03

Face - Detect REST API 的请求 URL 将如下所示:

https://westus.api.cognitive.microsoft.com/face/v1.0/detect[?returnFaceId][&returnFaceLandmarks][&returnFaceAttributes][&recognitionModel][&returnRecognitionModel][&detectionModel]&subscription-key=<Subscription key>

如果使用客户端库,则可以通过传入一个相应的字符串来分配 detectionModel 的值。 如果不分配该值,API 将使用默认模型版本 (detection_01)。 请查看适用于 .NET 客户端库的以下代码示例。

string imageUrl = "https://news.microsoft.com/ceo/assets/photos/06_web.jpg";
var faces = await faceClient.Face.DetectWithUrlAsync(url: imageUrl, returnFaceId: false, returnFaceLandmarks: false, recognitionModel: "recognition_04", detectionModel: "detection_03");

使用指定的模型将人脸添加到 Person

人脸服务可以从图像中提取人脸数据,并通过 PersonGroup Person - Add Face API 将其与 Person 对象关联。 在此 API 调用中,可以像在 Face - Detect 中一样指定检测模型。

请查看适用于 .NET 客户端库的以下代码示例。

// Create a PersonGroup and add a person with face detected by "detection_03" model
string personGroupId = "mypersongroupid";
await faceClient.PersonGroup.CreateAsync(personGroupId, "My Person Group Name", recognitionModel: "recognition_04");

string personId = (await faceClient.PersonGroupPerson.CreateAsync(personGroupId, "My Person Name")).PersonId;

string imageUrl = "https://news.microsoft.com/ceo/assets/photos/06_web.jpg";
await client.PersonGroupPerson.AddFaceFromUrlAsync(personGroupId, personId, imageUrl, detectionModel: "detection_03");

此代码将创建 ID 为 mypersongroupidPersonGroup,并将一个 Person 对象添加到其中。 然后,它使用 detection_03 模型将一个 Face 对象添加到此 Person 对象。 如果未指定 detectionModel 参数,API 将使用默认模型 detection_01

注意

无需对 Person 对象中的所有人脸使用相同的检测模型,并且在检测新人脸时,无需使用相同的检测模型来与 Person 对象进行比较(例如,在 Face - Identify API 中)。

使用指定的模型将人脸添加到 FaceList

将人脸添加到现有的 FaceList 对象时,也可以指定检测模型。 请查看适用于 .NET 客户端库的以下代码示例。

await faceClient.FaceList.CreateAsync(faceListId, "My face collection", recognitionModel: "recognition_04");

string imageUrl = "https://news.microsoft.com/ceo/assets/photos/06_web.jpg";
await client.FaceList.AddFaceFromUrlAsync(faceListId, imageUrl, detectionModel: "detection_03");

此代码将创建名为 My face collectionFaceList,并使用 detection_03 模型将一个 Face 对象添加到其中。 如果未指定 detectionModel 参数,API 将使用默认模型 detection_01

注意

无需对 FaceList 对象中的所有人脸使用相同的检测模型,并且在检测新人脸时,无需使用相同的检测模型来与 FaceList 对象进行比较

后续步骤

本文已介绍如何指定要与不同人脸 API 配合使用的检测模型。 接下来,按照快速入门开始使用人脸检测和分析。