Étiquetage des données d'entraînement pour le machine learning

DIDACTICIEL

Présentation

Dans ce didacticiel, découvrez comment configurer une tâche d'étiquetage dans Amazon SageMaker Ground Truth afin d'annoter les données d'entraînement pour votre modèle de machine learning (ML). 

Un jeu de données étiquetées est essentiel pour entraîner un modèle de machine learning de manière supervisée. De nombreuses organisations disposent d'énormes jeux de données, mais ne disposent pas d'étiquettes associées à ces données. Grâce à Amazon SageMaker Ground Truth, vous pouvez facilement étiqueter des données en faisant appel à des annotateurs humains via Amazon Mechanical Turk, des fournisseurs tiers ou votre propre personnel. 

Dans ce didacticiel, vous utilisez SageMaker Ground Truth pour étiqueter un ensemble d'images de véhicules, notamment des avions, des voitures, des ferrys, des hélicoptères et des motos. Comme ce didacticiel utilise un jeu de données non sensible, vous utilisez l'option Amazon Mechanical Turk.

Qu'allez-vous accomplir ?

Avec ce guide, vous allez :

  • Créer et configurer une tâche d'étiquetage des données
  • Examiner les résultats de la tâche d'étiquetage

Prérequis

Pour pouvoir démarrer ce guide, vous avez besoin de ce qui suit :

 Expérience AWS

Débutant

 Durée

30 minutes

 Coût de réalisation

Consultez la tarification de SageMaker pour estimer le coût de ce didacticiel.

 Éléments requis

Vous devez être connecté à un compte AWS.

 Services utilisés

Amazon SageMaker Ground Truth

 Date de la dernière mise à jour

6 juillet 2022

Implémentation

Étape 1 : création d'une instance de bloc-notes Amazon SageMaker

Dans la barre de recherche de la console AWS, saisissez SageMaker et choisissez Amazon SageMaker pour ouvrir la console SageMaker.

Dans le panneau de navigation de gauche, cliquez sur « Notebook » (Bloc-notes).  Choisissez Notebook instances (Instances de bloc-notes), puis Create notebook instance (Créer une instance de bloc-notes).

Sur la page Create notebook instance (Créer une instance de bloc-notes), dans la case Notebook instance settings (Paramètres de l'instance du bloc-notes), pour Notebook instance name (Nom de l'instance du bloc-notes), saisissez SageMaker-Ground-Truth-Tutorial. Pour Notebook instance type (Type d'instance de bloc-notes), sélectionnez ml.t2.medium

Dans la section Permissions and encryption (Autorisations et chiffrement), pour le rôle IAM, sélectionnez Create a new role (Créer un rôle). Dans la boîte de dialogue de création du rôle IAM, sélectionnez Any S3 bucket (N'importe quel compartiment S3) et choisissez Create role (Créer un rôle). En guise de bonnes pratiques, limitez l'accès au compartiment S3 à un rôle IAM spécifique avec les autorisations minimales requises dans les environnements de production. Notez ce nom de rôle pour le nettoyage final.

Amazon SageMaker crée le rôle AmazonSageMaker-ExecutionRole-<identifiant-de-rôle>. Conservez les paramètres par défaut pour les autres paramètres et sélectionnez Create notebook instance (Créer une instance de bloc-notes).

Dans la section Notebook instances (Instances de bloc-notes), l'instance de bloc-notes SageMaker-Ground Truth-Tutorial nouvellement créée s'affiche avec l'état Pending (En attente). Le bloc-notes est prêt lorsque le Status (Statut) passe à InService (En service).

Étape 2 : création d'une tâche d'étiquetage

Les exemples d'images à étiqueter dans ce didacticiel sont tirés du jeu de données accessible au public Caltech 101 dataset (Li, F.-F., Andreeto, M., Ranzato, M. A., & Perona, P. (2022). Caltech 101 (Version 1.0) [Data set]. CaltechDATA), qui contient des images dans 101 catégories d'objets. Pour minimiser le coût de ce didacticiel, vous utilisez un ensemble d'échantillons de 10 images, soit deux images de chacune des catégories suivantes : avions, voitures, ferrys, hélicoptères et motos. Mais les étapes pour lancer une tâche d'étiquetage pour un jeu de données plus important sont les mêmes que celles de ce didacticiel. L'ensemble d'échantillons de 10 images est déjà disponible dans le compartiment Amazon S3 sagemaker-sample-files.

Au cours de cette étape, vous utilisez votre instance SageMaker notebook pour écrire un code python qui charge les images d'exemple du compartiment S3 sagemaker-sample-files vers votre compartiment S3 par défaut sagemaker-<votre-région>-<votre-identifiant-de-compte-aws>. Une fois que l'instance du bloc-notes SageMaker-Ground Truth-Tutorial est passée à l'état InService, choisissez Open Jupyter (Ouvrir Jupyter).

Dans le bloc-notes Jupyter, pour New (Nouveau), sélectionnez conda_python3.

Cliquez sur Untitled.ipynb pour ouvrir le bloc-notes. Dans une nouvelle cellule de code du bloc-notes Jupyter, copiez et collez le code suivant et exécutez la cellule.

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/')

Une fois le code exécuté avec succès, ouvrez la console Amazon S3 et naviguez vers l'emplacement sagemaker-<votre-région>-<votre-identifiant-de-compte-aws>/ground-truth-demo/images pour confirmer que les dix images ont été chargées.

Ouvrez la console SageMaker. Dans le panneau de navigation de gauche, choisissez Ground Truth, Labeling jobs (Tâches d'étiquetage). Ensuite, choisissez Create labeling job (Créer une tâche d'étiquetage).

Dans la page Specify job details (Spécifier les détails de la tâche), sous Job overview (Aperçu de la tâche), entrez vehicle-labeling-demo dans la case Job name (Nom de la tâche). Sous Input data setup (Configuration des données d'entrée), sélectionnez Automated data setup (Configuration automatisée des données). 

Vous pouvez utiliser la configuration automatisée des données pour créer des fichiers manifestes pour vos tâches d'étiquetage dans la console SageMaker Ground Truth à l'aide d'images, de vidéos, de cadres vidéo, de fichiers texte (.txt) et de fichiers de valeurs séparées par des virgules (.csv) stockés dans Amazon S3. Lorsque vous utilisez la configuration automatisée des données, vous indiquez un emplacement Amazon S3 où vos données d'entrée sont stockées et spécifiez le type de données d'entrée, et SageMaker Ground Truth recherche les fichiers qui correspondent à ce type dans l'emplacement que vous indiquez.

Dans la section Data setup (Configuration des données) : pour S3 location for input datasets (Emplacement S3 pour les jeux de données d'entrée), choisissez Browse S3 (Parcourir S3), puis sélectionnez l'emplacement S3 s3://sagemaker-<votre-région>-<votre-identifiant-de-compte-aws>/ground-truth-demo/images/ (c'est l'emplacement où vous avez chargé les images dans une étape précédente. Pour S3 location for output datasets (Emplacement S3 pour les jeux de données de sortie), sélectionnez Specify a new location (Spécifier un nouvel emplacement). Ensuite, spécifiez le chemin où les images étiquetées doivent être stockées : s3://sagemaker-<votre-région>-<votre-identifiant-de-compte-aws>/ground-truth-demo/labeled-data/. Pour Data type (Type de données), sélectionnez Image. Pour IAM role (Rôle IAM), sélectionnez Create a new role (Créer un nouveau rôle). Vous pouvez également utiliser les valeurs correspondantes de l'instruction print (imprimer) dans le bloc-notes Jupyter que nous avons exécuté précédemment.

Dans la fenêtre contextuelle Create an IAM role (Créer un rôle IAM), sélectionnez Any S3 bucket (N'importe quel compartiment S3), puis choisissez Create (Créer). 

SageMaker Ground Truth crée automatiquement le rôle IAM et le saisit dans le champ IAM Role (Rôle IAM). Sélectionnez Complete data setup (Terminer la configuration des données). Le message de confirmation Input data connection was successful (Connexion des données d'entrée réussie) apparaît.

Dans la section Task type (Type de tâche), pour Task category (Catégorie de tâche), sélectionnez Image. Pour Task selection (Sélection des tâches), sélectionnez Image Classification (Single Label) (Classification d'images [Étiquette unique]), puis sélectionnez Next (Suivant).

Sur la page Select workers and configure tool (Sélectionner les travailleurs et configurer l'outil), pour les Worker types (Types de travailleurs), sélectionnez Amazon Mechanical Turk.

Sélectionnez The dataset does not contain adult content (Le jeu de données ne contient pas de contenu pour adultes). 

Sélectionnez 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. (Vous comprenez et acceptez que la main-d'œuvre d'Amazon Mechanical Turk est constituée d'entrepreneurs indépendants situés dans le monde entier et que vous ne devez pas partager d'informations confidentielles, d'informations personnelles ou d'informations de santé protégées avec cette main-d'œuvre.)

 

Dans la section Image classification (Single Label) labeling tool (Outil d'étiquetage de la classification des images [Étiquette unique]), saisissez les informations suivantes :

Pour brief description of task (Brève description de la tâche), saisissez Please select the label that best matches the image below (Veuillez sélectionner l'étiquette qui correspond le mieux à l'image ci-dessous). Vous ne pouvez choisir qu'une seule étiquette par image.

Pour Select an option (Sélectionner une option), saisissez les étiquettes suivantes dans des cases séparées : Airplane (Avion), Car (Voiture), Ferry, Helicopter (Hélicoptère), Motorbike (Moto).

Développez les Additional instructions (Instructions supplémentaires) et ajoutez le texte suivant à l'étape 3 : If there are multiple vehicles in a single image, choose the most prominent vehicle in the image. (si plusieurs véhicules figurent sur une même image, choisissez le véhicule le plus visible de l'image.)

Pour voir comment l'outil d'étiquetage apparaît aux étiqueteurs, choisissez Preview (Aperçu). 

Choisissez Create (Créer).

La nouvelle tâche d'étiquetage vehicle-labeling-demo est répertoriée dans la section Labeling jobs (Tâches d'étiquetage) de la console SageMaker, avec un Status (Statut) In progress (En cours) et un Task type (Type de tâche) Image Classification (Single Label) (Classification des images [Étiquette unique]). La tâche d'étiquetage peut prendre plusieurs minutes. Une fois que les données sont étiquetées par la main-d'œuvre publique d'Amazon Mechanical Turk, le Status (Statut) passe à Complete (Terminé).

Étape 3 : examen des résultats de la tâche d'étiquetage

L'examen des résultats de la tâche d'étiquetage est important pour évaluer la qualité de l'étiquetage et déterminer si vous devez améliorer les instructions et les données.

Dans le volet de navigation de gauche de la console SageMaker, choisissez Labeling jobs (Tâches d'étiquetage), puis choisissez vehicle-labeling-demo.

 

Sur la page vehicle-labeling-demo, la section Labeled dataset objects (Objets du jeu de données étiquetés) présente les vignettes des images de votre jeu de données avec les étiquettes correspondantes sous forme de légendes.

 

Pour voir les résultats complets de la tâche d'étiquetage, dans la section Labeling job summary (Résumé de la tâche d'étiquetage), choisissez le lien Output dataset location (Emplacement de l'ensemble de données de sortie).

Choisissez manifests (manifestes), output (sortie), output.manifest.

 

Choisissez Open (Ouvrir) pour télécharger les résultats de l'étiquetage au format JSON Lines. JSON Lines est un format délimité par des retours à la ligne permettant de stocker des données structurées où chaque ligne est une valeur JSON valide.

 

Le fichier output.manifest comprend les données suivantes : 

source-ref : spécifie l'emplacement de l'entrée de l'image dans le fichier manifeste source. Comme vous avez sélectionné Automated data setup (Configuration automatisée des données) à l'étape 2, Amazon SageMaker Ground Truth a automatiquement créé ces entrées et le fichier manifeste source.

vehicle-labeling-demo : spécifie l'étiquette cible sous la forme d'une valeur numérique indexée à partir de zéro. Pour les cinq classes d'images de cet exemple, les étiquettes sont 0, 1, 2, 3 et 4.

vehicle-labeling-demo-metadata : spécifie les métadonnées d'étiquetage, telles que le score de confiance, le nom de la tâche, le nom de la chaîne d'étiquettes (par exemple, avion, voiture, ferry, hélicoptère et moto), et annoté par l'homme ou la machine (apprentissage actif). 

Vous pouvez analyser le fichier output.manifest pour créer un jeu de données étiquetées pour des applications en aval telles que la classification d'images. Pour plus d'informations sur la façon d'utiliser le fichier output.manifest avec Amazon SageMaker pour former des modèles, voir l'article de blog Easily train models using datasets labeled by Amazon SageMaker Ground Truth (Entraînez facilement des modèles à l'aide de jeux de données étiquetés par Amazon SageMaker Ground Truth, en anglais uniquement).

Étape 4 : nettoyage des ressources

Une bonne pratique consiste à supprimer les ressources dont vous n'avez plus besoin afin de ne pas encourir de frais imprévus.

Pour supprimer le compartiment S3, procédez comme suit : 

  • Ouvrez la console Amazon S3. Sur la barre de navigation, choisissez Buckets (Compartiments), sagemaker-<votre-région>-<votre-identifiant-de-compte>, puis cochez la case à côté de ground-truth-demo. Puis choisissez Delete (Supprimer). 
  • Dans la boîte de dialogue Delete objects (Supprimer des objets), vérifiez que vous avez sélectionné le bon objet à supprimer et saisissez permanently delete (supprimer définitivement) dans la case de confirmation des Permanently delete objects (Supprimer définitivement des objets).

Ouvrez la console AWS IAM en tapant IAM dans la barre de recherche de la console AWS et en sélectionnant IAM. Dans le panneau de navigation gauche de la console IAM, choisissez Roles (Rôles). Pour rechercher le rôle IAM que vous avez utilisé pour ce didacticiel, saisissez Amazon dans la barre de recherche. Sous Role name (Nom du rôle), sélectionnez le rôle, puis choisissez Delete (Supprimer). Notez que cette action nécessite des privilèges d'administrateur associés à votre compte.

Pour ouvrir la console SageMaker, saisissez SageMaker dans la barre de recherche de la console AWS, puis choisissez Amazon SageMaker dans les résultats de la recherche. Dans le volet de gauche de la console SageMaker, choisissez Notebook instances (Instances de bloc-notes), puis sélectionnez SageMaker-Ground Truth-Tutorial. Pour Actions, sélectionnez Stop (Arrêter).

Après que l'état de l'instance soit passé à Stopped (Arrêté), choisissez Actions, puis sélectionnez Delete (Supprimer). Choisissez Delete (Supprimer) dans la fenêtre de confirmation.

Conclusion

Félicitations ! Vous avez terminé le didacticiel Étiquetage des données d'entraînement pour le machine learning

Dans ce didacticiel, vous avez utilisé Amazon SageMaker Ground Truth et Amazon Mechanical Turk pour créer un jeu de données d'entraînement pour le machine learning. 

Vous pouvez poursuivre votre parcours de machine learning avec Amazon SageMaker en suivant la section des prochaines étapes ci-dessous.

Cette page vous a-t-elle été utile ?

Créer un modèle ML automatiquement

Apprenez à utiliser AutoML pour développer des modèles ML sans écrire de code.
Suivant »

Déployer un modèle entraîné

Apprenez à déployer un modèle ML entraîné pour l'inférence.
Suivant »

Trouver d'autres didacticiels pratiques

Explorez d'autres didacticiels de machine learning pour aller plus loin.
Suivant »