Agregar rostros a una colección
Puede utilizar la operación IndexFaces para detectar rostros en una imagen y añadirlas a una colección. Para cada rostro detectado, Amazon Rekognition extrae los rasgos faciales y almacena la información de rasgos en una base de datos. Además, el comando almacena los metadatos de cada uno de los rostros detectados en la colección de rostros especificada. Amazon Rekognition no conserva los bytes de las imágenes reales.
Para obtener información acerca de cómo proporcionar rostros adecuados para su indexación, consulte Recomendaciones para la comparación de rostros en las imágenes de entrada.
Para cada rostro, la operación IndexFaces
conserva la siguiente información:
-
Rasgos faciales multidimensionales:
IndexFaces
usa análisis faciales para extraer información multidimensional sobre los rasgos faciales y almacena la información en la colección de rostros. No se tiene acceso a esta información directamente. Sin embargo, Amazon Rekognition utiliza esta información cuando busca rostros coincidentes en una colección de rostros. -
Metadatos: los metadatos de cada rostro incluyen un cuadro delimitador, un nivel de confianza (de que el cuadro delimitador contiene un rostro), los ID asignados por Amazon Rekognition (ID de rostro e ID de imagen) y un ID de imagen externo (si lo proporciona) en la solicitud. Esta información se devuelve en respuesta a la llamada a la API
IndexFaces
. Para ver un ejemplo, consulte el elementoface
en la siguiente respuesta de ejemplo.El servicio devuelve estos metadatos en respuesta a las siguientes llamadas API:
-
Operaciones de búsqueda de rostros: las respuestas de SearchFaces y SearchFacesByImage devuelven la confianza de cada rostro coincidente, junto con los metadatos del rostro coincidente.
El número de rostros indexada por IndexFaces
depende de la versión del modelo de detección de rostros que esté asociada a la colección de entrada. Para obtener más información, consulte Descripción del control de versiones de los modelos.
La información sobre los rostros indexados se devuelve en una matriz de objetos FaceRecord.
Es posible que desee asociar rostros indexados con la imagen en la que se detectaron. Por ejemplo, es posible que desee mantener un índice en el lado del cliente de imágenes y rostros en las imágenes. Para asociar rostros con una imagen, especifique un ID de imagen en el parámetro de solicitud ExternalImageId
. El ID de imagen puede ser el nombre de archivo u otro ID que cree.
Además de la información anterior que la API conserva en la colección de rostros, la API devuelve también detalles del rostro que no se conservan en la colección. (Consulte el elemento faceDetail
en la siguiente respuesta de ejemplo).
nota
DetectFaces
devuelve la misma información, por lo que no es necesario llamar a DetectFaces
y IndexFaces
para la misma imagen.
Filtrado de rostros
La operación IndexFaces le permite filtrar los rostros que se indexan en una imagen. Con IndexFaces
, puede especificar el número máximo de rostros que desea indexar, o bien indicar que solo se indexen los rostros detectados con un índice de calidad alto.
Puede especificar el número máximo de rostros que se indexan mediante IndexFaces
utilizando el parámetro de entrada MaxFaces
. Esto resulta útil cuando se desea indexar los rostros de mayor tamaño de una imagen, pero no los más pequeños, como, por ejemplo, los de las personas que están de pie en segundo plano.
De forma predeterminada, IndexFaces
selecciona un estándar de calidad que se utiliza para filtrar los rostros. Puede utilizar el parámetro de entrada QualityFilter
para establecer explícitamente el estándar de calidad. Los valores son:
-
AUTO
: Amazon Rekognition elige el estándar de calidad que se usa para filtrar las caras (valor predeterminado). -
LOW
: todos los rostros, excepto los de menor calidad, están indexados. -
MEDIUM
-
HIGH
: solo se indexan los rostros de mayor calidad. -
NONE
: no se filtran rostros en función de la calidad.
IndexFaces
filtra rostros basándose en lo siguiente:
-
El rostro es demasiado pequeño en comparación con las dimensiones de la imagen.
-
El rostro está demasiado borroso.
-
La imagen es demasiado oscura.
-
El rostro tiene una postura extrema.
-
El rostro no tiene suficiente detalle para incluirse en la búsqueda de rostros.
nota
Para utilizar el filtrado según la calidad, necesita una colección asociada a la versión 3, o posterior, del modelo de rostros. Para obtener la versión del modelo de rostros asociado a una colección, llame a DescribeCollection.
La información sobre los rostros no indexados por IndexFaces
se devuelve en una matriz de objetos UnindexedFace. La matriz Reasons
contiene una lista de razones por las que un rostro no se ha indexado. Por ejemplo, el valor EXCEEDS_MAX_FACES
significa que un rostro no se ha indexado porque ya se ha detectado el número de rostros especificado por MaxFaces
.
Para obtener más información, consulte Administración de rostros en una colección.
Para agregar rostros a una colección (SDK)
-
Si aún no lo ha hecho:
-
Cree o actualice un usuario con los permisos
AmazonRekognitionFullAccess
yAmazonS3ReadOnlyAccess
. 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.
-
-
Suba una imagen (que contenga uno o varios rostros) en su bucket de Amazon S3.
Para ver las instrucciones, consulte Carga de objetos en Amazon S3 en la Guía del usuario de Amazon Simple Storage Service.
-
Consulte los siguientes ejemplos para llamar a la operación
IndexFaces
.
Solicitud de operación IndexFaces
La entrada de IndexFaces
es la imagen que se va a indexar y la colección a la que se añadirá el rostro o los rostros.
{ "CollectionId": "MyCollection", "Image": { "S3Object": { "Bucket": "bucket", "Name": "input.jpg" } }, "ExternalImageId": "input.jpg", "DetectionAttributes": [ "DEFAULT" ], "MaxFaces": 1, "QualityFilter": "AUTO" }
Respuesta de la operación IndexFaces
IndexFaces
devuelve información sobre los rostros que se han detectado en la imagen. Por ejemplo, la siguiente respuesta de JSON incluye los atributos de detección predeterminados para los rostros detectados en la imagen de entrada. El ejemplo también muestra rostros no indexados porque se ha superado el valor del parámetro de entrada MaxFaces
: la matriz Reasons
contiene EXCEEDS_MAX_FACES. Si un rostro no se indexa por razones de calidad, Reasons
contiene valores como LOW_SHARPNESS o LOW_BRIGHTNESS. Para obtener más información, consulte UnindexedFace.
{ "FaceModelVersion": "3.0", "FaceRecords": [ { "Face": { "BoundingBox": { "Height": 0.3247932195663452, "Left": 0.5055555701255798, "Top": 0.2743072211742401, "Width": 0.21444444358348846 }, "Confidence": 99.99998474121094, "ExternalImageId": "input.jpg", "FaceId": "b86e2392-9da1-459b-af68-49118dc16f87", "ImageId": "09f43d92-02b6-5cea-8fbd-9f187db2050d" }, "FaceDetail": { "BoundingBox": { "Height": 0.3247932195663452, "Left": 0.5055555701255798, "Top": 0.2743072211742401, "Width": 0.21444444358348846 }, "Confidence": 99.99998474121094, "Landmarks": [ { "Type": "eyeLeft", "X": 0.5751981735229492, "Y": 0.4010535478591919 }, { "Type": "eyeRight", "X": 0.6511467099189758, "Y": 0.4017036259174347 }, { "Type": "nose", "X": 0.6314528584480286, "Y": 0.4710812568664551 }, { "Type": "mouthLeft", "X": 0.5879443287849426, "Y": 0.5171778798103333 }, { "Type": "mouthRight", "X": 0.6444502472877502, "Y": 0.5164633989334106 } ], "Pose": { "Pitch": -10.313642501831055, "Roll": -1.0316886901855469, "Yaw": 18.079818725585938 }, "Quality": { "Brightness": 71.2919921875, "Sharpness": 78.74752044677734 } } } ], "OrientationCorrection": "", "UnindexedFaces": [ { "FaceDetail": { "BoundingBox": { "Height": 0.1329464465379715, "Left": 0.5611110925674438, "Top": 0.6832437515258789, "Width": 0.08777777850627899 }, "Confidence": 92.37225341796875, "Landmarks": [ { "Type": "eyeLeft", "X": 0.5796897411346436, "Y": 0.7452847957611084 }, { "Type": "eyeRight", "X": 0.6078574657440186, "Y": 0.742687463760376 }, { "Type": "nose", "X": 0.597953200340271, "Y": 0.7620673179626465 }, { "Type": "mouthLeft", "X": 0.5884202122688293, "Y": 0.7920381426811218 }, { "Type": "mouthRight", "X": 0.60627681016922, "Y": 0.7919750809669495 } ], "Pose": { "Pitch": 15.658954620361328, "Roll": -4.583454608917236, "Yaw": 10.558992385864258 }, "Quality": { "Brightness": 42.54612350463867, "Sharpness": 86.93206024169922 } }, "Reasons": [ "EXCEEDS_MAX_FACES" ] } ] }
Para obtener toda la información facial, especifique "ALL" para el parámetro de solicitud DetectionAttributes
. Por ejemplo, en la siguiente respuesta de ejemplo, tenga en cuenta la información adicional del elemento faceDetail
, que no se almacena de forma persistente en el servidor:
-
25 referencias faciales (en comparación con las cinco del ejemplo anterior)
-
Diez atributos faciales (gafas, barba, oclusión, dirección de la mirada, etc.)
-
Emociones (véase el elemento
emotion
)
El elemento face
proporciona metadatos que se almacenan de forma persistente en el servidor.
FaceModelVersion
es la versión del modelo de rostros asociado a la colección. Para obtener más información, consulte Descripción del control de versiones de los modelos.
OrientationCorrection
es la orientación estimada de la imagen. No se devolverá información de corrección de la orientación si utiliza una versión del modelo de detección facial posterior a la versión 3. Para obtener más información, consulte Obtención de coordenadas de cuadro delimitador y orientación de imagen.
El siguiente ejemplo de respuesta muestra el JSON devuelto al especificar ["ALL"]:
{ "FaceModelVersion": "3.0", "FaceRecords": [ { "Face": { "BoundingBox": { "Height": 0.06333333253860474, "Left": 0.17185185849666595, "Top": 0.7366666793823242, "Width": 0.11061728745698929 }, "Confidence": 99.99999237060547, "ExternalImageId": "input.jpg", "FaceId": "578e2e1b-d0b0-493c-aa39-ba476a421a34", "ImageId": "9ba38e68-35b6-5509-9d2e-fcffa75d1653" }, "FaceDetail": { "AgeRange": { "High": 25, "Low": 15 }, "Beard": { "Confidence": 99.98077392578125, "Value": false }, "BoundingBox": { "Height": 0.06333333253860474, "Left": 0.17185185849666595, "Top": 0.7366666793823242, "Width": 0.11061728745698929 }, "Confidence": 99.99999237060547, "Emotions": [ { "Confidence": 95.40877532958984, "Type": "HAPPY" }, { "Confidence": 6.6088080406188965, "Type": "CALM" }, { "Confidence": 0.7385611534118652, "Type": "SAD" } ], "EyeDirection": { "yaw": 16.299732, "pitch": -6.407457, "confidence": 99.968704 } "Eyeglasses": { "Confidence": 99.96795654296875, "Value": false }, "EyesOpen": { "Confidence": 64.0671157836914, "Value": true }, "Gender": { "Confidence": 100, "Value": "Female" }, "Landmarks": [ { "Type": "eyeLeft", "X": 0.21361233294010162, "Y": 0.757106363773346 }, { "Type": "eyeRight", "X": 0.2518567442893982, "Y": 0.7599404454231262 }, { "Type": "nose", "X": 0.2262365221977234, "Y": 0.7711842060089111 }, { "Type": "mouthLeft", "X": 0.2050037682056427, "Y": 0.7801263332366943 }, { "Type": "mouthRight", "X": 0.2430567592382431, "Y": 0.7836716771125793 }, { "Type": "leftPupil", "X": 0.2161938101053238, "Y": 0.756662905216217 }, { "Type": "rightPupil", "X": 0.2523181438446045, "Y": 0.7603650689125061 }, { "Type": "leftEyeBrowLeft", "X": 0.20066319406032562, "Y": 0.7501518130302429 }, { "Type": "leftEyeBrowUp", "X": 0.2130996286869049, "Y": 0.7480520606040955 }, { "Type": "leftEyeBrowRight", "X": 0.22584207355976105, "Y": 0.7504606246948242 }, { "Type": "rightEyeBrowLeft", "X": 0.24509544670581818, "Y": 0.7526801824569702 }, { "Type": "rightEyeBrowUp", "X": 0.2582615911960602, "Y": 0.7516844868659973 }, { "Type": "rightEyeBrowRight", "X": 0.26881539821624756, "Y": 0.7554477453231812 }, { "Type": "leftEyeLeft", "X": 0.20624476671218872, "Y": 0.7568746209144592 }, { "Type": "leftEyeRight", "X": 0.22105035185813904, "Y": 0.7582521438598633 }, { "Type": "leftEyeUp", "X": 0.21401576697826385, "Y": 0.7553104162216187 }, { "Type": "leftEyeDown", "X": 0.21317370235919952, "Y": 0.7584449648857117 }, { "Type": "rightEyeLeft", "X": 0.24393919110298157, "Y": 0.7600628137588501 }, { "Type": "rightEyeRight", "X": 0.2598416209220886, "Y": 0.7605880498886108 }, { "Type": "rightEyeUp", "X": 0.2519053518772125, "Y": 0.7582084536552429 }, { "Type": "rightEyeDown", "X": 0.25177454948425293, "Y": 0.7612871527671814 }, { "Type": "noseLeft", "X": 0.2185886949300766, "Y": 0.774715781211853 }, { "Type": "noseRight", "X": 0.23328955471515656, "Y": 0.7759330868721008 }, { "Type": "mouthUp", "X": 0.22446128726005554, "Y": 0.7805567383766174 }, { "Type": "mouthDown", "X": 0.22087252140045166, "Y": 0.7891407608985901 } ], "MouthOpen": { "Confidence": 95.87068939208984, "Value": false }, "Mustache": { "Confidence": 99.9828109741211, "Value": false }, "Pose": { "Pitch": -0.9409101605415344, "Roll": 7.233824253082275, "Yaw": -2.3602254390716553 }, "Quality": { "Brightness": 32.01998519897461, "Sharpness": 93.67259216308594 }, "Smile": { "Confidence": 86.7142105102539, "Value": true }, "Sunglasses": { "Confidence": 97.38925170898438, "Value": false } } } ], "OrientationCorrection": "ROTATE_0" "UnindexedFaces": [] }