Mencari wajah dengan gambar - Amazon Rekognition

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mencari wajah dengan gambar

Anda dapat menggunakan SearchFacesByImageoperasi untuk mencari wajah dalam koleksi yang cocok dengan wajah terbesar dalam gambar yang disediakan.

Untuk informasi selengkapnya, lihat Mencari wajah dan pengguna dalam koleksi.

Untuk mencari wajah dalam koleksi menggunakan image (SDK)
  1. Jika belum:

    1. Buat atau perbarui pengguna dengan AmazonRekognitionFullAccess dan AmazonS3ReadOnlyAccess izin. Untuk informasi selengkapnya, lihat Langkah 1: Siapkan AWS akun dan buat Pengguna.

    2. Instal dan konfigurasikan AWS CLI dan AWS SDKs. Untuk informasi selengkapnya, lihat Langkah 2: Mengatur AWS CLI dan AWS SDKs.

  2. Unggah citra (yang berisi satu atau beberapa wajah) ke bucket S3 Anda.

    Untuk petunjuk, lihat Mengunggah Objek ke Amazon S3 di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

  3. Gunakan contoh berikut untuk memanggil operasi SearchFacesByImage.

    Java

    Contoh ini menampilkan informasi tentang wajah yang cocok dengan wajah terbesar dalam citra. Contoh kode menentukan kedua parameter FaceMatchThreshold dan MaxFaces untuk membatasi hasil yang ditampilkan dalam respons.

    Dalam contoh berikut, lakukan perubahan berikut: ubah nilai collectionId dengan koleksi yang ingin Anda cari, ubah nilai bucket dengan bucket yang berisi citra input, dan ubah nilai photo dengan citra input.

    //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(); } } }
    Java V2

    Kode ini diambil dari GitHub repositori SDK contoh AWS Dokumentasi. Lihat contoh lengkapnya di sini.

    // snippet-start:[rekognition.java2.search_faces_collection.import] import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider; import software.amazon.awssdk.core.SdkBytes; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.rekognition.RekognitionClient; import software.amazon.awssdk.services.rekognition.model.RekognitionException; import software.amazon.awssdk.services.rekognition.model.SearchFacesByImageRequest; import software.amazon.awssdk.services.rekognition.model.Image; import software.amazon.awssdk.services.rekognition.model.SearchFacesByImageResponse; import software.amazon.awssdk.services.rekognition.model.FaceMatch; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.List; // snippet-end:[rekognition.java2.search_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 SearchFaceMatchingImageCollection { 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 sourceImage = 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"); searchFaceInCollection(rekClient, collectionId, sourceImage ) ; rekClient.close(); } // snippet-start:[rekognition.java2.search_faces_collection.main] public static void searchFaceInCollection(RekognitionClient rekClient,String collectionId, String sourceImage) { try { InputStream sourceStream = new FileInputStream(new File(sourceImage)); SdkBytes sourceBytes = SdkBytes.fromInputStream(sourceStream); Image souImage = Image.builder() .bytes(sourceBytes) .build(); SearchFacesByImageRequest facesByImageRequest = SearchFacesByImageRequest.builder() .image(souImage) .maxFaces(10) .faceMatchThreshold(70F) .collectionId(collectionId) .build(); SearchFacesByImageResponse imageResponse = rekClient.searchFacesByImage(facesByImageRequest) ; 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 | FileNotFoundException e) { System.out.println(e.getMessage()); System.exit(1); } } // snippet-end:[rekognition.java2.search_faces_collection.main] }
    AWS CLI

    AWS CLI Perintah ini menampilkan JSON output untuk search-faces-by-image CLI operasi. Ganti nilai Bucket dengan bucket S3 yang Anda gunakan pada langkah 2. Ganti nilai Name dengan nama file citra yang Anda gunakan pada langkah 2. Ganti nilai collection-id dengan koleksi yang ingin Anda lakukan pencarian. Ganti nilai profile_name di baris yang membuat sesi Rekognition dengan nama profil pengembang Anda.

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

    Jika Anda mengakses perangkat Windows, gunakan tanda kutip ganda alih-alih tanda kutip tunggal dan hindari tanda kutip ganda bagian dalam dengan garis miring terbalik (yaitu\) untuk mengatasi kesalahan parser yang mungkin Anda temui. CLI Sebagai contoh, lihat berikut ini:

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

    Contoh ini menampilkan informasi tentang wajah yang cocok dengan wajah terbesar dalam citra. Contoh kode menentukan kedua parameter FaceMatchThreshold dan MaxFaces untuk membatasi hasil yang ditampilkan dalam respons.

    Dalam contoh berikut, lakukan perubahan berikut: ubah nilai collectionId dengan koleksi yang ingin Anda cari, dan ganti nilai bucket dan photo dengan nama bucket Amazon S3 dan citra yang Anda gunakan pada Langkah 2. Ganti nilai profile_name di baris yang membuat sesi Rekognition dengan nama profil pengembang Anda.

    #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

    Contoh ini menampilkan informasi tentang wajah yang cocok dengan wajah terbesar dalam citra. Contoh kode menentukan kedua parameter FaceMatchThreshold dan MaxFaces untuk membatasi hasil yang ditampilkan dalam respons.

    Dalam contoh berikut, lakukan perubahan berikut: ubah nilai collectionId dengan koleksi yang ingin Anda cari, dan ganti nilai-nilai bucket dan photo dengan nama bucket Amazon S3 dan citra yang Anda gunakan pada langkah 2.

    //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 permintaan operasi

Parameter input pada SearchFacesImageByImage adalah koleksi untuk mencari dan lokasi citra sumber. Dalam contoh ini, citra sumber disimpan dalam sebuah bucket Amazon S3 (S3Object). Yang juga ditentukan adalah wajah maksimal yang dikembalikan (Maxfaces) dan kepercayaan minimal yang harus dicocokkan agar wajah dikirimkan (FaceMatchThreshold).

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

SearchFacesByImage respon operasi

Mengingat citra input (.jpeg atau .png), operasi mendeteksi wajah dalam citra input terlebih dahulu, kemudian mencari koleksi wajah yang ditentukan untuk wajah yang serupa.

catatan

Jika layanan mendeteksi beberapa wajah pada citra input, layanan ini menggunakan wajah terbesar yang terdeteksi untuk mencari koleksi wajah.

Operasi tersebut mengirimkan array kecocokan wajah yang ditemukan dan informasi tentang wajah input. Termasuk informasi seperti kotak pembatas, bersama dengan nilai kepercayaan, yang menunjukkan tingkat kepercayaan bahwa kotak pembatas berisi wajah.

Secara default, SearchFacesByImage mengirimkan wajah yang algoritmenya mendeteksi kemiripan lebih dari 80%. Kemiripan menunjukkan seberapa cocok wajah tersebut dengan wajah input. Anda juga dapat menggunakan FaceMatchThreshold untuk menentukan nilai yang berbeda. Untuk setiap kecocokan wajah yang ditemukan, respons tersebut meliputi kemiripan dan metadata wajah, seperti yang ditunjukkan dalam respons contoh berikut:

{ "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 }