Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Con Rekognition puoi confrontare i volti tra due immagini usando l'operazione. CompareFaces Questa funzione è utile per applicazioni come la verifica dell'identità o la corrispondenza delle foto.
CompareFaces confronta un volto nell'immagine sorgente con ogni volto nell'immagine di destinazione. Le immagini vengono passate CompareFaces a:
-
Una rappresentazione codificata in base64 di un'immagine.
-
Oggetti Amazon S3.
Riconoscimento facciale e confronto facciale
Il confronto dei volti è diverso dal rilevamento dei volti. Il rilevamento dei volti (che utilizza DetectFaces) identifica solo la presenza e la posizione dei volti in un'immagine o in un video. Al contrario, il confronto dei volti consiste nel confrontare un volto rilevato in un'immagine sorgente con i volti in un'immagine di destinazione per trovare le corrispondenze.
Soglie di somiglianza
Utilizzate il similarityThreshold
parametro per definire il livello minimo di confidenza per le corrispondenze da includere nella risposta. Per impostazione predefinita, nella risposta vengono restituiti solo i volti con un punteggio di somiglianza maggiore o uguale all'80%.
Nota
CompareFaces
utilizza algoritmi di apprendimento automatico, che sono probabilistici. Un falso negativo è una previsione errata secondo cui un volto nell'immagine di destinazione ha un punteggio di confidenza di somiglianza basso rispetto al volto nell'immagine sorgente. Per ridurre la probabilità di falsi negativi, si consiglia di confrontare l'immagine di destinazione con più immagini di origine. Se prevedi di CompareFaces
prendere una decisione che influisca sui diritti, sulla privacy o sull'accesso ai servizi di una persona, ti consigliamo di trasmettere il risultato a un essere umano per la revisione e l'ulteriore convalida prima di agire.
I seguenti esempi di codice mostrano come utilizzare le CompareFaces operazioni per vari. AWS SDKs Nell' AWS CLI esempio, carichi due immagini JPEG nel tuo bucket Amazon S3 e specifichi il nome della chiave dell'oggetto. Negli altri esempi, vengono caricati due file dal file system locale e vengono inseriti come matrici di byte dell'immagine.
Per confrontare i volti
-
Se non lo hai già fatto:
-
Crea o aggiorna un utente con autorizzazioni
AmazonRekognitionFullAccess
eAmazonS3ReadOnlyAccess
(solo a titolo di AWS CLI esempio). Per ulteriori informazioni, consulta Fase 1: impostazione di un account AWS e creazione di un utente. -
Installa e configura il AWS CLI e il AWS SDKs. Per ulteriori informazioni, consulta Passaggio 2: configura AWS CLI e AWS SDKs.
-
-
Utilizza il seguente codice di esempio per richiamare l'operazione
CompareFaces
.Questo esempio visualizza le informazioni sulla corrispondenza dei volti nelle immagini di origine e di destinazione che vengono caricati dal file system locale.
Sostituisci i valori di
sourceImage
etargetImage
con il percorso e il nome di file delle immagini di origine e destinazione.//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.Image; import com.amazonaws.services.rekognition.model.BoundingBox; import com.amazonaws.services.rekognition.model.CompareFacesMatch; import com.amazonaws.services.rekognition.model.CompareFacesRequest; import com.amazonaws.services.rekognition.model.CompareFacesResult; import com.amazonaws.services.rekognition.model.ComparedFace; import java.util.List; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.nio.ByteBuffer; import com.amazonaws.util.IOUtils; public class CompareFaces { public static void main(String[] args) throws Exception{ Float similarityThreshold = 70F; String sourceImage = "source.jpg"; String targetImage = "target.jpg"; ByteBuffer sourceImageBytes=null; ByteBuffer targetImageBytes=null; AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient(); //Load source and target images and create input parameters try (InputStream inputStream = new FileInputStream(new File(sourceImage))) { sourceImageBytes = ByteBuffer.wrap(IOUtils.toByteArray(inputStream)); } catch(Exception e) { System.out.println("Failed to load source image " + sourceImage); System.exit(1); } try (InputStream inputStream = new FileInputStream(new File(targetImage))) { targetImageBytes = ByteBuffer.wrap(IOUtils.toByteArray(inputStream)); } catch(Exception e) { System.out.println("Failed to load target images: " + targetImage); System.exit(1); } Image source=new Image() .withBytes(sourceImageBytes); Image target=new Image() .withBytes(targetImageBytes); CompareFacesRequest request = new CompareFacesRequest() .withSourceImage(source) .withTargetImage(target) .withSimilarityThreshold(similarityThreshold); // Call operation CompareFacesResult compareFacesResult=rekognitionClient.compareFaces(request); // Display results List <CompareFacesMatch> faceDetails = compareFacesResult.getFaceMatches(); for (CompareFacesMatch match: faceDetails){ ComparedFace face= match.getFace(); BoundingBox position = face.getBoundingBox(); System.out.println("Face at " + position.getLeft().toString() + " " + position.getTop() + " matches with " + match.getSimilarity().toString() + "% confidence."); } List<ComparedFace> uncompared = compareFacesResult.getUnmatchedFaces(); System.out.println("There was " + uncompared.size() + " face(s) that did not match"); } }
CompareFaces richiesta di operazione
L'input per CompareFaces
è un'immagine. In questo esempio, le immagini di origine e di destinazione vengono caricate dal file system locale. Il parametro di input SimilarityThreshold
specifica l'affidabilità minima che i volti confrontati devono corrispondere per essere inclusi nella risposta. Per ulteriori informazioni, consulta Lavorare con le immagini.
{
"SourceImage": {
"Bytes": "/9j/4AAQSk2Q==..."
},
"TargetImage": {
"Bytes": "/9j/4O1Q==..."
},
"SimilarityThreshold": 70
}
CompareFaces risposta operativa
La risposta include:
-
Una serie di corrispondenze facciali: un elenco di volti abbinati con punteggi di somiglianza e metadati per ogni faccia corrispondente. Se più facce coincidono,
faceMatches
l'array include tutte le corrispondenze facciali.
-
Dettagli della corrispondenza facciale: ogni faccia abbinata fornisce anche un riquadro di delimitazione, un valore di confidenza, punti di riferimento e un punteggio di somiglianza.
-
Un elenco di volti non corrispondenti: la risposta include anche volti dell'immagine di destinazione che non corrispondono al volto dell'immagine di origine. Include un riquadro di delimitazione per ogni faccia non corrispondente.
-
Informazioni sul volto di origine: include informazioni sul volto tratte dall'immagine sorgente utilizzata per il confronto, inclusi il riquadro di delimitazione e il valore di confidenza.
L'esempio mostra che è stata trovata una corrispondenza facciale nell'immagine di destinazione. Per la corrispondenza del volto, fornisce un riquadro di delimitazione e un valore di affidabilità (il livello di affidabilità che Amazon Rekognition ha nel fatto che il riquadro di delimitazione contenga un volto). Il punteggio di somiglianza di 99,99 indica la somiglianza dei volti. L'esempio mostra anche un volto che Amazon Rekognition ha trovato nell'immagine di destinazione che non corrisponde al volto analizzato nell'immagine di origine.
{
"FaceMatches": [{
"Face": {
"BoundingBox": {
"Width": 0.5521978139877319,
"Top": 0.1203877404332161,
"Left": 0.23626373708248138,
"Height": 0.3126954436302185
},
"Confidence": 99.98751068115234,
"Pose": {
"Yaw": -82.36799621582031,
"Roll": -62.13221740722656,
"Pitch": 0.8652129173278809
},
"Quality": {
"Sharpness": 99.99880981445312,
"Brightness": 54.49755096435547
},
"Landmarks": [{
"Y": 0.2996366024017334,
"X": 0.41685718297958374,
"Type": "eyeLeft"
},
{
"Y": 0.2658946216106415,
"X": 0.4414493441581726,
"Type": "eyeRight"
},
{
"Y": 0.3465650677680969,
"X": 0.48636093735694885,
"Type": "nose"
},
{
"Y": 0.30935320258140564,
"X": 0.6251809000968933,
"Type": "mouthLeft"
},
{
"Y": 0.26942989230155945,
"X": 0.6454493403434753,
"Type": "mouthRight"
}
]
},
"Similarity": 100.0
}],
"SourceImageOrientationCorrection": "ROTATE_90",
"TargetImageOrientationCorrection": "ROTATE_90",
"UnmatchedFaces": [{
"BoundingBox": {
"Width": 0.4890109896659851,
"Top": 0.6566604375839233,
"Left": 0.10989011079072952,
"Height": 0.278298944234848
},
"Confidence": 99.99992370605469,
"Pose": {
"Yaw": 51.51519012451172,
"Roll": -110.32493591308594,
"Pitch": -2.322134017944336
},
"Quality": {
"Sharpness": 99.99671173095703,
"Brightness": 57.23163986206055
},
"Landmarks": [{
"Y": 0.8288310766220093,
"X": 0.3133862614631653,
"Type": "eyeLeft"
},
{
"Y": 0.7632885575294495,
"X": 0.28091415762901306,
"Type": "eyeRight"
},
{
"Y": 0.7417283654212952,
"X": 0.3631140887737274,
"Type": "nose"
},
{
"Y": 0.8081989884376526,
"X": 0.48565614223480225,
"Type": "mouthLeft"
},
{
"Y": 0.7548204660415649,
"X": 0.46090251207351685,
"Type": "mouthRight"
}
]
}],
"SourceImageFace": {
"BoundingBox": {
"Width": 0.5521978139877319,
"Top": 0.1203877404332161,
"Left": 0.23626373708248138,
"Height": 0.3126954436302185
},
"Confidence": 99.98751068115234
}
}