Recherche d’utilisateurs (image) - Amazon Rekognition

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Recherche d’utilisateurs (image)

SearchUsersByImage recherche l’ID de collection spécifié pour les utilisateurs dans une collection qui correspond au plus grand visage détecté dans une image fournie. Par défaut, SearchUsersByImage renvoie l'utilisateur IDs pour lequel le score de similarité est supérieur à 80 %. La similarité indique dans quelle mesure l’UserID correspond au plus grand visage détecté dans l’image fournie. Si plusieurs utilisateurs IDs sont renvoyés, ils sont répertoriés par ordre du score de similarité le plus élevé au plus bas. Vous pouvez éventuellement utiliser le UserMatchThreshold pour spécifier une valeur différente. Pour de plus amples informations, veuillez consulter Gérer les utilisateurs dans une collection.

Pour rechercher des utilisateurs par image (SDK)
  1. Si vous ne l’avez pas déjà fait :

    1. Créez ou mettez à jour un utilisateur avec les autorisations AmazonRekognitionFullAccess. Pour de plus amples informations, veuillez consulter Étape 1 : configurer un compte AWS et créer un utilisateur.

    2. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter Étape 2 : configurer le AWS CLI et AWS SDKs.

  2. Utilisez les exemples suivants pour appeler l’opération SearchUsersByImage.

    Java

    Cet exemple Java recherche les utilisateurs d’une collection sur la base d’une image en entrée, à l’aide de l’opération SearchUsersByImage.

    import com.amazonaws.services.rekognition.AmazonRekognition; import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder; import com.amazonaws.services.rekognition.model.Image; import com.amazonaws.services.rekognition.model.S3Object; import com.amazonaws.services.rekognition.model.SearchUsersByImageRequest; import com.amazonaws.services.rekognition.model.SearchUsersByImageResult; import com.amazonaws.services.rekognition.model.UserMatch; public class SearchUsersByImage { //Replace bucket, collectionId and photo with your values. public static final String collectionId = "MyCollection"; public static final String s3Bucket = "bucket"; public static final String s3PhotoFileKey = "input.jpg"; public static void main(String[] args) throws Exception { AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient(); // Get an image object from S3 bucket. Image image = new Image() .withS3Object(new S3Object() .withBucket(s3Bucket) .withName(s3PhotoFileKey)); // Search collection for users similar to the largest face in the image. SearchUsersByImageRequest request = new SearchUsersByImageRequest() .withCollectionId(collectionId) .withImage(image) .withUserMatchThreshold(70F) .withMaxUsers(2); SearchUsersByImageResult result = rekognitionClient.searchUsersByImage(request); System.out.println("Printing search result with matched user and similarity score"); for (UserMatch match: result.getUserMatches()) { System.out.println(match.getUser().getUserId() + " with similarity score " + match.getSimilarity()); } } }
    AWS CLI

    Cette AWS CLI commande recherche les utilisateurs d'une collection en fonction d'une image d'entrée, avec l'SearchUsersByImageopération.

    aws rekognition search-users-by-image --image '{"S3Object":{"Bucket":"s3BucketName","Name":"file-name"}}' --collection-id MyCollectionId --region region-name
    Python

    L’exemple suivant recherche les utilisateurs d’une collection sur la base d’une image d’entrée, avec l’opération SearchUsersByImage.

    # 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 import os logger = logging.getLogger(__name__) session = boto3.Session(profile_name='profile-name') client = session.client('rekognition') def load_image(file_name): """ helper function to load the image for indexFaces call from local disk :param image_file_name: The image file location that will be used by indexFaces call. :return: The Image in bytes """ print(f'- loading image: {file_name}') with open(file_name, 'rb') as file: return {'Bytes': file.read()} def search_users_by_image(collection_id, image_file): """ SearchUsersByImage operation with user ID provided as the search source :param collection_id: The ID of the collection where user and faces are stored. :param image_file: The image that contains the reference face to search for. :return: response of SearchUsersByImage API """ logger.info(f'Searching for users using an image: {image_file}') try: response = client.search_users_by_image( CollectionId=collection_id, Image=load_image(image_file) ) 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 SearchUsersByImage with given image: {image_file}') raise else: print(response) return response def main(): collection_id = "collection-id" IMAGE_SEARCH_SOURCE = os.getcwd() + '/image_path' search_users_by_image(collection_id, IMAGE_SEARCH_SOURCE) if __name__ == "__main__": main()

SearchUsersByImage demande d'opération

Les paramètres d’entrée de SearchUsersByImage correspondent à la collection à explorer, et à l’emplacement de l’image source. Dans cet exemple, l’image source est stockée dans un compartiment Amazon S3 (S3Object). Sont également spécifiés le nombre maximal de visages à renvoyer (MaxUsers) et le niveau de fiabilité minimal auquel doit correspondre un visage pour être renvoyé (UserMatchThreshold).

{ "CollectionId": "MyCollection", "Image": { "S3Object": { "Bucket": "bucket", "Name": "input.jpg" } }, "MaxUsers": 2, "UserMatchThreshold": 99 }

SearchUsersByImage réponse à l'opération

La réponse pour SearchUsersByImage inclut un FaceDetail objet pour leSearchedFace, ainsi qu'une liste UserMatches contenant le UserIdSimilarity, et UserStatus pour chacun d'entre eux. Si l'image d'entrée contient plusieurs visages, une liste de visages UnsearchedFaces sera également renvoyée.

{ "SearchedFace": { "FaceDetail": { "BoundingBox": { "Width": 0.23692893981933594, "Top": 0.19235000014305115, "Left": 0.39177176356315613, "Height": 0.5437348484992981 } } }, "UserMatches": [ { "User": { "UserId": "demoUser1", "UserStatus": "ACTIVE" }, "Similarity": 100.0 }, { "User": { "UserId": "demoUser2", "UserStatus": "ACTIVE" }, "Similarity": 99.97946166992188 } ], "FaceModelVersion": "6", "UnsearchedFaces": [ { "FaceDetails": { "BoundingBox": { "Width": 0.031677018851041794, "Top": 0.5593535900115967, "Left": 0.6102562546730042, "Height": 0.0682177022099495 } }, "Reasons": [ "FACE_NOT_LARGEST" ] }, { "FaceDetails": { "BoundingBox": { "Width": 0.03254449740052223, "Top": 0.6080358028411865, "Left": 0.516062319278717, "Height": 0.06347997486591339 } }, "Reasons": [ "FACE_NOT_LARGEST" ] } ] }