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

时间:2018-07-04 15:46:27

标签: azure face-detection microsoft-cognitive face-api

用例如下

  • 我们的系统中有面孔列表
  • 用户将上传一张图片
  • 我们要显示与上传的图片相匹配的面孔列表,并说> 0.8置信度

现在看着how to,我理解如下

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

这是正确的方法吗?

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

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

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

什么是最好的方法?

定价

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

我可能在这里丢失了一些东西,如果有人可以在上面扔灯,那将是很棒的

1 个答案:

答案 0 :(得分:2)

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

在文档here中说;

  

Face API涵盖以下类别:

     

...

     
      
  • FaceList :用于管理查找相似的FaceList。
  •   
  • (大型)PersonGroup :用于管理标识的(大型)PersonGroup数据集。
  •   
  • (大型)PersonGroup人员头像:用于管理(大型)PersonGroup头像以获取标识
  •   

在您的情况下,您似乎想识别面孔,因此将PersonGroupPersonGroup Person项一起使用。

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

详细信息

因此,首先需要将已知的面孔存储在一个组中(给定要存储的项目数,称为PersonGroupLargePersonGroup),以便使用由您的用户。它将保留项目,而这些组没有“ 24小时限制”。

如果您想了解“正常”和“大规模”人群之间的区别,请参见参考文献here:您必须考虑一些区别,特别是在培训过程方面。

因此,让我们使用普通的PersonGroup,不大。请注意,物品的数量取决于您的订阅:

  
      
  • 免费订阅配额:1,000人组。每个最多可容纳1,000人。
  •   
  • S0层订阅配额:1,000,000个人组。每个人最多可容纳10,000人。
  •   

动作

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

  • 使用PersonGroup - Create here创建人员组。您将在请求中指定一个personGroupId,并将在下面使用

然后针对每个已知面孔的人:

  • 使用PersonGroup Person - Create operation创建人,并在请求中提供前一个personGroupId。结果,您将得到一个personId的Guid值,例如“ 25985303-c537-4467-b41d-bdb45cd95ca1”

  • 通过调用PersonGroup Person - Add Face operation并另外提供personGroupIdpersonId,将此用户的
  • 为该用户的新面孔添加面孔请求中的可选信息以及正文中的图片网址。

请注意,此操作:

  

有效图像大小为1KB至4MB。每张只允许一张脸   图片。

最后,一旦您将自己的人与他们的脸相加:

  • 致电PersonGroup - Train operation
  • 使用PersonGroup - Get Training Status operation
  • 检查培训状态

然后,您就可以根据此组识别人员了!

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

简单,只需执行以下两项操作即可:

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

其他问题

  

每1000张图像的人脸存储成本为16.53 / m,这是否意味着   Face-Detect API将存储在Azure Blob存储中吗?如果是,仍然   faceId将在24小时后删除吗?

Face-Detect API未存储图像。存储成本大约是使用PersonGroup或FaceLists

  

人脸存储-存储每张最大4 MB的图像-而   Face-Detect说,最多可以存储6 MB

如前所述,存储是关于持久化面部的,例如当您使用PersonGroup Person - Add Face时,其限制为4MB,而不是6