Microsoft Cognitive - Face API - 人脸验证 - 工作原理

Microsoft Cognitive - Face API - Face verification - How it works

用例如下

现看how to,理解如下

这是正确的方法吗?

应用过滤器后,我们的系统可以处理大约 1000-3000 张图像。

顺便说一句,在给定的 link 中,提到 faceid 将在检测呼叫后 24 小时后过期:(

在这种情况下,我们还需要注意性能,因此我们正在考虑异步调用,然后 return 结果会出现在我们系统中的某个位置,稍后可以检索到。

最好的方法是什么?

定价

我可能遗漏了一些东西,如果有人能点亮它就太好了

让我们看看您需要实施的过程。

在文档中 here 它说;

Face APIs cover the following categories:

...

  • FaceList: Used to manage a FaceList for Find Similar.
  • (Large)PersonGroup: Used to manage a (Large)PersonGroup dataset for Identification.
  • (Large)PersonGroup Person: Used to manage (Large)PersonGroup Person Faces for Identification.

在您的情况下,您似乎想要识别人脸,因此您将使用 PersonGroupPersonGroup Person 项。

第 1 步 - 生成已知面孔列表

详情

因此,首先您需要将已知面孔存储在一个组中(根据您必须存储的项数,称为 PersonGroupLargePersonGroup),以便使用图像查询这些项由您的用户上传。它会保留项目,这些组没有“24 小时限制”。

如果您想了解“正常”和“大规模”组之间的差异,请参阅参考资料here:您必须考虑一些差异,尤其是在训练过程方面。

所以让我们使用正常的 PersonGroup,不要大。请注意,物品数量取决于您的订阅:

  • Free-tier subscription quota: 1,000 person groups. Each holds up to 1,000 persons.
  • S0-tier subscription quota: 1,000,000 person groups. Each holds up to 10,000 persons.

操作

另请注意,我在这里指的是 API 操作,但所有这些操作都可以通过那些 API 调用以任何语言执行,但也可以直接使用为某些语言提供的 SDK(参见列表 here

  • PersonGroup - Create operation 创建一个 PersonGroup。您将在请求中指定一个 personGroupId,您将在下面使用

然后对于您已知面孔中的每个人:

  • PersonGroup Person - Createoperation创建一个人,在请求中给出之前的personGroupId。结果你会得到一个 personId guid 值,比如“25985303-c537-4467-b41d-bdb45cd95ca1”

  • 通过调用 PersonGroup Person - Add Face operation 并提供 personGroupId,将此用户的 Faces 添加到其新创建的 Person, personId,请求中的其他可选信息和正文中的图像 url。

请注意,对于此操作:

Valid image size is from 1KB to 4MB. Only one face is allowed per image.

最后,一旦你添加了你的人和他们的脸:

  • 致电PersonGroup - Trainoperation
  • 查看训练状态 PersonGroup - Get Training Status operation

那么你就可以根据这个群体来识别人了!

第 2 步 - 在您已知的面孔中搜索此 FaceId

简单,只需 2 个操作:

  • 调用 Face - Detect operation 在图像中查找面孔。结果将是一个包含 faceId 和其他属性

    的项目数组
  • 如果检测到人脸,请使用以下参数调用 Face - Identify operation

  • 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
}

其他问题

Face Storage cost is 16.53/m for 1000 images, does it means that Face-Detect API will store in Azure Blob storage? If yes and still faceId will be deleted after 24 hours ?

面部检测 API 未存储图像。存储成本大约是使用 PersonGroup 或 FaceLists

Face Storage - Stores images sized up to 4 MB each - whereas Face-Detect says, can store up to 6 MB

如前所述,存储是关于持久化面孔,就像您使用 PersonGroup Person - Add Face 时一样,其中限制是 4MB,而不是 6