搜索用户(人脸 ID /用户 ID) - Amazon Rekognition

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

搜索用户(人脸 ID /用户 ID)

您可以使用该SearchUsers操作在指定集合中搜索与提供的面容 ID 或用户 ID 相匹配的用户。该操作列出了按高于请求 UserMatchThreshold值的最高相似度分数UserIds排名的返回结果。用户 ID 是在 CreateUsers 操作中创建的。有关更多信息,请参阅 在集合中管理用户

搜索用户 (SDK)
  1. 如果您尚未执行以下操作,请:

    1. 使用 AmazonRekognitionFullAccess 权限创建或更新用户。有关更多信息,请参阅 步骤 1:设置 AWS 账户并创建用户

    2. 安装并配置 AWS CLI 和 AWS SDKs。有关更多信息,请参阅 第 2 步:设置 AWS CLI 和 AWS SDKs

  2. 使用以下示例调用 SearchUsers 操作。

    Java

    此 Java 示例使用 SearchUsers 操作搜索集合中的用户。

    import com.amazonaws.services.rekognition.AmazonRekognition; import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder; import com.amazonaws.services.rekognition.model.UserMatch; import com.amazonaws.services.rekognition.model.SearchUsersRequest; import com.amazonaws.services.rekognition.model.SearchUsersResult; import com.amazonaws.services.rekognition.model.UserMatch; public class SearchUsers { //Replace collectionId and faceId with the values you want to use. public static final String collectionId = "MyCollection"; public static final String faceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; public static final String userd = 'demo-user'; public static void main(String[] args) throws Exception { AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient(); // Search collection for faces matching the user id. SearchUsersRequest request = new SearchUsersRequest() .withCollectionId(collectionId) .withUserId(userId); SearchUsersResult result = rekognitionClient.searchUsers(request); System.out.println("Printing first search result with matched user and similarity score"); for (UserMatch match: result.getUserMatches()) { System.out.println(match.getUser().getUserId() + " with similarity score " + match.getSimilarity()); } // Search collection for faces matching the face id. SearchUsersRequest request1 = new SearchUsersRequest() .withCollectionId(collectionId) .withFaceId(faceId); SearchUsersResult result1 = rekognitionClient.searchUsers(request1); System.out.println("Printing second search result with matched user and similarity score"); for (UserMatch match: result1.getUserMatches()) { System.out.println(match.getUser().getUserId() + " with similarity score " + match.getSimilarity()); } }
    AWS CLI

    此 AWS CLI 命令使用该SearchUsers操作在集合中搜索用户。

    aws rekognition search-users --face-id face-id --collection-id collection-id --region region-name
    Python

    以下示例使用 SearchUsers 操作搜索集合中的用户。

    # Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. # PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.) import boto3 from botocore.exceptions import ClientError import logging logger = logging.getLogger(__name__) session = boto3.Session(profile_name='profile-name') client = session.client('rekognition') def search_users_by_face_id(collection_id, face_id): """ SearchUsers operation with face ID provided as the search source :param collection_id: The ID of the collection where user and faces are stored. :param face_id: The ID of the face in the collection to search for. :return: response of SearchUsers API """ logger.info(f'Searching for users using a face-id: {face_id}') try: response = client.search_users( CollectionId=collection_id, FaceId=face_id ) print(f'- found {len(response["UserMatches"])} matches') print([f'- {x["User"]["UserId"]} - {x["Similarity"]}%' for x in response["UserMatches"]]) except ClientError: logger.exception(f'Failed to perform SearchUsers with given face id: {face_id}') raise else: print(response) return response def search_users_by_user_id(collection_id, user_id): """ SearchUsers operation with user ID provided as the search source :param collection_id: The ID of the collection where user and faces are stored. :param user_id: The ID of the user in the collection to search for. :return: response of SearchUsers API """ logger.info(f'Searching for users using a user-id: {user_id}') try: response = client.search_users( CollectionId=collection_id, UserId=user_id ) print(f'- found {len(response["UserMatches"])} matches') print([f'- {x["User"]["UserId"]} - {x["Similarity"]}%' for x in response["UserMatches"]]) except ClientError: logger.exception(f'Failed to perform SearchUsers with given face id: {user_id}') raise else: print(response) return response def main(): collection_id = "collection-id" user_id = "user-id" face_id = "face_id" search_users_by_face_id(collection_id, face_id) search_users_by_user_id(collection_id, user_id) if __name__ == "__main__": main()

SearchUsers 操作请求

给定 FaceID 或用户 ID SearchUsers ,在指定的 CollectionId 中搜索用户匹配项。默认情况下, SearchUsers 返回相似度分数大于 80% 的用户IDs 。相似度表示用户 ID 与提供的 FaceID 或用户 ID 的匹配程度。如果返回多个用户IDs ,则按相似度分数最高到最低的顺序列出。或者,您可以使用 UserMatchThreshold 来指定不同的值。有关更多信息,请参阅 在集合中管理用户

以下是使用以下 SearchUsers 请求的示例UserId

{ "CollectionId": "MyCollection", "UserId": "demoUser1", "MaxUsers": 2, "UserMatchThreshold": 99 }

以下是使用以下 SearchUsers 请求的示例FaceId

{ "CollectionId": "MyCollection", "FaceId": "bff43c40-cfa7-4b94-bed8-8a08b2205107", "MaxUsers": 2, "UserMatchThreshold": 99 }

SearchUsers 操作响应

如果使用 a 进行搜索FaceId,则对FaceId的响应将 SearchUsers SearchedFace包括每个用户的列表以及UserMatchesUserIdUserStatus的列表。

{ "SearchedFace": { "FaceId": "bff43c40-cfa7-4b94-bed8-8a08b2205107" }, "UserMatches": [ { "User": { "UserId": "demoUser1", "UserStatus": "ACTIVE" }, "Similarity": 100.0 }, { "User": { "UserId": "demoUser2", "UserStatus": "ACTIVE" }, "Similarity": 99.97946166992188 } ], "FaceModelVersion": "6" }

如果使用 a 进行搜索UserId,则除了其他响应元素外SearchedUser,的响应还 SearchUsers 包括对的。UserId

{ "SearchedUser": { "UserId": "demoUser1" }, "UserMatches": [ { "User": { "UserId": "demoUser2", "UserStatus": "ACTIVE" }, "Similarity": 99.97946166992188 } ], "FaceModelVersion": "6" }