Etiquetado de los datos de entrenamiento para machine learning

TUTORIAL

Información general

En este tutorial, aprenderá cómo configurar un trabajo de etiquetado en Amazon SageMaker Ground Truth con el fin de anotar los datos de entrenamiento para un modelo de machine learning (ML). 

Un conjunto de datos etiquetado es fundamental para el entrenamiento supervisado de un modelo de ML. Muchas organizaciones tienen una gran cantidad de conjunto de datos, pero les faltan las etiquetas asociadas con los datos. Gracias a Amazon SageMaker Ground Truth, puede etiquetar datos fácilmente con la opción de emplear anotadores humanos a través de Amazon Mechanical Turk, proveedores de terceros o su propio personal privado. 

En este tutorial, utilizará SageMaker Ground Truth para etiquetar un conjunto de imágenes de vehículos, que incluye aviones, autos, trenes, helicópteros y motocicletas. Ya que en este tutorial no se usa un conjunto de datos sensible, utilizará la opción Amazon Mechanical Turk.

Lo que logrará

En esta guía, aprenderá a hacer lo siguiente:

  • Crear y configurar un trabajo de etiquetado de datos.
  • Revisar los resultados del trabajo de etiquetado.

Requisitos previos

Antes de comenzar esta guía, necesitará lo siguiente:

  • Una cuenta de AWS: si aún no tiene una cuenta, siga la guía de introducción a la Configuración de su entorno para obtener una descripción general rápida. 

 Experiencia en AWS

Principiante

 Tiempo de realización

30 minutos

 Costo de realización

Consulte los precios de SageMaker para estimar el costo de este tutorial.

 Requisitos

Debe iniciar sesión en una cuenta de AWS.

 Servicios utilizados

Amazon SageMaker Ground Truth

 Última actualización

6 de julio de 2022

Implementación

Paso 1: configurar una instancia de cuaderno de Amazon SageMaker

En la barra de búsqueda de la consola de AWS, escriba SageMaker y seleccione Amazon SageMaker para abrir la consola del servicio.

En el panel de navegación izquierdo, haga clic en “Notebook” (Cuaderno).  Elija Notebook instances (Instancias de cuaderno) y luego Create notebook instance (Crear instancia de cuaderno).

En la página Create notebook instance (Crear instancia de cuaderno), debajo del cuadro Notebook instance settings (Configuración de la instancia de cuaderno), para Notebook instance name (Nombre de la instancia de cuaderno), ingrese SageMaker-Ground-Truth-Tutorial. En Notebook instance type (Tipo de instancia de cuaderno), seleccione ml.t2.medium

En la sección Permissions and encryption (Permisos y cifrado), para IAM role (Rol de IAM), elija Create a new role (Crear un nuevo rol). En el cuadro de diálogo Create an IAM role (Crear un rol de IAM), seleccione Any S3 bucket (Cualquier bucket de S3) y elija Create role (Crear rol). Como práctica recomendada, limite el acceso del bucket de S3 a un rol de IAM con los permisos mínimos requeridos en entornos de producción. Recuerde este nombre de rol para eliminarlo al final.

SageMaker creará el rol AmazonSageMaker-ExecutionRole-<role-id>. Conserve la configuración predeterminada para las demás opciones y elija Create notebook instance (Crear instancia de cuaderno).

En la sección Notebook instances (Instancias de cuaderno), se muestra la instancia de cuaderno recién creada SageMaker-Ground-Truth-Tutorial con un estado Pending (Pendiente). El cuaderno estará listo cuando Status (Estado) cambie a InService.

Paso 2: crear un trabajo de etiquetado

Las imágenes de muestra para etiquetar en este tutorial se extrajeron del conjunto de datos Caltech 101 disponible públicamente (Li, F.-F., Andreeto, M., Ranzato, M. A., & Perona, P. (2022). Caltech 101 (Versión 1.0) [Conjunto de datos]. CaltechDATA), que contiene imágenes en 101 categorías de objetos. Para minimizar el costo de este tutorial, utilizará un conjunto de muestra de diez imágenes; dos imágenes de cada una de las siguientes categorías: aviones, autos, trenes, helicópteros y motocicletas. Pero los pasos para iniciar un trabajo de etiquetado para un conjunto de datos mayor son los mismos que aparecen en este tutorial. El conjunto de muestra de diez imágenes ya se encuentra disponible en el bucket de Amazon S3 sagemaker-sample-files.

En este paso, utilizará la instancia de cuaderno de SageMaker para escribir código de python que carga las imágenes de muestra desde el bucket de S3 sagemaker-sample-files a su bucket de S3 predeterminado sagemaker-<your-Region>-<your-aws-account-id>. Luego de que la instancia de cuaderno SageMaker-Ground-Truth-Tutorial cambie de estado a InService, elija Open Jupyter (Abrir Jupyter).

En el cuaderno de Jupyter, para New (Nuevo), seleccione conda_python3.

Haga clic en Untitled.ipynb para abrir el cuaderno. En una nueva celda de código del cuaderno de Jupyter, copie y pegue el siguiente código y ejecute la celda.

import sagemaker

sess = sagemaker.Session()
bucket = sess.default_bucket()

!aws s3 sync s3://sagemaker-sample-files/datasets/image/caltech-101/inference/ s3://{bucket}/ground-truth-demo/images/

print('Copy and paste the below link into a web browser to confirm the ten images were successfully uploaded to your bucket:')
print(f'https://s3.console.aws.amazon.com/s3/buckets/{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to enter the S3 location for input datasets, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to Specify a new location, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/labeled-data/')

Una vez que el código se haya ejecutado correctamente, abra la consola de Amazon S3 y navegue a la ubicación sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/images para confirmar que se cargaron las diez imágenes.

Abra la consola de SageMaker. En el panel de navegación izquierdo, elija Ground Truth, Labeling jobs (Trabajos de etiquetado). Luego, elija Create labeling job (Crear trabajo de etiquetado).

En la página Specify job details (Especificar detalles del trabajo), debajo de Job overview (Información general del trabajo), ingrese vehicle-labeling-demo en el cuadro Job name (Nombre del trabajo). En Input data setup (Configuración de los datos de entrada), seleccione Automated data setup (Configuración de datos automatizada). 

Puede utilizar la configuración de datos automatizada para crear archivos de manifiesto destinados a sus trabajos de etiquetado en la consola de SageMaker Ground Truth mediante imágenes, videos, fotogramas de video, archivos de texto (.txt) y archivos de valores separados por comas (.csv) almacenados en Amazon S3. Cuando utiliza la configuración de datos automatizada, especifica una ubicación de Amazon S3 en la que se almacenan sus datos de entrada y especifica el tipo de datos de entrada, y SageMaker Ground Truth busca los archivos que coinciden con ese tipo en la ubicación especificada.

En la sección Data setupen S3 location for input datasets (Ubicación de S3 para los conjuntos de datos de entrada), elija Browse S3 (Buscar en S3) y, a continuación, seleccione la ubicación de S3 s3://sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/images/ (esta es la ubicación en la que cargó las imágenes en un paso anterior). En S3 location for output datasets (Ubicación de S3 para los conjuntos de datos de salida), seleccione Specify a new location (Especificar una nueva ubicación). Luego, especifique la ruta en la que se deben almacenar las imágenes etiquetadas: s3://sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/labeled-data/. En Data type (Tipo de datos), seleccione Image (Imagen). En IAM Role (Rol de IAM), seleccione Create a new role (Crear un nuevo rol). De forma alternativa, puede utilizar los valores correspondientes de la instrucción de impresión en el cuaderno de Jupyter que ejecutamos anteriormente.

En la ventana emergente Create an IAM role (Crear un rol de IAM), seleccione Any S3 bucket (Cualquier bucket de S3) y elija Create (Crear). 

SageMaker Ground Truth crea el rol de IAM automáticamente y lo ingresa en el cuadro IAM Role (Rol de IAM). Elija Complete data setup (Completar la configuración de datos). Aparece el mensaje de confirmación Input data connection was successful (La conexión de los datos de entrada se realizó correctamente).

En la sección Task type (Tipo de tarea), para Task category (Categoría de tarea), seleccione Image (Imagen). En Task selection (Selección de tarea), seleccione Image Classification (Single Label) (Clasificación de imágenes [etiqueta única]) y, a continuación, elija Next (Siguiente).

En la página Select workers and configure tool (Seleccionar trabajadores y configurar herramienta), para Worker types (Tipos de trabajadores), seleccione Amazon Mechanical Turk.

Seleccione The dataset does not contain adult content (El conjunto de datos no contiene material para adultos). 

Seleccione You understand and agree that the Amazon Mechanical Turk workforce consists of independent contractors located worldwide and that you should not share confidential information, personal information or protected health information with this workforce. (Comprende y acepta que el personal de Amazon Mechanical Turk está formado por contratistas independientes ubicados en todo el mundo y no debe compartir información confidencial, información personal ni información sanitaria protegida con dicho personal).

 

En la sección Image classification (Single Label) labeling tool (Herramienta de etiquetado para la clasificación de imágenes [etiqueta única]), ingrese la siguiente información:

En brief description of task (breve descripción de la tarea), ingrese Please select the label that best matches the image below. You can choose only 1 label per image. (Seleccione la etiqueta que mejor se adapte a la siguiente imagen. Solo puede elegir una etiqueta por imagen).

En Select an option (Seleccionar una opción), ingrese las siguientes etiquetas en cuadros distintos: Airplane (Avión), Car (Auto), Ferry (Tren), Helicopter (Helicóptero), Motorbike (Motocicleta).

Amplíe Additional instructions (Instrucciones adicionales) y adjunte el siguiente texto al paso 3: If there are multiple vehicles in a single image, choose the most prominent vehicle in the image. (Si hay varios vehículos en una misma imagen, elija el que más se destaque).

Para ver cómo aparece la herramienta de etiquetado para los etiquetadores, seleccione Preview (Vista previa). 

Elija Create (Crear).

El nuevo trabajo de etiquetado vehicle-labeling-demo se encuentra debajo de la sección Labeling jobs (Trabajos de etiquetado) en la consola de SageMaker con un Status (Estado) de In progress (En curso) y un Task type (Tipo de tarea) de Image Classification (Single Label) (Clasificación de imágenes [etiqueta única]). El trabajo de etiquetado puede tardar varios minutos en completarse. Luego de que el personal público de Amazon Mechanical Turk etiqueta los datos, el Status (Estado) cambia a Complete (Completo).

Paso 3: revisar los resultados del trabajo de etiquetado

Revisar los resultados del trabajo de etiquetado es importante para evaluar la calidad del etiquetado e identificar si necesita mejorar las instrucciones y los datos.

En el panel de navegación izquierdo de la consola de SageMaker, elija Labeling jobs (Trabajos de etiquetado) y luego vehicle-labeling-demo.

 

En la página de detalles de vehicle-labeling-demo, en la sección Labeled dataset objects (Objetos del conjunto de datos etiquetados) se muestran las miniaturas de las imágenes de su conjunto de datos con las correspondientes etiquetas como subtítulos.

 

Para acceder a los resultados completos del trabajo de etiquetado, en la sección Labeling job summary (Resumen del trabajo de etiquetado), haga clic en el enlace Output dataset location (Ubicación del conjunto de datos de salida).

Elija manifests (manifiestos), output (salida), output.manifest.

 

Elija Open (Abrir) para descargar los resultados de etiquetado en formato de líneas JSON. Las líneas de JSON son un formato delimitado por saltos de línea para almacenar datos estructurados donde cada línea es un valor JSON válido.

 

El archivo output.manifest incluye los siguientes datos: 

source-ref: especifica la ubicación de la entrada de la imagen en el archivo de manifiesto de entrada. Dado que seleccionó Automated data setup (Configuración de datos automatizada) en el paso 2, Amazon SageMaker Ground Truth creó estas entradas y el archivo de manifiesto de entrada.

vehicle-labeling-demo: especifica la etiqueta de destino como un valor numérico de índice cero. Para las cinco clases de imágenes de este ejemplo, las etiquetas son 0, 1, 2, 3 y 4.

vehicle-labeling-demo-metadata: especifica los metadatos de etiquetado, como la puntuación de confianza, el nombre del trabajo, el nombre de la cadena de etiquetas (por ejemplo, avión, auto, ferri, helicóptero y motocicleta) y la anotación humana o de la máquina (aprendizaje activo). 

Puede analizar el archivo output.manifest con el fin de crear un conjunto de datos etiquetados para aplicaciones posteriores, como la clasificación de imágenes. Para obtener más información acerca de cómo usar el archivo output.manifest con Amazon SageMaker para entrenar modelos, consulte la publicación de blog Easily train models using datasets labeled by SageMaker Ground Truth (Entrenar modelos con facilidad mediante conjuntos de datos etiquetados por SageMaker Ground Truth).

Paso 4: eliminar los recursos

Una práctica recomendada consiste en eliminar los recursos que ya no necesite para evitar cargos adicionales.

Para eliminar el bucket de S3, haga lo siguiente: 

  • Abra la consola de Amazon S3. En la barra de navegación, elija Buckets, sagemaker-<your-Region>-<your-account-id> y, a continuación, marque la casilla de verificación junto a ground-truth-demo. Luego, seleccione Delete (Eliminar). 
  • En el cuadro de diálogo Delete objects (Eliminar objetos), verifique que haya seleccionado el objeto apropiado para eliminar e ingrese permanently delete (eliminar de forma permanente) en la casilla de confirmación Permanently delete objects (Eliminar objetos de forma permanente). 

Escriba IAM en la barra de búsqueda y seleccione IAM para abrir la consola de AWS IAM. En el panel de navegación izquierdo de la consola de IAM, elija Roles. Ingrese Amazon en la barra de búsqueda para buscar el rol de IAM que utilizó en este tutorial. En Role name (Nombre del rol), seleccione el rol y elija Delete (Eliminar). Tenga en cuenta que esta acción requiere privilegios de administrador asociados a la cuenta.

En la barra de búsqueda de la consola de AWS, escriba SageMaker y seleccione Amazon SageMaker para abrir la consola del servicio. En el panel izquierdo de la consola de SageMaker, elija Notebook instances (Instancias de cuaderno) y luego seleccione SageMaker-Ground-Truth-Tutorial. En Actions (Acciones), seleccione Stop (Detener).

Después de que el estado de la instancia cambie a Stopped (Detenida), elija Actions (Acciones) y luego seleccione Delete (Eliminar). En la ventana emergente de confirmación, elija Delete (Eliminar).

Conclusión

¡Felicitaciones! Ha finalizado el tutorial Etiquetado de los datos de entrenamiento para machine learning

En este tutorial, utilizó Amazon SageMaker Ground Truth y Amazon Mechanical Turk para crear un conjunto de datos de entrenamiento para machine learning. 

Puede continuar su viaje de machine learning con Amazon SageMaker en la siguiente sección de pasos.

¿Le resultó útil esta página?

Crear un modelo de ML automáticamente

Aprenda a usar AutoML para desarrollar modelos de ML sin escribir código.
Siguiente »

Implementar un modelo entrenado

Aprenda a implementar un modelo de ML entrenado para la inferencia.
Siguiente »

Encontrar más tutoriales prácticos

Explore otros tutoriales de machine learning para profundizar más.
Siguiente »