azure - Microsoft 认知 - 人脸 API - 人脸验证 - 工作原理

标签 azure face-detection azure-cognitive-services face-api

用例如下

  • 我们的系统中有面孔列表
  • 用户将上传一张图片
  • 我们希望显示与上传图像匹配的面孔列表,例如置信度 >0.8

现在查看how to ,我的理解如下

  • 使用人脸检测API,我们需要首先上传所有图像,包括我们要验证的图像
  • 我们可以将系统中的所有面孔添加到 PersonGroupId 之一中
  • 然后我们需要调用 Face-Verify API 并传递图像进行验证和 PersonGroupId 开始比较
  • 作为响应,我们将获取所有具有 isIdentical 和置信度数据的faceId ??

这是正确的方法吗?

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

顺便说一句,在给定的链接中,提到faceid将在检测调用后24小时后过期:(

在这种情况下,我们还需要考虑性能,因此我们正在考虑异步调用,然后将结果返回到系统中的某个位置,以便稍后检索。

最好的方法是什么?

定价

  • 我可以看到前 30,000 笔交易是免费的(限制为 20/月)
  • 1000 张图像的人脸存储成本为 16.53/m,这是否意味着人脸检测 API 将存储在 Azure Blob 存储中?如果是,faceId 仍然会在 24 小时后删除吗?
  • 人脸存储 - 每张图像最多可存储 4 MB - 而 Face-Detect 表示,最多可存储 6 MB

我可能在这里遗漏了一些东西,如果有人能照亮它那就太好了

最佳答案

让我们看看您需要实现的流程。

在文档中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.

就您的情况而言,您似乎想要识别面孔,因此您将使用 PersonGroup 以及内部的 PersonGroup 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 创建 PersonGroup operation 。您将在请求中指定一个personGroupId,您将在下面使用它

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

  • 使用 PersonGroup Person - Create 创建人员 operation ,给出请求中之前的 personGroupId。结果您将获得 personId guid 值,例如“25985303-c537-4467-b41d-bdb45cd95ca1”

  • 通过调用 PersonGroup Person - Add Face 将此用户的面孔添加到其新创建的 Person operation并在请求中提供 personGroupIdpersonId、其他可选信息以及正文中的图像网址。

请注意,对于此操作:

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

最后,一旦您添加了人物及其面孔:

  • 调用 PersonGroup - 火车 operation
  • 使用 PersonGroup - 获取培训状态 检查培训状态 operation

然后您就可以根据该组来识别人员了!

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

很简单,只需执行 2 个操作即可:

  • 调用人脸检测 operation寻找图像中的面孔。结果将是一个包含 faceId 和其他属性

    的项目数组
  • 如果您检测到人脸,请调用人脸识别operation具有以下参数:

  • faceId,这是检测操作的值

  • personGroupId:您在第 1 步中创建的群组的 ID

  • confidenceThreshold:您的置信度阈值,例如 0.8

  • maxNumOfCandidatesReturned:返回的候选数(1 到 100 之间,默认为 10)

索取 sample :

{
    "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

关于azure - Microsoft 认知 - 人脸 API - 人脸验证 - 工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51177270/

相关文章:

c# - opencv识别功能在C#中无法正常工作

python - 检测到一张或多张脸时触发 cv2.imwrite

ios - iOS视角下的人脸检测和人脸识别有什么区别

使用调用后提交表单数据的 Azure 逻辑应用

asp.net - 在将网站发布到 Azure 之前,如何在 VS 中运行脚本?

c# - .NET 7 中的 Azure Functions(独立)发布到 Azure,加载了 0 个函数

python - Azure 认知服务的语音服务 (SST) 支持哪些音频格式?

node.js - Timex3 日期时间解析和转换

javascript - 如何使用微软视频API?

asp.net - 在 Windows Azure 中启动外部可执行文件