DEV Community

Max Zeballos for AWS UG ML Latam

Posted on • Updated on

Amazon Rekognition: Guía rápida

Motivación

En la actualidad las aplicaciones necesitan una mayor velocidad de desarrollo. La inclusión de funcionalidades que implican el uso de machine learning se ha vuelto cada vez mayor.

Amazon Web Services a desarrollado un conjunto de servicios que te permiten rápidamente agregar características de machine learning a tus aplicaciones.

Con Amazon Rekognition puedes integrar de manera sencilla y rápida el análisis de imágenes y video a tus aplicaciones. Este servicio utiliza deep learning para el entrenamiento de sus algoritmos, pero no requiere conocimientos en inteligencia artificial para su uso.

Introducción

Amazon Rekognition provee de un conjunto de APIs con las que podemos interactuar y obtener resultados sobre el análisis de imágenes y videos. Estas APIs retornan como respuesta la inferencia que realiza sobre los datos que le enviamos a modelos entrenados por los expertos que trabajan en AWS.

Características

En esta sección vamos a revisar las capacidades del servicio y su uso a través de Python

1 Detección de objetos

A través de esta api podemos obtener información acerca de los objetos dentro de imagenes y videos, así como también los limites cartesianos dentro de los cuales se encuentra contenido el objeto en la imagen, los llamados bounding box.

A continuación presentare un ejemplo:

Deteccion de objectos

Para lograr este resultado tenemos que enviar la imagen original a la api de Rekognition especificado su localización en Amazon S3, a continuación presentare el código en python haciendo uso de boto3 (la librería oficial para trabajar con python)



rekognition = boto3.client('rekognition')

detectLabelsResponse = rekognition.detect_labels(
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    }
)


Enter fullscreen mode Exit fullscreen mode

En la variable detectLabelsResponse tendremos la respuesta de la API, con las etiquetas correspondientes y las coordenadas de los bounding box correspondientes. Con la información de los bounding box y el uso de una librería de python como PIL podemos dibujar los cuadrados sobre la imagen y tener la imagen del ejemplo.

2 Moderación de contenido

Con la api de moderación de contenido podemos detectar el contenido no seguro o inapropiado, a través de las etiquetas que retorna el API junto a un porcentaje de confiabilidad. Dentro de las categorías principales tenemos las siguientes etiquetas: Explicit Nudity, Suggestive, Violence, Visually Disturbing, Rude Gestures, Drugs, Tobacco, Alcohol, Gambling, Hate Symbols.

Para invocar esta api utilizaremos el siguiente codigo en Python:



rekognition = boto3.client('rekognition')

detectModerationLabelsResponse = rekognition.detect_moderation_labels(
   Image={
       'S3Object': {
           'Bucket': bucketName,
           'Name': imageName,
       }
   }
)


Enter fullscreen mode Exit fullscreen mode

En la variable detectModerationLabelsResponse tendremos la respuesta a la API que contendrá las etiquetas principales mencionadas con anterioridad con algunas etiquetas secundarias y su porcentaje de confiabilidad.

3 Reconocimiento de celebridades

Con la API de reconocimiento de celebridades puede rápidamente identificar personas famosas en imágenes y video. La API tiene la capacidad de detectar a una o varias celebridades dentro de una imagen o frame de video. Por ejemplo podría enviarle al API la siguiente imagen

Reconocimiento de celebridades

La API me retornara como resultado el nombre del famoso, en este caso sera Dwayne Johnson, mas conocido como "La roca". A continuación presentare el código en python.



rekognition = boto3.client('rekognition')

recognizeCelebritiesResponse = rekognition.recognize_celebrities(
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    }
)


Enter fullscreen mode Exit fullscreen mode

En la variable recognizeCelebritiesResponse obtendremos el nombre del famoso junto con un porcentaje de confianza, en esta caso sera: Dwayne Johnson (99.1% confidence).

4 Busquedas de rostros

La Busqueda de rostros te permite reconocer personas dentro de una colección de rostros preestablecido. Esta colección de rostros debe ser creado antes de realizar el llamado a la API. Para que la api de una respuesta correcta el nuevo rostro a reconocer debe pertenecer al de una persona que se encuentra en nuestra colección de rostros, teniendo en cuenta que la imagen a reconocer no necesariamente tiene que ser una existente en nuestra colección de rostros.

La api puede reconocer uno o mas rostros dentro de una imagen como en el ejemplo a continuación donde mostramos los rostros reconocidos dentro de un bounding box.

Reconocimiento de rostros

Para trabajar con esta api es necesario primero crear una colección de rostros, es recomendable tener como mínimo 3 rostros por persona.

Para crear una colección usaremos el siguiente código en python:



rekognition = boto3.client('rekognition')

rekognition.create_collection(
    CollectionId='face-collection'
)


Enter fullscreen mode Exit fullscreen mode

Para agregar rostros a nuestra coleccion:



rekognition.index_faces(
    CollectionId='face-collection',
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    },
    ExternalImageId=personId,
    DetectionAttributes=[
        'DEFAULT',
        ],
    MaxFaces=1,
    QualityFilter='AUTO'
)


Enter fullscreen mode Exit fullscreen mode

Todos los rostros de la misma persona deben tener el mismo ExternalImageId, MaxFaces es el numero máximo de rostros que se va indexar, QualityFilter es el valor de calidad de la imagen, en caso el valor sea AUTO entonces Rekognition decidira si utiliza o no la imagen, DetectionAttributes son los atributos que deseas que se retornen en la API. Puedes encontrar el detalle de estos parametros aqui

Finalmente para realizar un reconocimiento facial en una nueva imagen utilizamos el siguiente código:



searchFacesResponse = rekognition.search_faces_by_image(
    CollectionId='face-collection',
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
    },
    MaxFaces=2,
    FaceMatchThreshold=95
)


Enter fullscreen mode Exit fullscreen mode

En searchFacesResponse tendremos la respuesta de la API con un máximo de 2 rostros reconocidos a un 95% de confiabilidad.

5 Detección de texto

Las imágenes y videos pueden venir acompañados de texto, poder convertir el texto de una imagen o video en caracteres de texto puede ser muy útil en muchas aplicaciones, como por ejemplo detectar imágenes con textos que tengan contenido explicito, otra aplicación es reconocer valores dentro de un texto como vouchers de pago o números de recibos, etc.

Por ejemplo en la siguiente imagen se ha podido reconocer una serie de palabras a través de la API de rekognition.

Deteccion de texto

Para utilizar la API de Rekognition usaremos el siguiente código:



rekognition = boto3.client('rekognition')

detectTextResponse = rekognition.detect_text(
    Image={
        'S3Object': {
            'Bucket': bucketName,
            'Name': imageName,
        }
      },
      Filters={
        'WordFilter': {
            'MinConfidence': 90
        }
      }
)


Enter fullscreen mode Exit fullscreen mode

En la variable detectTextResponse tendremos los textos encontrados con una confiabilidad superior al 90%.

6 Detección de equipo de protección personal

En muchas industrias el tema de la seguridad es importante, llevar el equipo de protección adecuado puede salvar vidas. Otro uso importante que se le dio a esta característica es llevar el equipo de protección necesario para evitar el contagio del COVID-19. Esto demuestra como la tecnología nos puede ayudar al cuidado y protección de la salud.

Aquí les muestro un ejemplo de la detección de equipos de protección:

Deteccion de equipos de proteccion

Para usar la api utilizaremos el siguiente código:



detectPPEResponse = rekognition.detect_protective_equipment(
        Image={
            'S3Object': {
                'Bucket': bucketName,
                'Name': imageName
            }
        },
        SummarizationAttributes={
            'MinConfidence': 90,
            'RequiredEquipmentTypes': [
                'FACE_COVER',
                'HEAD_COVER',
                'HAND_COVER',
            ]
        }
    )


Enter fullscreen mode Exit fullscreen mode

En la variable detectPPEResponse tendremos el resultado a la API, en la imagen se buscara si el rostro, cabeza y manos están cubiertas con un 90% de confiabilidad.

Conclusión

Amazon Rekognition permite acelerar el desarrollo de aplicaciones donde es necesario el uso de análisis sobre imágenes y videos. El uso de esta herramienta no requiere una curva de aprendizaje elevada, solamente requiere leer un poco de documentación y revisar algunos ejemplos. No hay necesidad de tener conocimientos en inteligencia artificial para su uso.

Este blog es parte de una serie: Ir al menu

Top comments (3)

Collapse
 
dennistobar profile image
Dennis Tobar

Hola Max, ¡un saludo!... muy completo tu post :)

¿Sería posible que uno de los tags lo pases a #spanish para que la comunidad en español también lo pueda encontrar?.

Gracias :)

Collapse
 
maxcloud profile image
Max Zeballos

Excelente, gracias muy buen detalle lo agregare!

Collapse
 
dennistobar profile image
Dennis Tobar

Muchas gracias, así la comunidad en español tiene su pequeño nicho por acá y nos podemos leer más fácilmente =).

Saludos =)