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)
-
Jika belum:
-
Buat atau perbarui pengguna dengan AmazonRekognitionFullAccess
dan AmazonS3ReadOnlyAccess
izin. Untuk informasi selengkapnya, lihat Langkah 1: Siapkan AWS akun dan buat Pengguna.
-
Instal dan konfigurasikan AWS CLI dan AWS SDKs. Untuk informasi selengkapnya, lihat Langkah 2: Siapkan AWS CLI and AWS SDKs.
-
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.
-
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.
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
}