Automatice el entrenamiento y la implementación de modelos de etiquetas personalizadas de Amazon Rekognition con AWS Step Functions

Con las etiquetas personalizadas de Amazon Rekognition, puede hacer que Amazon Rekognition entrene un modelo de detección de objetos personalizado o una etiqueta de imagen específica para sus necesidades comerciales. Por ejemplo, las etiquetas personalizadas de Rekognition pueden encontrar su logotipo en las publicaciones de las redes sociales, identificar sus productos en los estantes de las tiendas, etiquetar piezas de máquinas en una línea de ensamblaje, distinguir entre plantas sanas y enfermas o detectar personajes animados en videos.

Desarrollar un modelo de etiquetas personalizadas de Rekognition para el análisis de imágenes es una tarea importante que requiere tiempo, experiencia y recursos, y a menudo lleva meses completarla. Además, a menudo se necesitan miles o decenas de miles de imágenes etiquetadas manualmente para proporcionar al modelo datos suficientes para tomar decisiones precisas. La generación de estos datos puede tardar meses en recopilarse y requiere grandes equipos de clasificadores para prepararlos para su uso en el aprendizaje automático (ML).

Con las etiquetas personalizadas de Rekognition, nos encargamos del trabajo pesado por usted. Las etiquetas personalizadas de Rekognition se basan en las capacidades existentes de Amazon Rekognition, que ya se ha capacitado en decenas de millones de imágenes en muchas categorías. En lugar de miles de imágenes, simplemente necesita cargar un pequeño conjunto de imágenes de capacitación (generalmente unos cientos de imágenes o menos) personalizadas para su caso de uso a través de nuestra consola fácil de usar. Si sus imágenes ya están etiquetadas, Amazon Rekognition puede comenzar a entrenar con solo unos pocos clics. De lo contrario, puede etiquetarlos directamente en la interfaz de etiquetado de Amazon Rekognition o utilizar Amazon SageMaker Ground Truth para etiquetarlos por usted. Una vez que Amazon Rekognition comienza a entrenar a partir de su colección de imágenes, genera un modelo de análisis de imágenes personalizado para usted en unas pocas horas. Detrás de escena, Rekognition Custom Labels carga y verifica automáticamente los datos de entrenamiento, elige los algoritmos de ML correctos, entrena un modelo y proporciona métricas de rendimiento del modelo. Luego puede usar su plantilla personalizada a través de la API de etiquetas personalizadas de Rekognition e integrarla en sus aplicaciones.

Sin embargo, crear y alojar un modelo de etiquetas personalizadas de Rekognition para predicciones en tiempo real implica varios pasos: crear un proyecto, crear conjuntos de datos de entrenamiento y validación, entrenar el modelo, evaluar el modelo y luego crear un punto final. Después de implementar el modelo para la inferencia, es posible que deba volver a entrenar el modelo cuando haya nuevos datos disponibles o si se reciben comentarios de la inferencia del mundo real. La automatización de todo su flujo de trabajo puede ayudar a reducir el trabajo manual.

En esta publicación, explicamos cómo puede utilizar AWS Step Functions para crear y automatizar flujos de trabajo. Step Functions es un servicio de flujo de trabajo visual que ayuda a los desarrolladores a utilizar los servicios de AWS para crear aplicaciones distribuidas, automatizar procesos, orquestar microservicios y generar canalizaciones de datos y aprendizaje automático.

Descripción general de la solución

El flujo de trabajo de Step Functions es el siguiente:

  1. Primero creamos un proyecto de Amazon Rekognition.
  2. Paralelamente, generamos conjuntos de datos de capacitación y validación utilizando conjuntos de datos existentes. Podemos utilizar los siguientes métodos:
    1. Importe una estructura de carpetas de Amazon Simple Storage Service (Amazon S3) con carpetas que representen etiquetas.
    2. Utilice una computadora local.
    3. Usa la verdad básica.
    4. Cree un conjunto de datos utilizando un conjunto de datos que viene con el SDK de AWS.
    5. Cree un conjunto de datos con un archivo de manifiesto utilizando el SDK de AWS.
  3. Después de crear los conjuntos de datos, entrenamos el modelo de etiquetas personalizadas mediante la API CreateProjectVersion. Esto puede tardar desde minutos hasta horas en completarse.
  4. Después de entrenar el modelo, evaluamos el modelo utilizando el resultado de la puntuación F1 del paso anterior. Usamos el puntaje F1 como nuestra escala de evaluación porque proporciona un equilibrio entre la precisión y la memoria. También puede utilizar la precisión o la recuperación como métricas de evaluación de su modelo. Para obtener más información sobre las métricas para evaluar etiquetas personalizadas, consulte Métricas para evaluar su modelo.
  5. Luego comenzamos a usar el modelo para predicciones si estamos satisfechos con el puntaje F1.

El siguiente diagrama muestra el flujo de trabajo de Step Functions.

Requerimientos básicos

Antes de implementar el flujo de trabajo, debemos crear los conjuntos de datos de capacitación y validación existentes. Complete los siguientes pasos:

  1. Primero, cree un proyecto de Amazon Rekognition.
  2. A continuación, cree conjuntos de datos de entrenamiento y validación.
  3. Finalmente, instale la CLI de AWS SAM.

Implementar el flujo de trabajo

Para implementar el flujo de trabajo, copie el repositorio de GitHub:

git clone https://github.com/aws-samples/rekognition-customlabels-automation-with-stepfunctions.git
cd rekognition-customlabels-automation-with-stepfunctions
sam build
sam deploy --guided

Estos comandos compilan, empaquetan e implementan su aplicación en AWS, con una serie de indicaciones, como se muestra en el repositorio.

Ejecutar el flujo de trabajo

Para probar el flujo de trabajo, vaya al flujo de trabajo publicado en la consola de Step Functions y luego elija Empezar.

El flujo de trabajo puede tardar de unos minutos a unas horas en completarse. Si el modelo pasa los criterios de evaluación, se crea un punto de enlace de Amazon Rekognition para el modelo. Si el modelo no pasa los criterios de evaluación o si el entrenamiento falla, el flujo de trabajo falla. Puede comprobar el estado del flujo de trabajo en la consola de trabajos de paso. Para obtener más información, consulte Ver y depurar ejecuciones en la consola de funciones de pasos.

Realizar predicciones de modelos

Para realizar predicciones con respecto al modelo, puede llamar a la API DetectCustomLabels de Amazon Rekognition. Para llamar a esta API, la persona que llama debe tener los permisos necesarios de AWS Identity and Access Management (IAM). Para obtener más detalles sobre cómo hacer predicciones con esta API, consulte Analizar una imagen con un modelo entrenado.

Sin embargo, si necesita exponer públicamente la API de DetectCustomLabels, puede proporcionar la API de DetectCustomLabels con Amazon API Gateway. API Gateway es un servicio completamente administrado que facilita a los desarrolladores la creación, implementación, mantenimiento, monitoreo y protección de las API a cualquier escala. API Gateway actúa como una puerta de entrada a su API DetectCustomLabels, como se muestra en el siguiente diagrama de arquitectura.

API Gateway reenvía la solicitud de inferencia del usuario a AWS Lambda. Lambda es un servicio informático sin servidor basado en eventos que le permite ejecutar código para cualquier tipo de aplicación o servicio de back-end sin aprovisionar ni administrar servidores. Lambda recibe la solicitud de la API y llama a la API DetectCustomLabels de Amazon Rekognition con los permisos de IAM necesarios. Para obtener más información sobre cómo configurar una puerta de enlace de API con integración de Lambda, consulte Configurar una integración de proxy de Lambda en una puerta de enlace de API.

Este es un ejemplo de código de función de Lambda para llamar a la API DetectCustomLabels:

client = boto3.client('rekognition', region_name="us-east-1")
REKOGNITION_PROJECT_VERSION_ARN = os.getenv(
    'REKOGNITION_PROJECT_VERSION_ARN', None)


def lambda_handler(event, context):
    image = json.dumps(event['body'])

    # Base64 decode the base64 encoded image body since API GW base64 encodes the image sent in and
    # Amazon Rekognition's detect_custom_labels API base64 encodes automatically ( since we are using the SDK)
    base64_decoded_image = base64.b64decode(image)

    min_confidence = 85

    # Call DetectCustomLabels
    response = client.detect_custom_labels(Image={'Bytes': base64_decoded_image},
                                           MinConfidence=min_confidence,
                                           ProjectVersionArn=REKOGNITION_PROJECT_VERSION_ARN)

    response_body = json.loads(json.dumps(response))

    statusCode = response_body['ResponseMetadata']['HTTPStatusCode']
    predictions = {}
    predictions['Predictions'] = response_body['CustomLabels']

    return {
        "statusCode": statusCode,
        "body": json.dumps(predictions)
    }

limpieza

Para eliminar un flujo de trabajo, utilice la CLI de AWS SAM:

sam delete —stack-name <your sam project name>

Para eliminar la plantilla de etiquetas personalizadas de Rekognition, puede utilizar la consola de Amazon Rekognition o el SDK de AWS. Para obtener más información, consulte Eliminar etiquetas personalizadas de Amazon Rekognition de muestra.

Conclusión

En esta publicación, analizamos el flujo de trabajo de Step Functions para crear un conjunto de datos y luego entrenar, evaluar y usar el modelo de etiquetas personalizadas de Rekognition. El flujo de trabajo permite a los desarrolladores de aplicaciones y a los ingenieros de ML automatizar los pasos de clasificación de etiquetas personalizadas para cualquier caso de uso de visión artificial. El código del flujo de trabajo es de código abierto.

Para obtener más recursos de aprendizaje sin servidor, visite Serverless Land. Para obtener más información sobre las etiquetas personalizadas de Rekognition, visite Etiquetas personalizadas de Amazon Rekognition.


Sobre el Autor

veda raman es un arquitecto de soluciones especialista en aprendizaje automático sénior con sede en Maryland. Veda trabaja con los clientes para ayudarlos a diseñar aplicaciones de aprendizaje automático eficaces, escalables y seguras. Veda se trata de ayudar a los clientes a aprovechar las tecnologías sin servidor para el aprendizaje automático.

Leave a Comment