顔 ID を使用した顔の検索
SearchFaces オペレーションを使用すると、指定したイメージ内で最大の顔と一致する、コレクション内のユーザーを検索できます。
顔が検出されると、顔 ID が IndexFaces オペレーションレスポンスで返され、コレクションに追加されます。詳細については、「コレクション内の顔の管理」を参照してください。
顔 ID を使用してコレクション内の顔を検索するには (SDK)
-
まだ実行していない場合:
-
AmazonRekognitionFullAccess
アクセス権限を持つユーザーを作成または更新します。詳細については、「ステップ 1: AWS アカウントを設定してユーザーを作成する」を参照してください。
-
AWS CLI と AWS SDK をインストールして設定します。詳細については、「ステップ 2: AWS CLI と AWS SDK をセットアップする」を参照してください。
-
以下の例を使用して、SearchFaces
オペレーションを呼び出します。
- Java
-
この例では、顔 ID で識別された顔と一致する顔に関する情報を表示します。
collectionID
の値は、必要な顔が含まれているコレクションに変更します。faceId
の値は、検索する顔の識別子に変更します。
//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.fasterxml.jackson.databind.ObjectMapper;
import com.amazonaws.services.rekognition.model.FaceMatch;
import com.amazonaws.services.rekognition.model.SearchFacesRequest;
import com.amazonaws.services.rekognition.model.SearchFacesResult;
import java.util.List;
public class SearchFaceMatchingIdCollection {
public static final String collectionId = "MyCollection";
public static final String faceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
public static void main(String[] args) throws Exception {
AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient();
ObjectMapper objectMapper = new ObjectMapper();
// Search collection for faces matching the face id.
SearchFacesRequest searchFacesRequest = new SearchFacesRequest()
.withCollectionId(collectionId)
.withFaceId(faceId)
.withFaceMatchThreshold(70F)
.withMaxFaces(2);
SearchFacesResult searchFacesByIdResult =
rekognitionClient.searchFaces(searchFacesRequest);
System.out.println("Face matching faceId " + faceId);
List < FaceMatch > faceImageMatches = searchFacesByIdResult.getFaceMatches();
for (FaceMatch face: faceImageMatches) {
System.out.println(objectMapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(face));
System.out.println();
}
}
}
コード例を実行します。一致する顔に関する情報が表示されます。
- Java V2
-
このコードは、AWS ドキュメント SDK の例 GitHub リポジトリです。詳しい事例は こちら を参照してください。
// snippet-start:[rekognition.java2.match_faces_collection.import]
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.rekognition.RekognitionClient;
import software.amazon.awssdk.services.rekognition.model.SearchFacesRequest;
import software.amazon.awssdk.services.rekognition.model.SearchFacesResponse;
import software.amazon.awssdk.services.rekognition.model.FaceMatch;
import software.amazon.awssdk.services.rekognition.model.RekognitionException;
import java.util.List;
// snippet-end:[rekognition.java2.match_faces_collection.import]
/**
* Before running this Java V2 code example, set up your development environment, including your credentials.
*
* For more information, see the following documentation topic:
*
* https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
*/
public class SearchFaceMatchingIdCollection {
public static void main(String[] args) {
final String usage = "\n" +
"Usage: " +
" <collectionId> <sourceImage>\n\n" +
"Where:\n" +
" collectionId - The id of the collection. \n" +
" sourceImage - The path to the image (for example, C:\\AWS\\pic1.png). \n\n";
if (args.length != 2) {
System.out.println(usage);
System.exit(1);
}
String collectionId = args[0];
String faceId = args[1];
Region region = Region.US_EAST_1;
RekognitionClient rekClient = RekognitionClient.builder()
.region(region)
.credentialsProvider(ProfileCredentialsProvider.create("profile-name"))
.build();
System.out.println("Searching for a face in a collections");
searchFacebyId(rekClient, collectionId, faceId ) ;
rekClient.close();
}
// snippet-start:[rekognition.java2.match_faces_collection.main]
public static void searchFacebyId(RekognitionClient rekClient,String collectionId, String faceId) {
try {
SearchFacesRequest searchFacesRequest = SearchFacesRequest.builder()
.collectionId(collectionId)
.faceId(faceId)
.faceMatchThreshold(70F)
.maxFaces(2)
.build();
SearchFacesResponse imageResponse = rekClient.searchFaces(searchFacesRequest) ;
System.out.println("Faces matching in the collection");
List<FaceMatch> faceImageMatches = imageResponse.faceMatches();
for (FaceMatch face: faceImageMatches) {
System.out.println("The similarity level is "+face.similarity());
System.out.println();
}
} catch (RekognitionException e) {
System.out.println(e.getMessage());
System.exit(1);
}
}
// snippet-end:[rekognition.java2.match_faces_collection.main]
}
- AWS CLI
-
この AWS CLI コマンドでは、search-faces
CLI オペレーションの JSON 出力を表示します。face-id
の値は、検索する顔識別子に置き換えます。collection-id
の値は、検索先のコレクションに置き換えます。Rekognition セッションを作成する行の profile_name
の値を、自分のデベロッパープロファイル名に置き換えます。
aws rekognition search-faces --face-id face-id --collection-id "collection-id" --profile profile-name
- Python
-
この例では、顔 ID で識別された顔と一致する顔に関する情報を表示します。
collectionID
の値は、必要な顔が含まれているコレクションに変更します。faceId
の値は、検索する顔の識別子に変更します。Rekognition セッションを作成する行の profile_name
の値を、自分のデベロッパープロファイル名に置き換えます。
# 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
def search_face_in_collection(face_id, collection_id):
threshold = 90
max_faces = 2
session = boto3.Session(profile_name='profile-name')
client = session.client('rekognition')
response = client.search_faces(CollectionId=collection_id,
FaceId=face_id,
FaceMatchThreshold=threshold,
MaxFaces=max_faces)
face_matches = response['FaceMatches']
print('Matching faces')
for match in face_matches:
print('FaceId:' + match['Face']['FaceId'])
print('Similarity: ' + "{:.2f}".format(match['Similarity']) + "%")
return len(face_matches)
def main():
face_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
collection_id = 'collection-id'
faces = []
faces.append(face_id)
faces_count = search_face_in_collection(face_id, collection_id)
print("faces found: " + str(faces_count))
if __name__ == "__main__":
main()
- .NET
-
この例では、顔 ID で識別された顔と一致する顔に関する情報を表示します。
collectionID
の値は、必要な顔が含まれているコレクションに変更します。faceId
の値は、検索する顔の識別子に変更します。
//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 SearchFacesMatchingId
{
public static void Example()
{
String collectionId = "MyCollection";
String faceId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx";
AmazonRekognitionClient rekognitionClient = new AmazonRekognitionClient();
// Search collection for faces matching the face id.
SearchFacesRequest searchFacesRequest = new SearchFacesRequest()
{
CollectionId = collectionId,
FaceId = faceId,
FaceMatchThreshold = 70F,
MaxFaces = 2
};
SearchFacesResponse searchFacesResponse = rekognitionClient.SearchFaces(searchFacesRequest);
Console.WriteLine("Face matching faceId " + faceId);
Console.WriteLine("Matche(s): ");
foreach (FaceMatch face in searchFacesResponse.FaceMatches)
Console.WriteLine("FaceId: " + face.Face.FaceId + ", Similarity: " + face.Similarity);
}
}
コード例を実行します。一致する顔に関する情報が表示されます。
SearchFaces オペレーションのリクエスト
顔 ID (顔コレクションに保存されている顔ごとに顔 ID があります) を指定すると、SearchFaces
は指定した顔コレクション内で類似の顔を検索します。レスポンスには、検索している顔自体は含まれず、類似した顔のみが含まれます。デフォルトでは、アルゴリズムで 80% を超える類似度が検出された顔が SearchFaces
から返されます。類似度は、顔が入力イメージの顔と一致している度合いを示します。必要に応じて、FaceMatchThreshold
を使用して別の値を指定できます。
{
"CollectionId": "MyCollection",
"FaceId": "0b683aed-a0f1-48b2-9b5e-139e9cc2a757",
"MaxFaces": 2,
"FaceMatchThreshold": 99
}
SearchFaces オペレーションのレスポンス
このオペレーションでは、検索された一致する顔の配列と、入力として渡した顔 ID を返します。
{
"SearchedFaceId": "7ecf8c19-5274-5917-9c91-1db9ae0449e2",
"FaceMatches": [ list of face matches found
]
}
レスポンスでは、検索された一致する顔ごとに類似度と顔のメタデータを返します。レスポンス例は次のとおりです。
{
...
"FaceMatches": [
{
"Similarity": 100.0,
"Face": {
"BoundingBox": {
"Width": 0.6154,
"Top": 0.2442,
"Left": 0.1765,
"Height": 0.4692
},
"FaceId": "84de1c86-5059-53f2-a432-34ebb704615d",
"Confidence": 99.9997,
"ImageId": "d38ebf91-1a11-58fc-ba42-f978b3f32f60"
}
},
{
"Similarity": 84.6859,
"Face": {
"BoundingBox": {
"Width": 0.2044,
"Top": 0.2254,
"Left": 0.4622,
"Height": 0.3119
},
"FaceId": "6fc892c7-5739-50da-a0d7-80cc92c0ba54",
"Confidence": 99.9981,
"ImageId": "5d913eaf-cf7f-5e09-8c8f-cb1bdea8e6aa"
}
}
]
}