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à.
Amazon Rekognition Image DetectFacesfornisce l'operazione che cerca le caratteristiche principali del viso come occhi, naso e bocca per rilevare i volti in un'immagine di input. Immagini Amazon Rekognition rileva le 100 facce più grandi di un'immagine.
Puoi fornire un'immagine di input come matrice di byte dell'immagine (byte dell'immagine codificata in formato Base64) o specificare un oggetto di Amazon S3. In questa procedura, viene caricata un'immagine (JPEG o PNG) nel bucket S3 e viene specificato il nome chiave dell'oggetto.
Per rilevare volti in un'immagine
-
Se non lo hai già fatto:
-
Crea o aggiorna un utente con le autorizzazioni
AmazonRekognitionFullAccess
eAmazonS3ReadOnlyAccess
. Per ulteriori informazioni, consulta Fase 1: impostazione di un account AWS e creazione di un utente. -
Installa e configura il e il. AWS CLI AWS SDKs Per ulteriori informazioni, consulta Passaggio 2: configura AWS CLI e AWS SDKs.
-
-
Carica un'immagine (contenente uno o più volti) nel bucket S3.
Per le istruzioni, consulta Caricamento di oggetti in Amazon S3 nella Guida per l'utente di Amazon Simple Storage Service.
-
Utilizza i seguenti esempi per richiamare
DetectFaces
.In questo esempio viene visualizzato l'intervallo di età stimato per i volti rilevati e sono elencati i JSON per tutti gli attributi facciali rilevati. Modifica il valore di
photo
nel nome del file immagine. Modifica il valore diamzn-s3-demo-bucket
nel bucket Amazon S3 dove è archiviata l'immagine.//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.AmazonRekognitionException; import com.amazonaws.services.rekognition.model.Image; import com.amazonaws.services.rekognition.model.S3Object; import com.amazonaws.services.rekognition.model.AgeRange; import com.amazonaws.services.rekognition.model.Attribute; import com.amazonaws.services.rekognition.model.DetectFacesRequest; import com.amazonaws.services.rekognition.model.DetectFacesResult; import com.amazonaws.services.rekognition.model.FaceDetail; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; public class DetectFaces { public static void main(String[] args) throws Exception { String photo = "input.jpg"; String bucket = "bucket"; AmazonRekognition rekognitionClient = AmazonRekognitionClientBuilder.defaultClient(); DetectFacesRequest request = new DetectFacesRequest() .withImage(new Image() .withS3Object(new S3Object() .withName(photo) .withBucket(bucket))) .withAttributes(Attribute.ALL); // Replace Attribute.ALL with Attribute.DEFAULT to get default values. try { DetectFacesResult result = rekognitionClient.detectFaces(request); List < FaceDetail > faceDetails = result.getFaceDetails(); for (FaceDetail face: faceDetails) { if (request.getAttributes().contains("ALL")) { AgeRange ageRange = face.getAgeRange(); System.out.println("The detected face is estimated to be between " + ageRange.getLow().toString() + " and " + ageRange.getHigh().toString() + " years old."); System.out.println("Here's the complete set of attributes:"); } else { // non-default attributes have null values. System.out.println("Here's the default set of attributes:"); } ObjectMapper objectMapper = new ObjectMapper(); System.out.println(objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(face)); } } catch (AmazonRekognitionException e) { e.printStackTrace(); } } }
DetectFaces richiesta di operazione
L'input per DetectFaces
è un'immagine. In questo esempio, l'immagine viene caricata da un bucket Amazon S3. Il parametro Attributes
specifica che tutti gli attributi facciali devono essere restituiti. Per ulteriori informazioni, consulta Lavorare con le immagini.
{
"Image": {
"S3Object": {
"Bucket": "amzn-s3-demo-bucket",
"Name": "input.jpg"
}
},
"Attributes": [
"ALL"
]
}
DetectFaces risposta operativa
DetectFaces
restituisce le informazioni riportate di seguito per ogni volto rilevato:
-
Riquadro di delimitazione – Le coordinate del riquadro di delimitazione che circonda il volto.
-
Affidabilità – Il livello di affidabilità che il riquadro di delimitazione contenga un volto.
-
Punti di riferimento facciali – Matrice di punti di riferimento del volto. Per ogni punto di riferimento (come ad esempio occhio sinistro, occhio destro e bocca) la risposta fornisce le coordinate x e y.
-
Attributi facciali – Un insieme di attributi facciali, ad esempio se il viso è occluso, restituito come un
FaceDetail
oggetto. Il set include: Beard AgeRange, Emotions EyeDirection, occhiali da vista,, genere EyesOpen FaceOccluded, baffi MouthOpen, sorriso e occhiali da sole. Per ogni attributo, la risposta fornisce un valore. Il valore può essere di diverso tipo, ad esempio un valore booleano (se una persona indossa occhiali da sole), una stringa (se la persona è maschio o femmina), o un valore angolare in gradi (per le direzioni di sguardo pitch/yaw). Inoltre, per la maggior parte degli attributi la risposta fornisce anche un livello di affidabilità nel valore rilevato per l'attributo. Tieni presente che, sebbene EyeDirection gli attributi FaceOccluded e siano supportati durante l'utilizzoDetectFaces
, non lo sono quando si analizzano video con e.StartFaceDetection
GetFaceDetection
-
Qualità – Descrive la luminosità e la nitidezza del volto. Per informazioni su come garantire un rilevamento facciale ottimale, consulta Raccomandazioni per immagini di input di confronto di volti.
-
Posa – Descrive la rotazione del volto all'interno dell'immagine.
La richiesta può descrivere una serie di attributi facciali che desideri vengano restituiti. Verrà sempre restituito un DEFAULT
sottoinsieme di attributi facciali - BoundingBox
, Confidence
, Pose
, Quality
e Landmarks
. Puoi richiedere la restituzione di attributi facciali specifici (oltre all'elenco predefinito), utilizzando ["DEFAULT", "FACE_OCCLUDED", "EYE_DIRECTION"]
o solo un attributo, come["FACE_OCCLUDED"]
. Puoi richiedere tutti gli attributi facciali utilizzando ["ALL"]
. La richiesta di più attributi può aumentare i tempi di risposta.
Di seguito è riportata una risposta di esempio per la chiamata APIDetectFaces
:
{
"FaceDetails": [
{
"BoundingBox": {
"Width": 0.7919622659683228,
"Height": 0.7510867118835449,
"Left": 0.08881539851427078,
"Top": 0.151064932346344
},
"AgeRange": {
"Low": 18,
"High": 26
},
"Smile": {
"Value": false,
"Confidence": 89.77348327636719
},
"Eyeglasses": {
"Value": true,
"Confidence": 99.99996948242188
},
"Sunglasses": {
"Value": true,
"Confidence": 93.65237426757812
},
"Gender": {
"Value": "Female",
"Confidence": 99.85968780517578
},
"Beard": {
"Value": false,
"Confidence": 77.52591705322266
},
"Mustache": {
"Value": false,
"Confidence": 94.48904418945312
},
"EyesOpen": {
"Value": true,
"Confidence": 98.57169342041016
},
"MouthOpen": {
"Value": false,
"Confidence": 74.33953094482422
},
"Emotions": [
{
"Type": "SAD",
"Confidence": 65.56403350830078
},
{
"Type": "CONFUSED",
"Confidence": 31.277774810791016
},
{
"Type": "DISGUSTED",
"Confidence": 15.553778648376465
},
{
"Type": "ANGRY",
"Confidence": 8.012762069702148
},
{
"Type": "SURPRISED",
"Confidence": 7.621500015258789
},
{
"Type": "FEAR",
"Confidence": 7.243380546569824
},
{
"Type": "CALM",
"Confidence": 5.8196024894714355
},
{
"Type": "HAPPY",
"Confidence": 2.2830512523651123
}
],
"Landmarks": [
{
"Type": "eyeLeft",
"X": 0.30225440859794617,
"Y": 0.41018882393836975
},
{
"Type": "eyeRight",
"X": 0.6439348459243774,
"Y": 0.40341562032699585
},
{
"Type": "mouthLeft",
"X": 0.343580037355423,
"Y": 0.6951127648353577
},
{
"Type": "mouthRight",
"X": 0.6306480765342712,
"Y": 0.6898072361946106
},
{
"Type": "nose",
"X": 0.47164231538772583,
"Y": 0.5763645172119141
},
{
"Type": "leftEyeBrowLeft",
"X": 0.1732882857322693,
"Y": 0.34452149271965027
},
{
"Type": "leftEyeBrowRight",
"X": 0.3655243515968323,
"Y": 0.33231860399246216
},
{
"Type": "leftEyeBrowUp",
"X": 0.2671719491481781,
"Y": 0.31669262051582336
},
{
"Type": "rightEyeBrowLeft",
"X": 0.5613729953765869,
"Y": 0.32813435792922974
},
{
"Type": "rightEyeBrowRight",
"X": 0.7665090560913086,
"Y": 0.3318614959716797
},
{
"Type": "rightEyeBrowUp",
"X": 0.6612788438796997,
"Y": 0.3082450032234192
},
{
"Type": "leftEyeLeft",
"X": 0.2416982799768448,
"Y": 0.4085965156555176
},
{
"Type": "leftEyeRight",
"X": 0.36943578720092773,
"Y": 0.41230902075767517
},
{
"Type": "leftEyeUp",
"X": 0.29974061250686646,
"Y": 0.3971870541572571
},
{
"Type": "leftEyeDown",
"X": 0.30360740423202515,
"Y": 0.42347756028175354
},
{
"Type": "rightEyeLeft",
"X": 0.5755768418312073,
"Y": 0.4081145226955414
},
{
"Type": "rightEyeRight",
"X": 0.7050536870956421,
"Y": 0.39924031496047974
},
{
"Type": "rightEyeUp",
"X": 0.642906129360199,
"Y": 0.39026668667793274
},
{
"Type": "rightEyeDown",
"X": 0.6423097848892212,
"Y": 0.41669243574142456
},
{
"Type": "noseLeft",
"X": 0.4122826159000397,
"Y": 0.5987403392791748
},
{
"Type": "noseRight",
"X": 0.5394935011863708,
"Y": 0.5960900187492371
},
{
"Type": "mouthUp",
"X": 0.478581964969635,
"Y": 0.6660456657409668
},
{
"Type": "mouthDown",
"X": 0.483366996049881,
"Y": 0.7497162818908691
},
{
"Type": "leftPupil",
"X": 0.30225440859794617,
"Y": 0.41018882393836975
},
{
"Type": "rightPupil",
"X": 0.6439348459243774,
"Y": 0.40341562032699585
},
{
"Type": "upperJawlineLeft",
"X": 0.11031254380941391,
"Y": 0.3980775475502014
},
{
"Type": "midJawlineLeft",
"X": 0.19301874935626984,
"Y": 0.7034031748771667
},
{
"Type": "chinBottom",
"X": 0.4939905107021332,
"Y": 0.8877836465835571
},
{
"Type": "midJawlineRight",
"X": 0.7990140914916992,
"Y": 0.6899225115776062
},
{
"Type": "upperJawlineRight",
"X": 0.8548634648323059,
"Y": 0.38160091638565063
}
],
"Pose": {
"Roll": -5.83309268951416,
"Yaw": -2.4244730472564697,
"Pitch": 2.6216139793395996
},
"Quality": {
"Brightness": 96.16363525390625,
"Sharpness": 95.51618957519531
},
"Confidence": 99.99872589111328,
"FaceOccluded": {
"Value": true,
"Confidence": 99.99726104736328
},
"EyeDirection": {
"Yaw": 16.299732,
"Pitch": -6.407457,
"Confidence": 99.968704
}
}
],
"ResponseMetadata": {
"RequestId": "8bf02607-70b7-4f20-be55-473fe1bba9a2",
"HTTPStatusCode": 200,
"HTTPHeaders": {
"x-amzn-requestid": "8bf02607-70b7-4f20-be55-473fe1bba9a2",
"content-type": "application/x-amz-json-1.1",
"content-length": "3409",
"date": "Wed, 26 Apr 2023 20:18:50 GMT"
},
"RetryAttempts": 0
}
}
Tieni presente quanto segue:
-
I dati
Pose
descrivono la rotazione del volto rilevato. È possibile utilizzare la combinazione dei datiBoundingBox
ePose
per tracciare il riquadro di delimitazione intorno ai volti visualizzati nell'applicazione. -
L'operazione
Quality
descrive la luminosità e la nitidezza del volto. Può risultare utile per confrontare i volti delle varie immagini e trovare quello migliore. -
La precedente risposta mostra tutti i
landmarks
facciali che il servizio è in grado di rilevare, tutti gli attributi facciali e le emozioni. Affinché la risposta comprenda tutti questi elementi, occorre specificare il parametroattributes
con il valoreALL
. Per impostazione predefinita, l'APIDetectFaces
restituisce solo questi cinque attributi:BoundingBox
,Confidence
,Pose
,Quality
elandmarks
. I punti di riferimento predefiniti restituiti sono:eyeLeft
,eyeRight
nose
,mouthLeft
emouthRight
.