让我们看看您需要实施的过程。
在这里的文档中说;
人脸 API 涵盖以下类别:
...
- FaceList:用于管理查找相似的 FaceList 。
- (Large)PersonGroup:用于管理 (Large)PersonGroup 数据集以进行标识。
- (Large)PersonGroup Person:用于管理 (Large)PersonGroup Person Faces 以进行识别。
在您的情况下,您似乎想要识别人脸,因此您将使用里面PersonGroup
的PersonGroup Person
物品。
第 1 步 - 生成已知面孔列表
细节
因此,首先您需要将您已知的面孔存储在一个组中(称为PersonGroup
或LargePersonGroup
给定您必须存储的项目数量),以便使用用户上传的图像查询这些项目。它将保留这些项目,这些组没有“24 小时限制”。
如果您想了解“正常”组和“大规模”组之间的差异,请参阅此处的参考:您必须考虑一些差异,特别是在训练过程方面。
所以让我们使用一个普通的PersonGroup
,而不是大的。请注意,项目数量取决于您的订阅:
- 免费层订阅配额:1,000 人组。每个最多可容纳 1,000 人。
- S0 层订阅配额:1,000,000 人组。每个最多可容纳 10,000 人。
行动
另请注意,这里我指的是 API 操作,但所有这些操作都可以通过这些 API 调用以任何语言执行,也可以直接使用为某些语言提供的 SDK(参见此处的列表)
- 使用
PersonGroup - Create
operation创建一个 PersonGroup。personGroupId
您将在您的请求中指定一个,您将在下面使用
然后对于您已知面孔的每个人:
创建一个带有PersonGroup Person - Create
operationpersonGroupId
的 Person ,在请求中给出前面的。结果,您将获得一个personId
指导值,例如“25985303-c537-4467-b41d-bdb45cd95ca1”
通过调用PersonGroup Person - Add Face
operation并在请求中提供personGroupId
额外personId
的可选信息以及在正文中提供您的图像 url,将此用户的面孔添加到其新创建的 Person 中。
请注意,对于此操作:
有效图像大小为 1KB 到 4MB。每张图片只允许一张脸。
最后,一旦你添加了你的人的面孔:
- 调用
PersonGroup - Train
操作
- 通过操作检查训练状态
PersonGroup - Get Training Status
然后你就可以根据这个组来识别人了!
第 2 步 - 在已知面孔中搜索此 FaceId
很简单,这里只有 2 个操作:
调用Face - Detect
操作以在图像中查找人脸。结果将是一个包含项目faceId
和其他属性的数组
如果您检测到人脸,请使用以下参数调用Face - Identify
操作:
faceId
,这是检测操作的值
personGroupId
:您在第 1 步中创建的组的 ID
confidenceThreshold
:你的置信度阈值,比如 0.8
maxNumOfCandidatesReturned
: 返回的候选人数(1 到 100 之间,默认为 10)
索取样品:
{
"personGroupId": "sample_group",
"faceIds": [
"c5c24a82-6845-4031-9d5d-978df9175426",
"65d083d4-9447-47d1-af30-b626144bf0fb"
],
"maxNumOfCandidatesReturned": 1,
"confidenceThreshold": 0.8
}
其他问题
1000 张图像的人脸存储成本为 16.53/m,是否意味着人脸检测 API 将存储在 Azure Blob 存储中?如果是并且仍然 faceId 将在 24 小时后被删除?
Face-Detect API 不存储图像。存储成本是关于使用 PersonGroup 或 FaceLists
人脸存储 - 可存储每张最大 4 MB 的图像 - 而 Face-Detect 表示,最多可存储 6 MB
如前所述,存储是关于像使用时那样持久化的面孔PersonGroup Person - Add Face
,其中限制是 4MB,而不是 6