Búsqueda de un rostro con un ID de rostro
Puede utilizar la operación SearchFaces para buscar usuarios en una colección que coincida con el rostro de mayor tamaño en una imagen suministrada.
El ID de rostro se devuelve en la respuesta de la operación IndexFaces cuando el rostro se detecta y se añade a una colección. Para obtener más información, consulte Administración de rostros en una colección.
Para buscar un rostro en una colección con su ID de rostro (SDK)
-
Si aún no lo ha hecho:
-
Cree o actualice un usuario de AmazonRekognitionFullAccess
con permisos. Para obtener más información, consulte Paso 1: Configurar una cuenta de AWS y crear un usuario.
-
Instale y configure la AWS CLI y los AWS SDK. Para obtener más información, consulte Paso 2: Configurar la AWS CLI y los AWS SDK.
-
Consulte los siguientes ejemplos para llamar a la operación SearchFaces
.
- Java
-
Este ejemplo muestra información acerca de los rostros que coinciden con un rostro identificado por su ID.
Cambie el valor de collectionID
por la colección que contiene el rostro requerido. Cambie el valor de faceId
por el identificador del rostro que desea buscar.
//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();
}
}
}
Ejecute el código de ejemplo. Se muestra información sobre rostros coincidentes.
- Java V2
-
Este código se ha tomado del repositorio GitHub de ejemplos del SDK de documentación AWS. Consulte el ejemplo completo aquí.
// 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
-
Este comando AWS CLI indica el resultado de JSON para la operación search-faces
de la CLI. Reemplace el valor de face-id
por el identificador del rostro que desea buscar y reemplace el valor de collection-id
por la colección en la que desea buscar. Sustituya el valor de profile_name
en la línea que crea la sesión de Rekognition por el nombre de su perfil de desarrollador.
aws rekognition search-faces --face-id face-id --collection-id "collection-id" --profile profile-name
- Python
-
Este ejemplo muestra información acerca de los rostros que coinciden con un rostro identificado por su ID.
Cambie el valor de collectionID
por la colección que contiene el rostro requerido. Cambie el valor de faceId
por el identificador del rostro que desea buscar. Sustituya el valor de profile_name
en la línea que crea la sesión de Rekognition por el nombre de su perfil de desarrollador.
# 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
-
Este ejemplo muestra información acerca de los rostros que coinciden con un rostro identificado por su ID.
Cambie el valor de collectionID
por la colección que contiene el rostro requerido. Cambie el valor de faceId
por el identificador del rostro que desea buscar.
//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);
}
}
Ejecute el código de ejemplo. Se muestra información sobre rostros coincidentes.
Solicitud de operación SearchFaces
Dado un ID de rostro (cada rostro almacenado en una colección de rostros tiene un ID de rostro), SearchFaces
busca rostros similares en la colección de rostros especificada. La respuesta no incluye el rostro que está buscando. Incluye solo rostros similares. De forma predeterminada, SearchFaces
devuelve rostros para los que el algoritmo detecta una similitud superior al 80%. La similitud indica la exactitud con la que los rostros encontrados coinciden con el rostro de entrada. Si lo prefiere, puede utilizar FaceMatchThreshold
para especificar un valor diferente.
{
"CollectionId": "MyCollection",
"FaceId": "0b683aed-a0f1-48b2-9b5e-139e9cc2a757",
"MaxFaces": 2,
"FaceMatchThreshold": 99
}
Respuesta de la operación SearchFaces
La operación devuelve una matriz de los rostros coincidentes encontrados y el ID del rostro que proporcionó como entrada.
{
"SearchedFaceId": "7ecf8c19-5274-5917-9c91-1db9ae0449e2",
"FaceMatches": [ list of face matches found
]
}
Para cada rostro coincidente encontrado, la respuesta incluye metadatos de similitud y de rostro, como se muestra en la siguiente respuesta de ejemplo:
{
...
"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"
}
}
]
}