你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
人脸识别数据结构
本文介绍人脸服务中用于人脸识别操作的数据结构。 这些数据结构保存人脸和人员的数据。
注意
为了支持我们负责任的 AI 原则,基于资格和使用标准对人脸服务访问进行限制。 人脸服务仅适用于 Microsoft 托管客户和合作伙伴。 使用人脸识别引入表单来申请访问。 有关详细信息,请参阅人脸受限访问页面。
使用识别的数据结构
人脸识别 API 使用容器数据结构保存 Person 对象中的人脸识别数据。 有三种类型的容器用于此目的,从最早到最新列出。 建议始终使用最新的容器。
PersonGroup
PersonGroup 是最小的容器数据结构。
- 创建 PersonGroup 时,需要指定识别模型。 向该 PersonGroup 添加任何人脸时,它将使用此模型来处理它们。 此模型必须与检测 API 中带有人脸 ID 的模型版本相匹配。
- 必须调用训练 API,以使任何新的人脸数据反映在识别 API结果中。 这包括添加/删除人脸和添加/删除人员。
- 免费级订阅最多可以容纳 1000 人。 S0 付费订阅最多可以有 10000 人。
PersonGroupPerson 表示要标识的人员。 它可以容纳最多 248 张人脸。
Large Person Group
LargePersonGroup 是较晚引入的数据结构,支持多达 100 万个实体(对于 S0 级订阅)。 它经过优化以支持大规模数据。 它有 PersonGroup 的大多数功能:创建时需要指定识别模型,并且必须在使用前调用训练 API。
PersonDirectory
PersonDirectory 是最新的此类数据结构。 它支持规模更大,准确度更高。 每个 Azure 人脸资源都有一个默认 PersonDirectory 数据结构。 它是 PersonDirectoryPerson 对象的简单列表,最多可以容纳 2000 万个对象。
PersonDirectoryPerson 表示要标识的人员。 根据较久的 PersonGroupPerson 模型而来,可以将不同识别模型的人脸添加到同一个人。 但是,“识别”操作只能匹配使用相同的识别模型获取的人脸。
DynamicPersonGroup 是一种轻量级数据结构,可用于动态引用 PersonDirectoryPerson。 它不需要“训练”操作:更新数据后,即可与识别 API 一起使用。
还可以对“识别”操作使用“就地人员 ID 列表”。 这样就可以指定一个更窄的组来从中识别。 可以手动执行此操作,以提高大型组中的识别性能。
上述数据结构可以一起使用。 例如:
- 在访问控制系统中,PersonDirectory 可能代表公司的所有员工,但较小的 DynamicPersonGroup 可能只代表有权访问大楼某一层的员工。
- 在航班登机系统中,PersonDirectory 可以代表航空公司的所有客户,但 DynamicPersonGroup 仅代表特定航班上的乘客。 就地人员 ID 列表 可以代表最后一刻做出更改的乘客。
有关详细信息,请参阅 PersonDirectory 操作指南。 LargePersonGroup和 PersonDirectory 之间的快速比较:
详细信息 | LargePersonGroup | PersonDirectory |
---|---|---|
容量 | LargePersonGroup 最多可以容纳 100 万 PersonGroupPerson 对象。 | 该集合最多可以存储 2000 万 PersonDirectoryPerson 标识。 |
PersonURI | /largepersongroups/{groupId}/persons/{personId} |
(/v1.0-preview-or-above)/persons/{personId} |
所有权 | PersonGroupPerson 对象由他们所属的 LargePersonGroup 独占拥有。 如果希望多个组中保留相同的标识,则必须创建大型人员组人员,并为每个组单独添加大型人员组人脸,最终会在多个组中创建一组人员 ID。 | PersonDirectoryPerson 对象作为简单列表直接存储在 PersonDirectory中。 可以使用就地人员 ID 列表从人员目录进行标识,或者可以选择创建动态人员组并混合地将人员包含在组中。 创建的 PersonDirectoryPerson 对象可由多个 DynamicPersonGroup 引用,而无需重复。 |
型号 | 识别模型由 LargePersonGroup 确定。 添加到此模型时,所有 PersonGroupPerson 对象的新人脸都会与该模型相关联。 | PersonDirectoryPerson 对象会为每个识别模型准备单独的存储。 添加新人脸时,可以指定模型,但标识 API 只能匹配与查询人脸关联的同一识别模型所获取的人脸。 |
培训 | 必须调用训练 API,以使任何新的人脸/人员数据反映在识别 API结果中。 | 无需进行训练调用,但 API(如添加人员面孔)将成为长期运行的操作,这意味着应使用响应标头 "Operation-Location" 来检查更新是否完成。 |
清理 | 删除大型人员组也会删除它保存的所有 PersonGroupPerson 对象及其人脸数据。 | 删除动态人员组只会取消推断 PersonDirectoryPerson。 若要删除实际人员和人脸数据,请参阅删除人员。 |
使用查找相似的数据结构
与识别 API 不同,查找相似 API 用于难以设置人员注册的应用程序(例如从视频分析或相册分析中捕获的人脸图像)。
FaceList
FaceList 表示持续存在的人脸的简单列表。 它可以容纳 1,000 张人脸。
LargeFaceList
LargeFaceList 是一个更高版本,最多可以容纳 1000000 张人脸。
下一步
现在你已经熟悉人脸数据结构,请编写一个脚本在“标识”操作中使用这些结构。