在集合中搜索人脸 - Amazon Rekognition

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在集合中搜索人脸

Amazon Rekognition 可让您使用输入人脸在存储人脸集合中搜索匹配的人脸。首先,将检测到的人脸信息存储在称为“集合”的服务器端容器中。收藏夹存储个人面孔和用户(同一个人的几张面孔)。单张人脸以人脸向量的形式存储,人脸向量是人脸的数学表示(不是人脸的实际图像)。同一个人的不同图像可用于在同一个集合中创建和存储多个人脸矢量。然后,您可以聚合同一个人的多个面部矢量来创建用户向量。用户向量可以提供更高的人脸搜索精确度,并提供更可靠的描绘,包括不同程度的光照、锐度、姿势、外观等。

创建集合后,您可以使用输入面容在集合中搜索匹配的用户向量或人脸向量。与针对单个人脸向量进行搜索相比,根据用户向量进行搜索可以显著提高准确性。您可以使用在图像、存储视频和流视频中检测到的人脸来搜索存储的人脸向量。您可以使用在图像中检测到的人脸来搜索存储的用户向量。

要存储人脸信息,您需要执行以下操作:

  1. 创建收藏夹-要存储面部信息,您必须先在账户中的一个 AWS 区域中创建 (CreateCollection) 面部集合。在调用 IndexFaces 操作时指定此人脸集合。

  2. 人脸索引-该IndexFaces操作可检测图像中的人脸,提取人脸矢量并将其存储在集合中。您可使用此操作检测图像中的人脸,并将有关检测到的人脸特征的信息保存到集合中。这是基于存储的 API 操作示例,因为服务会将人脸向量信息存储在服务器上。

要创建用户并将多个人脸向量与用户关联,您需要执行以下操作:

  1. 创建用户-必须先使用创建用户CreateUser。您可以通过将同一个人的多个人脸向量汇总到一个用户向量中来提高人脸匹配的准确性。您最多可以将 100 个人脸向量与一个用户矢量相关联。

  2. 关联面孔-创建用户后,您可以通过AssociateFaces操作向该用户添加现有人脸矢量。人脸向量必须与用户向量位于同一个集合中,才能与该用户向量相关联。

创建集合并存储人脸和用户向量后,您可以使用以下操作来搜索匹配的人脸:

注意

集合存储人脸向量,这些向量是人脸的数学表示。集合不存储人脸图像。

下图根据您使用集合的目标显示了调用操作的顺序:

为了最大限度地提高与用户向量匹配的精度:

该图描绘了在集合中存储和搜索用户面部向量,列出了诸如 CreateCollection、、、 IndexFaces CreateUser AssociateFaces SearchUsersByImage、和 SearchUsers之类的操作。

要与单个面部矢量进行高精度匹配:

该图描绘了在集合中存储和搜索人脸,列出了诸如 CreateCollection、、、 IndexFaces StartFaceSearch CreateStreamProcessor SearchFacesByImage、和 SearchFaces之类的操作。

在许多情况下都可以使用集合。例如,您可以使用 IndexFacesAssociateFaces 操作创建一个人脸集合,用于存储从扫描的员工徽章图像和政府颁发的 ID 中检测到的人脸。当员工进入大楼时,将捕获员工的人脸图像,并将此图像发送到 SearchUsersByImage 操作。如果人脸匹配得到了足够高的相似度得分(例如 99%),则可对员工进行身份验证。

管理集合

人脸集合是主要 Amazon Rekognition 资源,而您创建的每个人脸集合均具有一个唯一的 Amazon 资源名称 (ARN)。你可以在账户的特定 AWS 区域创建每个面孔集合。创建集合时,它会与人脸检测模型的最新版本关联。有关更多信息,请参阅 模型版本控制

您可以对集合执行以下管理操作:

管理集合中的人脸

在创建人脸集合后,您可以将人脸存储到该集合中。Amazon Rekognition 提供以下操作来管理集合中的人脸:

  • IndexFaces操作会检测输入图像(JPEG 或 PNG)中的人脸,并将其添加到指定的人脸集合中。将为在图像中检测到的每个人脸返回一个唯一的人脸 ID。在保留人脸后,您可以在人脸集合中搜索匹配的人脸。有关更多信息,请参阅 将人脸添加到集合

  • ListFaces操作列出了集合中的人脸。有关更多信息,请参阅 将人脸添加到集合

  • DeleteFaces操作将从集合中删除人脸。有关更多信息,请参阅 从集合中删除人脸

在集合中管理用户

存储来自同一个人的多个人脸向量后,您可以通过将所有这些人脸向量关联到一个用户向量中来提高准确性。您可以使用以下操作来管理用户:

  • CreateUser-Operation 使用提供的唯一用户 ID 在集合中创建新用户。

  • AssociateUsers-在用户 ID 中添加 1-100 个唯一的人脸 ID。将至少一个人脸 ID 与用户关联后,您可以在您的集合中搜索与该用户的匹配项。

  • ListUsers-列出集合中的用户。

  • DeleteUsers-使用提供的用户 ID 从集合中删除用户。

  • DisassociateFaces-移除用户的一个或多个面容 ID。

使用相似度阈值关联人脸

请务必确保与用户关联的人脸全部来自同一个人。为提供帮助,UserMatchThreshold 参数指定了新面孔与已包含至少一个 FaceIDUserID 关联所需的最低用户匹配置信度。这有助于确保 FaceIds 与正确的 UserID 相关联。该值的范围为 0-100,默认值为 75。

使用指南 IndexFaces

下面是在常见情景中使用 IndexFaces 的指南。

关键或公共安全应用

  • IndexFaces使用每张图片中仅包含一张人脸的图像进行调用,并将返回的面容 ID 与图像主题的标识符相关联。

  • 您可以使用索引DetectFaces前来验证图像中只有一张脸。如果检测到多个人脸,则在审查后重新提交图像并且只让一个人脸呈现。这将防止无意中索引多个人脸并将它们与同一个人关联。

照片共享和社交媒体应用

  • 当对使用案例中包含多个人脸的图像(如家庭相册)没有任何限制时,您应该调用 IndexFaces。在这种情况下,您需要识别每张照片中的每个人,并使用该信息根据照片中出现的人对照片进行分组。

一般使用

  • 对同一个人的多个不同图像进行索引,尤其是对具有不同人脸属性(人脸姿态、面部毛发等)的图像进行索引、创建用户、关联针对该用户的不同人脸,以提高匹配质量。

  • 增加一个审查过程,使您可以用正确的人脸标识符为失败的匹配编制索引,以提高后续的人脸匹配能力。

  • 有关图像质量的信息,请参阅有关面部比较输入图像的建议

搜索集合内的人脸和用户

在创建人脸集合并存储人脸向量和/或用户向量后,您可以在人脸集合中搜索匹配的人脸。使用 Amazon Rekognition,您可以搜索集合中与以下条件匹配的人脸:

您可以使用 CompareFaces 操作将源图像中的人脸与目标图像中的人脸进行比较。此比较的范围限制为在目标图像中检测到的人脸。有关更多信息,请参阅比较图像中的人脸

以下列表中显示的各种搜索操作将人脸(由 FaceId 或输入图像识别)与存储在给定人脸集合中的所有人脸进行比较:

使用相似性阈值匹配人脸

我们允许您通过提供相似度阈值作为输入参数来控制所有搜索操作的结果(CompareFacesSearchFacesSearchFacesByImageSearchUsers、、、、SearchUsersByImage)。

FaceMatchThresholdSearchFacesSearchFacesByImage 的相似性阈值输入属性,它根据与被匹配人脸的相似性来控制返回的结果数。SearchUsersSearchUsersByImage 的相似性阈值属性是 UserMatchThreshold,它根据与被匹配用户向量的相似性来控制返回的结果数。阈值属性为 CompareFacesSimilarityThreshold

对于响应,如果其 Similarity 响应属性值低于阈值,则不返回。此阈值对于校准使用案例非常重要,因为它可以确定匹配结果中包含的误报数。此阈值控制搜索结果的查全率;该阈值越低,查全率越高。

所有机器学习系统是概率性的。您应根据自己的使用案例,判断如何设置合适的相似性阈值。例如,如果您打算生成一个照片应用来标识长相相似的家庭成员,则可选择较低的阈值(例如,80%)。另一方面,对于许多执法使用案例,我们建议您使用 99% 或更高的阈值来减少意外错误。

除了 FaceMatchThresholdUserMatchThreshold,还可以使用 Similarity 响应属性来减少意外错误。例如,您可以选择使用较低的阈值(如 80%)以返回更多结果。然后,您可以使用响应属性相似性(相似性的百分比)来缩小选择范围以及在应用程序中筛选合适的响应。再次强调,使用越高的相似性(例如 99% 及以上)越能降低识别出错的风险。