Amazon Rekognition
開発者ガイド

イメージを使用した顔の検索

SearchFacesByImage オペレーションを使用して、指定したイメージ内の最大の顔と一致するコレクション内の顔を検索できます。

詳細については、「コレクション内の顔の検索」を参照してください。

イメージを使用してコレクション内の顔を検索するには (SDK)

  1. まだ実行していない場合:

    1. AmazonRekognitionFullAccessAmazonS3ReadOnlyAccess のアクセス権限を持つ IAM ユーザーを作成または更新します。詳細については、「ステップ 1: AWS アカウントを設定して IAM ユーザーを作成する」を参照してください。

    2. AWS CLI と AWS SDK をインストールして設定します。詳細については、「ステップ 2: AWS CLI と AWS SDK をセットアップする」を参照してください。

  2. イメージ (1 つ以上の有名人の顔が含まれているもの) を S3 バケットにアップロードします。

    手順については、『Amazon Simple Storage Service コンソールユーザーガイド』の「Amazon S3 へのオブジェクトのアップロード」を参照してください。

  3. 以下の例を使用して、SearchFacesByImage オペレーションを呼び出します。

    JavaAWS CLIPython.NET
    Java

    この例では、イメージ内の最大の顔と一致する顔の情報を表示します。このコード例では、FaceMatchThreshold パラメータと MaxFaces パラメータの両方を指定して、レスポンスで返される結果を制限します。

    次の例で collectionId の値は、検索先のコレクションに変更します。bucket の値は、入力イメージが含まれているバケットに変更します。photo の値は、入力イメージに変更します。

    //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.) package aws.example.rekognition.image; import com.amazonaws.services.rekognition.AmazonRekognition; import com.amazonaws.services.rekognition.AmazonRekognitionClientBuilder; import com.amazonaws.services.rekognition.model.FaceMatch; import com.amazonaws.services.rekognition.model.Image; import com.amazonaws.services.rekognition.model.S3Object; import com.amazonaws.services.rekognition.model.SearchFacesByImageRequest; import com.amazonaws.services.rekognition.model.SearchFacesByImageResult; import java.util.List; import com.fasterxml.jackson.databind.ObjectMapper; public class SearchFaceMatchingImageCollection { public static final String collectionId = "MyCollection"; public static final String bucket = "bucket"; public static final String photo = "input.jpg"; public static void main(String[] args) throws Exception { AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient(); ObjectMapper objectMapper = new ObjectMapper(); // Get an image object from S3 bucket. Image image=new Image() .withS3Object(new S3Object() .withBucket(bucket) .withName(photo)); // Search collection for faces similar to the largest face in the image. SearchFacesByImageRequest searchFacesByImageRequest = new SearchFacesByImageRequest() .withCollectionId(collectionId) .withImage(image) .withFaceMatchThreshold(70F) .withMaxFaces(2); SearchFacesByImageResult searchFacesByImageResult = rekognitionClient.searchFacesByImage(searchFacesByImageRequest); System.out.println("Faces matching largest face in image from" + photo); List < FaceMatch > faceImageMatches = searchFacesByImageResult.getFaceMatches(); for (FaceMatch face: faceImageMatches) { System.out.println(objectMapper.writerWithDefaultPrettyPrinter() .writeValueAsString(face)); System.out.println(); } } }
    AWS CLI

    この AWS CLI コマンドでは、search-faces-by-image CLI オペレーションの JSON 出力を表示します。Bucket の値は、ステップ 2 で使用した S3 バケットに置き換えます。Name の値は、ステップ 2 で使用したイメージファイル名に置き換えます。collection-id の値は、検索先のコレクションに置き換えます。

    aws rekognition search-faces-by-image \ --image '{"S3Object":{"Bucket":"bucket-name","Name":"Example.jpg"}}' \ --collection-id "collection-id"
    Python

    この例では、イメージ内の最大の顔と一致する顔の情報を表示します。このコード例では、FaceMatchThreshold パラメータと MaxFaces パラメータの両方を指定して、レスポンスで返される結果を制限します。

    以下の例で collectionId の値は、検索先のコレクションに変更します。bucketphoto の値は、ステップ 2 で使用した Amazon S3 バケット名とイメージ名に置き換えます。

    #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 if __name__ == "__main__": bucket='bucket' collectionId='MyCollection' fileName='input.jpg' threshold = 70 maxFaces=2 client=boto3.client('rekognition') response=client.search_faces_by_image(CollectionId=collectionId, Image={'S3Object':{'Bucket':bucket,'Name':fileName}}, FaceMatchThreshold=threshold, MaxFaces=maxFaces) faceMatches=response['FaceMatches'] print 'Matching faces' for match in faceMatches: print 'FaceId:' + match['Face']['FaceId'] print 'Similarity: ' + "{:.2f}".format(match['Similarity']) + "%" print
    .NET

    この例では、イメージ内の最大の顔と一致する顔の情報を表示します。このコード例では、FaceMatchThreshold パラメータと MaxFaces パラメータの両方を指定して、レスポンスで返される結果を制限します。

    以下の例で collectionId の値は、検索先のコレクションに変更します。bucketphoto の値は、ステップ 2 で使用した Amazon S3 バケット名とイメージ名に置き換えます。

    //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.) using System; using Amazon.Rekognition; using Amazon.Rekognition.Model; public class SearchFacesMatchingImage { public static void Example() { String collectionId = "MyCollection"; String bucket = "bucket"; String photo = "input.jpg"; AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient(); // Get an image object from S3 bucket. Image image = new Image() { S3Object = new S3Object() { Bucket = bucket, Name = photo } }; SearchFacesByImageRequest searchFacesByImageRequest = new SearchFacesByImageRequest() { CollectionId = collectionId, Image = image, FaceMatchThreshold = 70F, MaxFaces = 2 }; SearchFacesByImageResponse searchFacesByImageResponse = rekognitionClient.SearchFacesByImage(searchFacesByImageRequest); Console.WriteLine("Faces matching largest face in image from " + photo); foreach (FaceMatch face in searchFacesByImageResponse.FaceMatches) Console.WriteLine("FaceId: " + face.Face.FaceId + ", Similarity: " + face.Similarity); } }

SearchFacesByImage オペレーションのリクエスト

SearchFacesImageByImage への入力パラメータは、検索先のコレクションとソースイメージの場所です。以下の例では、ソースイメージが Amazon S3 バケット (S3Object) に保存されています。また、返される顔の最大数 (Maxfaces) と、顔を返すために一致する必要がある最小限の信頼度 (FaceMatchThreshold) も指定されています。

{ "CollectionId": "MyCollection", "Image": { "S3Object": { "Bucket": "bucket", "Name": "input.jpg" } }, "MaxFaces": 2, "FaceMatchThreshold": 70 }

SearchFacesByImage オペレーションのレスポンス

入力イメージ (.jpeg または .png) を指定すると、オペレーションでは入力イメージ内で顔を検出してから、指定した顔コレクション内で類似する顔を検索します。

注記

入力イメージ内で複数の顔が検出された場合は、検出された中で最大の顔を使用して顔コレクション内を検索します。

このオペレーションでは、検索された一致する顔の配列と、入力の顔に関する情報を返します。これには、境界ボックスなどの情報と信頼値 (境界ボックス内に顔が含まれている信頼度) が含まれます。

デフォルトでは、アルゴリズムで 80% を超える類似度が検出された顔が SearchFacesByImage から返されます。類似度は、顔が入力イメージの顔と一致している度合いを示します。必要に応じて、FaceMatchThreshold を使用して別の値を指定できます。レスポンスでは、検索された一致する顔ごとに類似度と顔のメタデータが返されます。レスポンス例は次のとおりです。

{ "FaceMatches": [ { "Face": { "BoundingBox": { "Height": 0.06333330273628235, "Left": 0.1718519926071167, "Top": 0.7366669774055481, "Width": 0.11061699688434601 }, "Confidence": 100, "ExternalImageId": "input.jpg", "FaceId": "578e2e1b-d0b0-493c-aa39-ba476a421a34", "ImageId": "9ba38e68-35b6-5509-9d2e-fcffa75d1653" }, "Similarity": 99.9764175415039 } ], "FaceModelVersion": "3.0", "SearchedFaceBoundingBox": { "Height": 0.06333333253860474, "Left": 0.17185185849666595, "Top": 0.7366666793823242, "Width": 0.11061728745698929 }, "SearchedFaceConfidence": 99.99999237060547 }