

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Création de jeux de données d’entraînement et de test
<a name="creating-datasets"></a>



Un jeu de données est un ensemble d’images et d’étiquettes qui décrivent ces images. Un projet nécessite un jeu de données d’entraînement et un jeu de données de test. Étiquettes personnalisées Amazon Rekognition utilise le jeu de données d’entraînement pour entraîner le modèle. Après l’entraînement, Étiquettes personnalisées Amazon Rekognition utilise le jeu de données de test pour vérifier dans quelle mesure le modèle entraîné prédit les étiquettes correctes.

Vous pouvez créer des ensembles de données à l'aide de la console Amazon Rekognition Custom Labels ou du SDK. AWS Avant de créer un jeu de données, nous vous recommandons de lire [Présentation de la fonctionnalité Étiquettes personnalisées Amazon Rekognition](understanding-custom-labels.md). Pour les autres tâches liées aux jeux de données, consultez [Gestion des jeux de données](managing-dataset.md).

Voici les étapes de création de jeux de données d’entraînement et de test pour un projet :

**Pour créer des jeux de données d’entraînement et de test pour votre projet**

1. Déterminez comment vous devez étiqueter vos jeux de données d’entraînement et de test. Pour plus d’informations, consultez [Utilisation des jeux de données](md-dataset-purpose.md).

1. Collectez les images correspondant aux jeux de données d’entraînement et de test. Pour plus d’informations, consultez [Préparation des images](md-prepare-images.md).

1. Créez les jeux de données d’entraînement et de test. Pour de plus amples informations, veuillez consulter [Création de jeux de données d’entraînement et de test avec des images](md-create-dataset.md). Si vous utilisez le AWS SDK, consultez[Création de jeux de données d’entraînement et de test (kit SDK)](md-create-dataset.md#cd-create-dataset-sdk).

1. Si nécessaire, ajoutez des étiquettes ou des cadres de délimitation au niveau de l’image aux images de votre jeu de données. Pour plus d’informations, consultez [Étiquetage des images](md-labeling-images.md).

Après avoir créé les jeux de données, vous pouvez [entraîner](training-model.md) le modèle.

**Topics**
+ [Utilisation des jeux de données](md-dataset-purpose.md)
+ [Préparation des images](md-prepare-images.md)
+ [Création de jeux de données d’entraînement et de test avec des images](md-create-dataset.md)
+ [Étiquetage des images](md-labeling-images.md)
+ [Débogage des jeux de données](debugging-datasets.md)

# Utilisation des jeux de données
<a name="md-dataset-purpose"></a>

La façon dont vous étiquetez les jeux de données d’entraînement et de test de votre projet détermine le type de modèle que vous créez. Avec Étiquettes personnalisées Amazon Rekognition, vous pouvez créer des modèles présentant les caractéristiques suivantes.
+ [Recherche d’objets, de scènes et de concepts](#md-dataset-purpose-classification)
+ [Recherche des emplacements d’objets](#md-dataset-purpose-localization)
+ [Recherche de l’emplacement d’une marque](#md-dataset-purpose-brands)

## Recherche d’objets, de scènes et de concepts
<a name="md-dataset-purpose-classification"></a>

Le modèle classe les objets, les scènes et les concepts associés à une image complète.

Vous pouvez créer deux types de modèles de classification : la *classification d’images* et la *classification à plusieurs étiquettes*. Pour les deux types de modèles de classification, le modèle trouve une ou plusieurs étiquettes correspondantes parmi l’ensemble complet d’étiquettes utilisées pour l’entraînement. Les jeux de données d’entraînement et de test nécessitent tous au moins deux étiquettes. 

### Classification d’images
<a name="md-dataset-image-classification"></a>

 

Le modèle classe les images comme appartenant à un ensemble d’étiquettes prédéfinies. Supposons, par exemple, que vous ayez besoin d’un modèle qui détermine si une image contient un espace de vie. L’image suivante peut avoir une étiquette *living\$1space* au niveau de l’image. 

![\[Salon confortable avec foyer, grandes fenêtres donnant sur le patio arrière. Tons neutres, accents en bois.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/living_space1.jpeg)


Pour ce type de modèle, ajoutez une seule étiquette au niveau de l’image à chacune des images des jeux de données d’entraînement et de test. Pour un exemple de projet, consultez [Classification d’images](getting-started.md#gs-image-classification-example).

### Classification à plusieurs étiquettes
<a name="md-dataset-image-classification-multi-label"></a>

Le modèle classe les images dans plusieurs catégories, telles que le type de fleur et le fait qu’elle possède ou non des feuilles. Par exemple, l’image suivante peut comporter les étiquettes au niveau de l’image *euphorbe\$1méditerranéenne* et *sans\$1feuilles*.

![\[Gros plan d'une grappe de fleurs de viorne verte avec de petits fleurons serrés.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/mediterranean_spurge3.jpg)


Pour ce type de modèle, attribuez des étiquettes au niveau de l’image pour chaque catégorie aux images des jeux de données d’entraînement et de test. Pour un exemple de projet, consultez [Classification des images à plusieurs étiquettes](getting-started.md#gs-multi-label-image-classification-example).

### Attribution d’étiquettes au niveau de l’image
<a name="w2aac20c17c21b7c11"></a>

Si les images sont stockées dans un compartiment Amazon S3, vous pouvez utiliser les [noms de dossier](md-create-dataset-s3.md) pour ajouter automatiquement des étiquettes au niveau de l’image. Pour plus d’informations, consultez [Importation d'images depuis un compartiment Amazon S3](md-create-dataset-s3.md). Vous pouvez également ajouter des étiquettes au niveau de l’image aux images après avoir créé un jeu de données. Pour plus d’informations, consultez [Attribution d’étiquettes au niveau de l’image à une image](md-assign-image-level-labels.md). Vous pouvez ajouter de nouvelles étiquettes à votre convenance. Pour plus d’informations, consultez [Gestion des étiquettes](md-labels.md).

## Recherche des emplacements d’objets
<a name="md-dataset-purpose-localization"></a>

Pour créer un modèle qui prédit l’emplacement des objets dans vos images, vous devez définir des cadres de délimitation et des étiquettes pour les images dans les jeux de données d’entraînement et de test. Un cadre de délimitation entoure étroitement un objet. Par exemple, l’image suivante affiche un cadre de délimitation autour d’un appareil Amazon Echo et d’un appareil Amazon Echo Dot. Une étiquette est attribuée à chaque cadre de délimitation (*Amazon Echo* ou *Amazon Echo Dot*).

![\[Deux haut-parleurs intelligents Amazon, l'un avec boîtier de délimitation vert et l'autre avec boîtier de délimitation bleu, sur une surface en bois.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/echos.png)


Pour trouver les emplacements d’objets, les jeux de données doivent avoir au moins une étiquette. Pendant l’entraînement du modèle, une autre étiquette est automatiquement créée pour représenter la zone située en dehors des cadres de délimitation sur une image. 

### Attribution de cadres de délimitation
<a name="w2aac20c17c21b9b9"></a>

 Lorsque vous créez le jeu de données, vous pouvez inclure des informations relatives aux cadres de délimitation pour vos images. Par exemple, vous pouvez importer un [fichier manifeste](md-create-manifest-file.md) au format SageMaker AI Ground Truth contenant des cadres de délimitation. Vous pouvez également ajouter des cadres de délimitation après avoir créé un jeu de données. Pour plus d’informations, consultez [Étiquetage des objets à l’aide de cadres de délimitation](md-localize-objects.md). Vous pouvez ajouter de nouvelles étiquettes à votre convenance. Pour plus d’informations, consultez [Gestion des étiquettes](md-labels.md).

## Recherche de l’emplacement d’une marque
<a name="md-dataset-purpose-brands"></a>

Si vous souhaitez trouver l’emplacement d’une marque, telle qu’un logo et un personnage animé, vous pouvez utiliser deux types d’images différents pour les images du jeu de données d’entraînement. 
+  Images représentant uniquement le logo. Chaque image a besoin d’une seule étiquette au niveau de l’image, qui représente le nom du logo. Par exemple, l’étiquette au niveau de l’image pour l’image suivante pourrait être *Lambda*.  
![\[Logo Lambda en blanc sur fond orange.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/lambda-logo.jpg)
+ Images contenant le logo à des emplacements naturels, comme un match de football ou un schéma architectural. Chaque image d’entraînement nécessite des cadres de délimitation qui entourent chaque instance du logo. Par exemple, l'image suivante montre un schéma architectural avec des cadres de délimitation étiquetés entourant les logos AWS Lambda et Amazon Pinpoint.   
![\[Schéma de travail illustrant le service AWS Lambda qui transmet l'activité des utilisateurs à Amazon Pinpoint pour obtenir des recommandations.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/brand-detection-lambda.png)

Nous vous recommandons de ne pas combiner des étiquettes au niveau de l’image et des cadres de délimitation dans les images d’entraînement. 

Les images de test nécessitent des cadres de délimitation qui entourent les instances de la marque que vous souhaitez trouver. Vous pouvez fractionner le jeu de données d’entraînement pour créer le jeu de données de test, uniquement si les images d’entraînement incluent des cadres de délimitation étiquetés. Si les images d’entraînement ne comportent que des étiquettes au niveau de l’image, vous devrez créer un jeu de données de test comprenant des images avec des cadres de délimitation étiquetés. Si vous entraînez un modèle pour qu’il trouve l’emplacement d’une marque, effectuez les actions indiquées dans [Étiquetage des objets à l’aide de cadres de délimitation](md-localize-objects.md) et [Attribution d’étiquettes au niveau de l’image à une image](md-assign-image-level-labels.md) en fonction de la façon dont vous étiquetez vos images. 

L’exemple de projet [Détection des marques](getting-started.md#gs-brand-detection-example) montre comment Étiquettes personnalisées Amazon Rekognition utilise des cadres de délimitation étiquetés pour entraîner un modèle à rechercher les emplacements d’objets.

## Exigences d’étiquetage pour les types de modèles
<a name="md-model-types-table"></a>

Utilisez le tableau suivant pour déterminer comment étiqueter vos images. 

Vous pouvez combiner des étiquettes au niveau de l’image et des images étiquetées dans des cadres de délimitation dans un seul jeu de données. Dans ce cas, Étiquettes personnalisées Amazon Rekognition choisit de créer un modèle au niveau de l’image ou un modèle d’emplacement d’objets. 


| Exemple | Images d’entraînement | Images de test | 
| --- | --- | --- | 
|  [Classification d’images](#md-dataset-image-classification)  |  1 étiquette au niveau de l’image par image  |  1 étiquette au niveau de l’image par image   | 
|  [Classification à plusieurs étiquettes](#md-dataset-image-classification-multi-label)  |  Plusieurs étiquettes au niveau de l’image par image  |  Plusieurs étiquettes au niveau de l’image par image  | 
|  [Recherche de l’emplacement d’une marque](#md-dataset-purpose-brands)  |  étiquettes au niveau de l’image (vous pouvez également utiliser des cadres de délimitation étiquetés)  |  Cadres de délimitation étiquetés  | 
|  [Recherche des emplacements d’objets](#md-dataset-purpose-localization)  |  Cadres de délimitation étiquetés  |  Cadres de délimitation étiquetés  | 

# Préparation des images
<a name="md-prepare-images"></a>

 Les images de vos jeux de données d’entraînement et de test contiennent les objets, les scènes ou les concepts que vous souhaitez que votre modèle trouve. 

Leur contenu devrait se composer d’une variété d’arrière-plans et d’éclairages représentant les images que vous souhaitez que le modèle entraîné identifie.

Cette section fournit des informations sur les images de vos jeux de données d’entraînement et de test.

## Format d’image
<a name="pi-image-format"></a>

Vous pouvez entraîner les modèles Étiquettes personnalisées Amazon Rekognition avec des images au format PNG et JPEG. De même, pour détecter les étiquettes personnalisées à l’aide de `DetectCustomLabels`, vous avez besoin d’images au format PNG et JPEG.

## Recommandations relatives aux images d’entrée
<a name="md-image-recommendations"></a>

Étiquettes personnalisées Amazon Rekognition nécessite des images pour entraîner et tester le modèle. Pour préparer vos images, tenez compte des points suivants :
+ Choisissez un domaine spécifique pour le modèle que vous souhaitez créer. Par exemple, vous pouvez choisir un modèle pour les vues panoramiques et un autre modèle pour les objets tels que les pièces d’une machine. Étiquettes personnalisées Amazon Rekognition fonctionne mieux si vos images se trouvent dans le domaine choisi.
+ Utilisez au moins 10 images pour entraîner le modèle.
+ Les images doivent être au format PNG ou JPEG.
+ Utilisez des images qui montrent l’objet sous différents éclairages, arrière-plans et résolutions.
+ Les images d’entraînement et de test doivent être similaires aux images avec lesquelles vous souhaitez utiliser le modèle. 
+ Décidez quelles étiquettes attribuer aux images.
+ Assurez-vous que les images sont suffisamment grandes en termes de résolution. Pour plus d’informations, consultez [Directives et quotas dans Étiquettes personnalisées Amazon Rekognition](limits.md).
+ Assurez-vous que les occlusions ne masquent pas les objets que vous souhaitez détecter.
+ Utilisez des images dont le contraste est suffisant avec l’arrière-plan. 
+ Utilisez des images lumineuses et nettes. Évitez autant que possible d’utiliser des images qui peuvent être floues en raison du mouvement du sujet et de l’appareil photo.
+ Utilisez une image sur laquelle l’objet occupe une grande partie de l’espace.
+ Les images du jeu de données de test ne doivent pas être les images du jeu de données d’entraînement. Elles doivent comporter les objets, les scènes et les concepts que le modèle sera entraîné à analyser.

## Taille des images
<a name="md-set"></a>

Étiquettes personnalisées Amazon Rekognition utilise un ensemble d’images pour entraîner un modèle. Vous devez utiliser au moins 10 images pour l’entraînement. Étiquettes personnalisées Amazon Rekognition stocke les images d’entraînement et de test dans des jeux de données. Pour plus d’informations, consultez [Création de jeux de données d’entraînement et de test avec des images](md-create-dataset.md).

# Création de jeux de données d’entraînement et de test avec des images
<a name="md-create-dataset"></a>

Vous pouvez commencer par un projet avec un seul jeu de données ou avec un jeu de données d’entraînement et un jeu de données de test distincts. Si vous commencez avec un seul jeu de données, Étiquettes personnalisées Amazon Rekognition fractionne le jeu de données pendant l’entraînement afin de créer un jeu de données d’entraînement (80 %) et un jeu de données de test (20 %) pour votre projet. Commencez par un seul jeu de données si vous souhaitez qu’Étiquettes personnalisées Amazon Rekognition détermine où les images sont utilisées pour l’entraînement et les tests. Pour un contrôle complet de l’entraînement, du test et du réglage des performances, nous vous recommandons de démarrer votre projet avec des jeux de données d’entraînement et de test distincts. 

Pour créer des jeux de données d’entraînement et de test pour un projet, vous pouvez importer des images depuis l’un des emplacements suivants :
+ [Importation d'images depuis un compartiment Amazon S3](md-create-dataset-s3.md)
+ [Importation d'images depuis un ordinateur local](md-create-dataset-computer.md)
+ [Utilisation d'un fichier manifeste pour importer des images](md-create-dataset-ground-truth.md)
+ [Copier le contenu d'un ensemble de données existant](md-create-dataset-existing-dataset.md)

Si vous démarrez votre projet avec un jeu de données d’entraînement et un jeu de données de test distincts, vous pouvez utiliser des emplacements source différents pour chacun d’eux.

Selon leur provenance, vos images peuvent ne pas être étiquetées. Par exemple, les images importées à partir d’un ordinateur local ne sont pas étiquetées. Les images importées depuis un fichier manifeste Amazon SageMaker AI Ground Truth sont étiquetées. Vous pouvez utiliser la console Étiquettes personnalisées Amazon Rekognition pour ajouter, modifier et attribuer des étiquettes. Pour plus d’informations, consultez [Étiquetage des images](md-labeling-images.md).

Si les images sont chargées avec des erreurs, si des images sont manquantes ou si des étiquettes sont absentes des images, lisez [Débogage d’un entraînement de modèle en échec](tm-debugging.md).

Pour plus d’informations sur les jeux de données, consultez [Gestion des jeux de données](managing-dataset.md).

## Création de jeux de données d’entraînement et de test (kit SDK)
<a name="cd-create-dataset-sdk"></a>

Vous pouvez utiliser le AWS SDK pour créer des ensembles de données d'entraînement et de test.

L'`CreateDataset`opération vous permet de spécifier éventuellement des balises lors de la création d'un nouvel ensemble de données, dans le but de catégoriser et de gérer vos ressources. 

### Jeu de données d’entraînement
<a name="cd-create-training-dataset"></a>

Vous pouvez utiliser le AWS SDK pour créer un ensemble de données d'entraînement de la manière suivante.
+ [CreateDataset](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateDataset)À utiliser avec un fichier manifeste au format Amazon Sagemaker que vous fournissez. Pour de plus amples informations, veuillez consulter [Création d’un fichier manifeste](md-create-manifest-file.md). Pour obtenir un exemple de code, consultez [Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK) SageMaker AI Ground Truth](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk).
+ Utilisez `CreateDataset` pour copier un jeu de données Étiquettes personnalisées Amazon Rekognition existant. Pour obtenir un exemple de code, consultez [Création d’un jeu de données à partir d’un jeu de données existant (kit SDK)](md-create-dataset-existing-dataset-sdk.md).
+ Créez un jeu de données vide avec `CreateDataset`, puis ajoutez les entrées du jeu de données ultérieurement avec [UpdateDatasetEntries](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_UpdateDatasetEntries). Pour créer un jeu de données vide, consultez [Ajout d’un jeu de données à un projet](md-add-dataset.md). Pour ajouter des images à un jeu de données, consultez [Ajout d’autres images (kit SDK)](md-add-images.md#md-add-images-sdk). Vous devez ajouter les entrées du jeu de données avant de pouvoir entraîner un modèle.

### Jeu de données de test
<a name="cd-create-test-dataset"></a>

Vous pouvez utiliser le AWS SDK pour créer un ensemble de données de test de la manière suivante :
+ [CreateDataset](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateDataset)À utiliser avec un fichier manifeste au format Amazon Sagemaker que vous fournissez. Pour de plus amples informations, veuillez consulter [Création d’un fichier manifeste](md-create-manifest-file.md). Pour obtenir un exemple de code, consultez [Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK) SageMaker AI Ground Truth](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk).
+ Utilisez `CreateDataset` pour copier un jeu de données Étiquettes personnalisées Amazon Rekognition existant. Pour obtenir un exemple de code, consultez [Création d’un jeu de données à partir d’un jeu de données existant (kit SDK)](md-create-dataset-existing-dataset-sdk.md).
+ Créez un jeu de données vide avec `CreateDataset`, puis ajoutez les entrées du jeu de données ultérieurement avec `UpdateDatasetEntries`. Pour créer un jeu de données vide, consultez [Ajout d’un jeu de données à un projet](md-add-dataset.md). Pour ajouter des images à un jeu de données, consultez [Ajout d’autres images (kit SDK)](md-add-images.md#md-add-images-sdk). Vous devez ajouter les entrées du jeu de données avant de pouvoir entraîner un modèle.
+ Fractionnez le jeu de données d’entraînement en un jeu de données d’entraînement et un jeu de données de test distincts. Créez d’abord un jeu de données de test vide avec `CreateDataset`. Déplacez ensuite 20 % des entrées du jeu de données d'entraînement dans le jeu de données de test en appelant [DistributeDatasetEntries](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DistributeDatasetEntries). Pour créer un jeu de données vide, consultez [Ajout d’un jeu de données à un projet (kit SDK)](md-add-dataset.md#md-add-dataset-sdk). Pour fractionner le jeu de données d’entraînement, consultez [Distribution d’un jeu de données d’entraînement (kit SDK)](md-distributing-datasets.md).

# Importation d'images depuis un compartiment Amazon S3
<a name="md-create-dataset-s3"></a>

Les images sont stockées dans un compartiment Amazon S3. Vous pouvez utiliser le compartiment de console ou un autre compartiment Amazon S3 de votre AWS compte. Si vous utilisez le compartiment de la console, les autorisations requises sont déjà configurées. Si vous n’utilisez pas le compartiment de la console, consultez [Accès à des compartiments Amazon S3 externes](su-console-policy.md#su-external-buckets).

**Note**  
Vous ne pouvez pas utiliser le AWS SDK pour créer un ensemble de données directement à partir d'images d'un compartiment Amazon S3. Créez plutôt un fichier manifeste faisant référence aux emplacements sources des images. Pour plus d’informations, consultez [Utilisation d'un fichier manifeste pour importer des images](md-create-dataset-ground-truth.md).

Lors de la création du jeu de données, vous pouvez choisir d’attribuer des noms d’étiquette aux images en fonction du nom du dossier contenant les images. Le ou les dossiers doivent être un élément enfant du chemin du dossier Amazon S3 que vous spécifiez dans l’**emplacement du dossier S3** lors de la création du jeu de données. Pour créer un jeu de données, consultez [Création d’un jeu de données en important des images depuis un compartiment S3](#cd-procedure).

Par exemple, supposons qu’un compartiment Amazon S3 ait la structure de dossiers suivante. Si vous spécifiez l’emplacement du dossier Amazon S3 comme étant *S3-bucket/alexa-devices*, l’étiquette *echo* est attribuée aux images du dossier *echo*. De même, l’étiquette *echo-dot* est attribuée aux images du dossier *echo-dot*. Le nom des dossiers enfants situés plus loin dans la structure de dossiers n’est pas utilisé pour étiqueter les images. Au lieu de cela, le dossier enfant approprié correspondant à l’emplacement du dossier Amazon S3 est utilisé. Par exemple, le label *echo-dot *white-echo-dots**est attribué aux images du dossier. Aucune étiquette n’est attribuée aux images situées au niveau de l’emplacement du dossier S3 (*alexa-devices*).

 Les dossiers situés plus loin dans la structure de dossiers peuvent être utilisés pour étiqueter des images en spécifiant un emplacement de dossier S3 plus profond. Par exemple, si vous spécifiez *S3- bucket/alexa-devices/echo -dot*, les images du dossier *white-echo-dot*sont étiquetées *white-echo-dot*. Les images situées en dehors de l’emplacement du dossier S3 spécifié, comme *echo*, ne sont pas importées.

```
S3-bucket
└── alexa-devices
    ├── echo
    │   ├── echo-image-1.png
    │   └── echo-image-2.png
    │   ├── .
    │   └── .
    └── echo-dot
        ├── white-echo-dot
        │   ├── white-echo-dot-image-1.png
        │   ├── white-echo-dot-image-2.png
        │
        ├── echo-dot-image-1.png
        ├── echo-dot-image-2.png
        ├── .
        └── .
```

Nous vous recommandons d'utiliser le compartiment Amazon S3 (compartiment de console) créé pour vous par Amazon Rekognition lorsque vous avez ouvert la console pour la première fois dans la région actuelle. AWS Si le compartiment Amazon S3 que vous utilisez est différent du compartiment de la console (c’est-à-dire s’il est externe), la console vous invite à configurer les autorisations appropriées lors de la création du jeu de données. Pour plus d’informations, consultez [Étape 2 : Configurer les autorisations d’accès à la console Étiquettes personnalisées Amazon Rekognition](su-console-policy.md). 

## Création d’un jeu de données en important des images depuis un compartiment S3
<a name="cd-procedure"></a>

La procédure suivante vous explique comment créer un jeu de données à l’aide d’images stockées dans le compartiment de la console S3. Les images sont automatiquement étiquetées avec le nom du dossier dans lequel elles sont stockées. 

Après avoir importé vos images, vous pouvez ajouter d’autres images, attribuer des étiquettes et ajouter des cadres de délimitation à partir de la page de galerie d’un jeu de données. Pour plus d’informations, consultez [Étiquetage des images](md-labeling-images.md).<a name="cd-upload-s3-bucket"></a>

**Chargement des images dans un compartiment Amazon Simple Storage Service**

1. Créez un dossier dans votre système de fichiers local. Utilisez un nom de dossier tel qu’*alexa-devices*.

1. Dans le dossier que vous venez de créer, ajoutez des dossiers portant le nom de chaque étiquette que vous souhaitez utiliser (par exemple, *echo* et *echo-point*). La structure de dossiers devrait ressembler à ce qui suit.

   ```
   alexa-devices
   ├── echo
   │   ├── echo-image-1.png
   │   ├── echo-image-2.png
   │   ├── .
   │   └── .
   └── echo-dot
       ├── echo-dot-image-1.png
       ├── echo-dot-image-2.png
       ├── .
       └── .
   ```

1. Placez les images correspondant à une étiquette dans le dossier portant le même nom d’étiquette.

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. [Ajoutez le dossier](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) que vous avez créé à l’étape 1 au compartiment Amazon S3 (compartiment de la console) créé pour vous par Étiquettes personnalisées Amazon Rekognition lors de la *première configuration*. Pour de plus amples informations, veuillez consulter [Gestion d’un projet Étiquettes personnalisées Amazon Rekognition](managing-project.md).

1. Ouvrez la console Amazon Rekognition à l'adresse. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Choisissez **Utiliser Custom Labels**.

1. Choisissez **Démarrer**. 

1. Dans le volet de navigation de gauche, choisissez **Projets**.

1. Sur la page **Projets**, choisissez le projet auquel vous souhaitez ajouter un jeu de données. La page de détails de ce projet s’affiche.

1. Choisissez **Créer un jeu de données**. La page **Créer un jeu de données** s’affiche.

1. Dans **Démarrage de la configuration**, choisissez **Démarrer avec un seul jeu de données** ou **Démarrer avec un jeu de données d’entraînement**. Pour créer un modèle de meilleure qualité, nous vous recommandons de commencer par un jeu de données d’entraînement et un jeu de données de test distincts.

------
#### [ Single dataset ]

   1. Dans la section **Détails du jeu de données d’entraînement**, choisissez **Importer des images depuis le compartiment S3**.

   1. Dans la section **Détails du jeu de données d’entraînement**, entrez les informations relatives aux étapes 13 à 15 de la section **Configuration de la source d’image**. 

------
#### [ Separate training and test datasets ]

   1. Dans la section **Détails du jeu de données d’entraînement**, choisissez **Importer des images depuis le compartiment S3**.

   1. Dans la section **Détails du jeu de données d’entraînement**, entrez les informations relatives aux étapes 13 à 15 de la section **Configuration de la source d’image**. 

   1. Dans la section **Détails du jeu de données de test**, choisissez **Importer des images depuis le compartiment S3**.

   1. Dans la section **Détails du jeu de données de test**, entrez les informations relatives aux étapes 13 à 15 de la section **Configuration de la source d’image**. 

------

1. Choisissez **Importer des images depuis le compartiment Amazon S3**.

1. Dans **URI S3**, entrez l’emplacement du compartiment Amazon S3 et le chemin du dossier. 

1. Choisissez **Associer automatiquement des étiquettes aux images en fonction du dossier**.

1. Choisissez **Créer des jeux de données**. La page des jeux de données de votre projet s’ouvre.

1. Si vous devez ajouter ou modifier des étiquettes, effectuez les actions indiquées dans [Étiquetage des images](md-labeling-images.md).

1. Suivez les étapes décrites dans [Entraînement d’un modèle (console)](training-model.md#tm-console) pour entraîner le modèle.

# Importation d'images depuis un ordinateur local
<a name="md-create-dataset-computer"></a>

Les images sont chargées directement depuis votre ordinateur. Vous pouvez charger jusqu’à 30 images à la fois.

Aucune étiquette n’est associée aux images que vous chargez. Pour plus d’informations, consultez [Étiquetage des images](md-labeling-images.md). Si vous avez de nombreuses images à charger, pensez à utiliser un compartiment Amazon S3. Pour de plus amples informations, veuillez consulter [Importation d'images depuis un compartiment Amazon S3](md-create-dataset-s3.md).

**Note**  
Vous ne pouvez pas utiliser le AWS SDK pour créer un jeu de données avec des images locales. Créez plutôt un fichier manifeste et chargez les images dans un compartiment Amazon S3. Pour plus d’informations, consultez [Utilisation d'un fichier manifeste pour importer des images](md-create-dataset-ground-truth.md).

**Pour créer un jeu de données à l’aide d’images d’un ordinateur local (console)**

1. Ouvrez la console Amazon Rekognition à l'adresse. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Choisissez **Utiliser Custom Labels**.

1. Choisissez **Démarrer**. 

1. Dans le volet de navigation de gauche, choisissez **Projets**.

1. Sur la page **Projets**, choisissez le projet auquel vous souhaitez ajouter un jeu de données. La page de détails de ce projet s’affiche.

1. Choisissez **Créer un jeu de données**. La page **Créer un jeu de données** s’affiche.

1. Dans **Démarrage de la configuration**, choisissez **Démarrer avec un seul jeu de données** ou **Démarrer avec un jeu de données d’entraînement**. Pour créer un modèle de meilleure qualité, nous vous recommandons de commencer par un jeu de données d’entraînement et un jeu de données de test distincts.

------
#### [ Single dataset ]

   1. Dans la section **Détails du jeu de données d’entraînement**, choisissez **Charger des images depuis votre ordinateur**.

   1. Choisissez **Créer un jeu de données**. 

   1. Sur la page du jeu de données du projet, choisissez **Ajouter des images**. 

   1. Choisissez les images que vous souhaitez charger dans le jeu de données à partir des fichiers de votre ordinateur. Vous pouvez faire glisser les images ou choisir celles que vous souhaitez charger à partir de votre ordinateur local.

   1. Choisissez **Charger des images**.

------
#### [ Separate training and test datasets ]

   1. Dans la section **Détails du jeu de données d’entraînement**, choisissez **Charger des images depuis votre ordinateur**.

   1. Dans la section **Détails du jeu de données de test**, choisissez **Charger des images depuis votre ordinateur**.
**Note**  
Le jeu de données d’entraînement et le jeu de données de test peuvent avoir différentes sources d’images.

   1. Choisissez **Créer des jeux de données**. La page des jeux de données de votre projet apparaît avec un onglet **Entraînement** et un onglet **Test** pour les jeux de données respectifs. 

   1. Choisissez **Actions**, puis sélectionnez **Ajouter des images au jeu de données d’entraînement**.

   1. Choisissez les images que vous souhaitez charger dans le jeu de données. Vous pouvez faire glisser les images ou choisir celles que vous souhaitez charger à partir de votre ordinateur local.

   1. Choisissez **Charger des images**.

   1. Répétez les étapes 5e à 5g. Pour l’étape 5e, choisissez **Actions**, puis sélectionnez **Ajouter des images au jeu de données de test**.

------

1. Suivez les étapes décrites dans [Étiquetage des images](md-labeling-images.md) pour étiqueter les images.

1. Suivez les étapes décrites dans [Entraînement d’un modèle (console)](training-model.md#tm-console) pour entraîner le modèle.

# Utilisation d'un fichier manifeste pour importer des images
<a name="md-create-dataset-ground-truth"></a>

Vous pouvez créer un ensemble de données à l'aide d'un fichier manifeste au format Amazon SageMaker AI Ground Truth. Vous pouvez utiliser le fichier manifeste d'une tâche Amazon SageMaker AI Ground Truth. Si vos images et vos étiquettes ne sont pas au format d'un fichier manifeste SageMaker AI Ground Truth, vous pouvez créer un fichier manifeste au format SageMaker AI et l'utiliser pour importer vos images étiquetées. 

L'`CreateDataset`opération est mise à jour pour vous permettre de spécifier éventuellement des balises lors de la création d'un nouvel ensemble de données. Les balises sont des paires clé-valeur que vous pouvez utiliser pour classer et gérer vos ressources. 

**Topics**
+ [Création d'un ensemble de données à l'aide d'un fichier manifeste SageMaker AI Ground Truth (console)](#md-create-dataset-ground-truth-console)
+ [Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK) SageMaker AI Ground Truth](#md-create-dataset-ground-truth-sdk)
+ [Créer une demande de jeu de données](#create-dataset-ground-truth-request)
+ [Étiqueter des images avec une tâche Amazon SageMaker AI Ground Truth](md-create-dataset-ground-truth-job.md)
+ [Création d’un fichier manifeste](md-create-manifest-file.md)
+ [Importation d'étiquettes au niveau de l'image dans des fichiers manifestes](md-create-manifest-file-classification.md)
+ [Localisation d’objets dans les fichiers manifestes](md-create-manifest-file-object-detection.md)
+ [Règles de validation des fichiers manifestes](md-create-manifest-file-validation-rules.md)
+ [Conversion d’autres formats de jeu de données en fichier manifeste](md-converting-to-sm-format.md)

## Création d'un ensemble de données à l'aide d'un fichier manifeste SageMaker AI Ground Truth (console)
<a name="md-create-dataset-ground-truth-console"></a>

La procédure suivante explique comment créer un ensemble de données à l'aide d'un fichier manifeste au format SageMaker AI Ground Truth. 

1. Pour créer un fichier manifeste pour le jeu de données d’entraînement, effectuez l’une des actions suivantes :
   + Créez un fichier manifeste avec un SageMaker AI GroundTruth Job en suivant les instructions de[Étiqueter des images avec une tâche Amazon SageMaker AI Ground Truth](md-create-dataset-ground-truth-job.md). 
   + Créez votre propre fichier manifeste en suivant les instructions sous [Création d’un fichier manifeste](md-create-manifest-file.md). 

   Si vous souhaitez créer un jeu de données de test, répétez l’étape 1.

1. Ouvrez la console Amazon Rekognition à l'adresse. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Choisissez **Utiliser Custom Labels**.

1. Choisissez **Démarrer**. 

1. Dans le volet de navigation de gauche, choisissez **Projets**.

1. Sur la page **Projets**, choisissez le projet auquel vous souhaitez ajouter un jeu de données. La page de détails de ce projet s’affiche.

1. Choisissez **Créer un jeu de données**. La page **Créer un jeu de données** s’affiche.

1. Dans **Démarrage de la configuration**, choisissez **Démarrer avec un seul jeu de données** ou **Démarrer avec un jeu de données d’entraînement**. Pour créer un modèle de meilleure qualité, nous vous recommandons de commencer par un jeu de données d’entraînement et un jeu de données de test distincts.

------
#### [ Single dataset ]

   1. Dans la section des **détails du jeu de données d'entraînement**, choisissez **Importer des images étiquetées par SageMaker Ground Truth**.

   1. Dans **Emplacement du fichier .manifest**, entrez l’emplacement du fichier manifeste que vous avez créé à l’étape 1.

   1. Choisissez **Créer un jeu de données**. La page des jeux de données de votre projet s’ouvre.

------
#### [ Separate training and test datasets ]

   1. Dans la section des **détails du jeu de données d'entraînement**, choisissez **Importer des images étiquetées par SageMaker Ground Truth**.

   1. Dans **Emplacement du fichier .manifest**, entrez l’emplacement du fichier manifeste que vous avez créé à l’étape 1 pour le jeu de données d’entraînement.

   1. Dans la section **Détails du jeu de données de test**, choisissez **Importer des images étiquetées par SageMaker Ground Truth**.
**Note**  
Le jeu de données d’entraînement et le jeu de données de test peuvent avoir différentes sources d’images.

   1. Dans **Emplacement du fichier .manifest**, entrez l’emplacement du fichier manifeste que vous avez créé à l’étape 1 pour le jeu de données de test.

   1. Choisissez **Créer des jeux de données**. La page des jeux de données de votre projet s’ouvre.

------

1. Si vous devez ajouter ou modifier des étiquettes, effectuez les actions indiquées dans [Étiquetage des images](md-labeling-images.md).

1. Suivez les étapes décrites dans [Entraînement d’un modèle (console)](training-model.md#tm-console) pour entraîner le modèle.

## Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK) SageMaker AI Ground Truth
<a name="md-create-dataset-ground-truth-sdk"></a>

La procédure suivante explique comment créer des ensembles de données d'entraînement ou de test à partir d'un fichier manifeste à l'aide de l'[CreateDataset](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateDataset)API.

Vous pouvez utiliser un fichier manifeste existant, tel que le résultat d'une [tâche SageMaker AI Ground Truth](md-create-dataset-ground-truth-job.md), ou créer votre propre [fichier manifeste](md-create-manifest-file.md). 

1. Si ce n'est pas déjà fait, installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 4 : configurer le AWS CLI et AWS SDKs](su-awscli-sdk.md).

1. Pour créer un fichier manifeste pour le jeu de données d’entraînement, effectuez l’une des actions suivantes :
   + Créez un fichier manifeste avec un SageMaker AI GroundTruth Job en suivant les instructions de[Étiqueter des images avec une tâche Amazon SageMaker AI Ground Truth](md-create-dataset-ground-truth-job.md). 
   + Créez votre propre fichier manifeste en suivant les instructions sous [Création d’un fichier manifeste](md-create-manifest-file.md). 

   Si vous souhaitez créer un jeu de données de test, répétez l’étape 2.

1. Utilisez l’exemple de code suivant pour créer le jeu de données d’entraînement et de test.

------
#### [ AWS CLI ]

   Utilisez le code suivant pour créer un jeu de données. Remplacez les éléments suivants :
   + `project_arn` : ARN du projet que vous souhaitez ajouter au jeu de données de test.
   + `type` : type de jeu de données que vous souhaitez créer (TRAIN pour « entraînement » ou TEST).
   + `bucket` : compartiment qui contient le fichier manifeste correspondant au jeu de données.
   + `manifest_file` : nom de fichier et chemin d’accès du fichier manifeste.

   ```
   aws rekognition create-dataset --project-arn project_arn \
     --dataset-type type \
     --dataset-source '{ "GroundTruthManifest": { "S3Object": { "Bucket": "bucket", "Name": "manifest_file" } } }' \
     --profile custom-labels-access
     --tags '{"key1": "value1", "key2": "value2"}'
   ```

------
#### [ Python ]

   Utilisez les valeurs suivantes pour créer un jeu de données. Fournissez les paramètres de ligne de commande suivants :
   + `project_arn` : ARN du projet que vous souhaitez ajouter au jeu de données de test.
   + `dataset_type` : type de jeu de données que vous souhaitez créer (`train` ou `test`).
   + `bucket` : compartiment qui contient le fichier manifeste correspondant au jeu de données.
   + `manifest_file` : nom de fichier et chemin d’accès du fichier manifeste.

   ```
   #Copyright 2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
   #PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-custom-labels-developer-guide/blob/master/LICENSE-SAMPLECODE.)
   
   
   import argparse
   import logging
   import time
   import json
   import boto3
   from botocore.exceptions import ClientError
   
   logger = logging.getLogger(__name__)
   
   def create_dataset(rek_client, project_arn, dataset_type, bucket, manifest_file):
       """
       Creates an Amazon Rekognition Custom Labels dataset.
       :param rek_client: The Amazon Rekognition Custom Labels Boto3 client.
       :param project_arn: The ARN of the project in which you want to create a dataset.
       :param dataset_type: The type of the dataset that you want to create (train or test).
       :param bucket: The S3 bucket that contains the manifest file.
       :param manifest_file: The path and filename of the manifest file.
       """
   
       try:
           #Create the project
           logger.info("Creating %s dataset for project %s",dataset_type, project_arn)
   
           dataset_type = dataset_type.upper()
   
           dataset_source = json.loads(
               '{ "GroundTruthManifest": { "S3Object": { "Bucket": "'
               + bucket
               + '", "Name": "'
               + manifest_file
               + '" } } }'
           )
   
           response = rek_client.create_dataset(
               ProjectArn=project_arn, DatasetType=dataset_type, DatasetSource=dataset_source
           )
   
           dataset_arn=response['DatasetArn']
   
           logger.info("dataset ARN: %s",dataset_arn)
   
           finished=False
           while finished is False:
   
               dataset=rek_client.describe_dataset(DatasetArn=dataset_arn)
   
               status=dataset['DatasetDescription']['Status']
               
               if status == "CREATE_IN_PROGRESS":
                   logger.info("Creating dataset: %s ",dataset_arn)
                   time.sleep(5)
                   continue
   
               if status == "CREATE_COMPLETE":
                   logger.info("Dataset created: %s", dataset_arn)
                   finished=True
                   continue
   
               if status == "CREATE_FAILED":
                   error_message = f"Dataset creation failed: {status} : {dataset_arn}"
                   logger.exception(error_message)
                   raise Exception (error_message)
                   
               error_message = f"Failed. Unexpected state for dataset creation: {status} : {dataset_arn}"
               logger.exception(error_message)
               raise Exception(error_message)
               
           return dataset_arn
      
       
       except ClientError as err:
           logger.exception("Couldn't create dataset: %s",err.response['Error']['Message'])
           raise
   
   def add_arguments(parser):
       """
       Adds command line arguments to the parser.
       :param parser: The command line parser.
       """
   
       parser.add_argument(
           "project_arn", help="The ARN of the project in which you want to create the dataset."
       )
   
       parser.add_argument(
           "dataset_type", help="The type of the dataset that you want to create (train or test)."
       )
   
       parser.add_argument(
           "bucket", help="The S3 bucket that contains the manifest file."
       )
       
       parser.add_argument(
           "manifest_file", help="The path and filename of the manifest file."
       )
   
   
   def main():
   
       logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s")
   
       try:
   
           #Get command line arguments.
           parser = argparse.ArgumentParser(usage=argparse.SUPPRESS)
           add_arguments(parser)
           args = parser.parse_args()
   
           print(f"Creating {args.dataset_type} dataset for project {args.project_arn}")
   
           #Create the dataset.
           session = boto3.Session(profile_name='custom-labels-access')
           rekognition_client = session.client("rekognition")
   
           dataset_arn=create_dataset(rekognition_client, 
               args.project_arn,
               args.dataset_type,
               args.bucket,
               args.manifest_file)
   
           print(f"Finished creating dataset: {dataset_arn}")
   
   
       except ClientError as err:
           logger.exception("Problem creating dataset: %s", err)
           print(f"Problem creating dataset: {err}")
   
   
   
   if __name__ == "__main__":
       main()
   ```

------
#### [ Java V2 ]

   Utilisez les valeurs suivantes pour créer un jeu de données. Fournissez les paramètres de ligne de commande suivants :
   + `project_arn` : ARN du projet que vous souhaitez ajouter au jeu de données de test.
   + `dataset_type` : type de jeu de données que vous souhaitez créer (`train` ou `test`).
   + `bucket` : compartiment qui contient le fichier manifeste correspondant au jeu de données.
   + `manifest_file` : nom de fichier et chemin d’accès du fichier manifeste.

   ```
   /*
      Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
      SPDX-License-Identifier: Apache-2.0
   */
   
   package com.example.rekognition;
   
   import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
   import software.amazon.awssdk.regions.Region;
   import software.amazon.awssdk.services.rekognition.RekognitionClient;
   import software.amazon.awssdk.services.rekognition.model.CreateDatasetRequest;
   import software.amazon.awssdk.services.rekognition.model.CreateDatasetResponse;
   import software.amazon.awssdk.services.rekognition.model.DatasetDescription;
   import software.amazon.awssdk.services.rekognition.model.DatasetSource;
   import software.amazon.awssdk.services.rekognition.model.DatasetStatus;
   import software.amazon.awssdk.services.rekognition.model.DatasetType;
   import software.amazon.awssdk.services.rekognition.model.DescribeDatasetRequest;
   import software.amazon.awssdk.services.rekognition.model.DescribeDatasetResponse;
   import software.amazon.awssdk.services.rekognition.model.GroundTruthManifest;
   import software.amazon.awssdk.services.rekognition.model.RekognitionException;
   import software.amazon.awssdk.services.rekognition.model.S3Object;
   
   import java.util.logging.Level;
   import java.util.logging.Logger;
   
   public class CreateDatasetManifestFiles {
   
       public static final Logger logger = Logger.getLogger(CreateDatasetManifestFiles.class.getName());
   
       public static String createMyDataset(RekognitionClient rekClient, String projectArn, String datasetType,
               String bucket, String name) throws Exception, RekognitionException {
   
           try {
   
               logger.log(Level.INFO, "Creating {0} dataset for project : {1} from s3://{2}/{3} ",
                       new Object[] { datasetType, projectArn, bucket, name });
   
               DatasetType requestDatasetType = null;
   
               switch (datasetType) {
               case "train":
                   requestDatasetType = DatasetType.TRAIN;
                   break;
               case "test":
                   requestDatasetType = DatasetType.TEST;
                   break;
               default:
                   logger.log(Level.SEVERE, "Could not create dataset. Unrecognized dataset type: {0}", datasetType);
                   throw new Exception("Could not create dataset. Unrecognized dataset type: " + datasetType);
   
               }
   
               GroundTruthManifest groundTruthManifest = GroundTruthManifest.builder()
                       .s3Object(S3Object.builder().bucket(bucket).name(name).build()).build();
   
               DatasetSource datasetSource = DatasetSource.builder().groundTruthManifest(groundTruthManifest).build();
   
               CreateDatasetRequest createDatasetRequest = CreateDatasetRequest.builder().projectArn(projectArn)
                       .datasetType(requestDatasetType).datasetSource(datasetSource).build();
   
               CreateDatasetResponse response = rekClient.createDataset(createDatasetRequest);
   
               boolean created = false;
   
               do {
   
                   DescribeDatasetRequest describeDatasetRequest = DescribeDatasetRequest.builder()
                           .datasetArn(response.datasetArn()).build();
                   DescribeDatasetResponse describeDatasetResponse = rekClient.describeDataset(describeDatasetRequest);
   
                   DatasetDescription datasetDescription = describeDatasetResponse.datasetDescription();
   
                   DatasetStatus status = datasetDescription.status();
   
                   logger.log(Level.INFO, "Creating dataset ARN: {0} ", response.datasetArn());
   
                   switch (status) {
   
                   case CREATE_COMPLETE:
                       logger.log(Level.INFO, "Dataset created");
                       created = true;
                       break;
   
                   case CREATE_IN_PROGRESS:
                       Thread.sleep(5000);
                       break;
   
                   case CREATE_FAILED:
                       String error = "Dataset creation failed: " + datasetDescription.statusAsString() + " "
                               + datasetDescription.statusMessage() + " " + response.datasetArn();
                       logger.log(Level.SEVERE, error);
                       throw new Exception(error);
   
                   default:
                       String unexpectedError = "Unexpected creation state: " + datasetDescription.statusAsString() + " "
                               + datasetDescription.statusMessage() + " " + response.datasetArn();
                       logger.log(Level.SEVERE, unexpectedError);
                       throw new Exception(unexpectedError);
                   }
   
               } while (created == false);
   
               return response.datasetArn();
   
           } catch (RekognitionException e) {
               logger.log(Level.SEVERE, "Could not create dataset: {0}", e.getMessage());
               throw e;
           }
   
       }
   
       public static void main(String[] args) {
   
           String datasetType = null;
           String bucket = null;
           String name = null;
           String projectArn = null;
           String datasetArn = null;
   
           final String USAGE = "\n" + "Usage: " + "<project_arn> <dataset_type> <dataset_arn>\n\n" + "Where:\n"
                   + "   project_arn - the ARN of the project that you want to add copy the datast to.\n\n"
                   + "   dataset_type - the type of the dataset that you want to create (train or test).\n\n"
                   + "   bucket - the S3 bucket that contains the manifest file.\n\n"
                   + "   name - the location and name of the manifest file within the bucket.\n\n";
   
           if (args.length != 4) {
               System.out.println(USAGE);
               System.exit(1);
           }
   
           projectArn = args[0];
           datasetType = args[1];
           bucket = args[2];
           name = args[3];
   
           try {
   
               // Get the Rekognition client
               RekognitionClient rekClient = RekognitionClient.builder()
                   .credentialsProvider(ProfileCredentialsProvider.create("custom-labels-access"))
                   .region(Region.US_WEST_2)
                   .build();
   
   
                // Create the dataset
               datasetArn = createMyDataset(rekClient, projectArn, datasetType, bucket, name);
   
               System.out.println(String.format("Created dataset: %s", datasetArn));
   
               rekClient.close();
   
           } catch (RekognitionException rekError) {
               logger.log(Level.SEVERE, "Rekognition client error: {0}", rekError.getMessage());
               System.exit(1);
           } catch (Exception rekError) {
               logger.log(Level.SEVERE, "Error: {0}", rekError.getMessage());
               System.exit(1);
           }
   
       }
   
   }
   ```

------

1. Si vous devez ajouter ou modifier des étiquettes, consultez [Gestion des étiquettes (kit SDK)](md-labels.md#md-labels-sdk).

1. Suivez les étapes décrites dans [Entraînement d’un modèle (kit SDK)](training-model.md#tm-sdk) pour entraîner le modèle.

## Créer une demande de jeu de données
<a name="create-dataset-ground-truth-request"></a>

 Le format de la demande d' CreateDataset opération est le suivant : 

```
{
"DatasetSource": {
"DatasetArn": "string",
"GroundTruthManifest": {
"S3Object": {
"Bucket": "string",
"Name": "string",
"Version": "string"
}
}
},
"DatasetType": "string",
"ProjectArn": "string",
"Tags": {
"string": "string"
}
}
```

# Étiqueter des images avec une tâche Amazon SageMaker AI Ground Truth
<a name="md-create-dataset-ground-truth-job"></a>

Avec Amazon SageMaker AI Ground Truth, vous pouvez faire appel à des employés d'Amazon Mechanical Turk, un fournisseur de votre choix, ou à une main-d'œuvre interne du secteur privé, ainsi qu'à un apprentissage automatique qui vous permet de créer un ensemble d'images étiquetées. Amazon Rekognition Custom Labels importe les fichiers manifestes SageMaker AI Ground Truth à partir d'un compartiment Amazon S3 que vous spécifiez.

Les étiquettes personnalisées Amazon Rekognition prennent en charge les tâches SageMaker AI Ground Truth suivantes.
+ [Classification d’images](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-image-classification.html)
+ [Cadre de délimitation](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-bounding-box.html)

Les fichiers que vous importez sont les images et un fichier manifeste. Le fichier manifeste contient les informations relatives aux étiquettes et aux cadres de délimitation des images que vous importez.

Amazon Rekognition a besoin d’autorisations pour accéder au compartiment Amazon S3 dans lequel vos images sont stockées. Si vous utilisez le compartiment de la console configuré pour vous par Étiquettes personnalisées Amazon Rekognition, les autorisations requises sont déjà configurées. Si vous n’utilisez pas le compartiment de la console, consultez [Accès à des compartiments Amazon S3 externes](su-console-policy.md#su-external-buckets).

## Création d'un fichier manifeste avec une tâche SageMaker AI Ground Truth (Console)
<a name="md-create-dataset-ground-truth-job-console"></a>

La procédure suivante explique comment créer un ensemble de données à l'aide d'images étiquetées par une tâche SageMaker AI Ground Truth. Les fichiers de sortie des tâches sont stockés dans le compartiment de la console Étiquettes personnalisées Amazon Rekognition.<a name="create-dataset-procedure-ground-truth"></a>

**Pour créer un ensemble de données à l'aide d'images étiquetées par une tâche SageMaker AI Ground Truth (console)**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le compartiment de la console, [créez un dossier](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-folder.html) destiné à vos images d’entraînement. 
**Note**  
Le bucket de console est créé lorsque vous ouvrez pour la première fois la console Amazon Rekognition Custom Labels dans une région. AWS Pour de plus amples informations, veuillez consulter [Gestion d’un projet Étiquettes personnalisées Amazon Rekognition](managing-project.md).

1. [Chargez vos images](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) dans le dossier que vous venez de créer.

1. Dans le compartiment de la console, créez un dossier destiné à la sortie de la tâche Ground Truth.

1. Ouvrez la console SageMaker AI à l'adresse [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/).

1. Créez une tâche d’étiquetage Ground Truth. Vous aurez besoin de l'Amazon S3 URLs pour les dossiers que vous avez créés aux étapes 2 et 4. Pour plus d'informations, consultez [Utiliser Amazon SageMaker Ground Truth pour l'étiquetage des données](https://docs.aws.amazon.com/sagemaker/latest/dg/sms.html). 

1. Notez l’emplacement du fichier `output.manifest` dans le dossier que vous avez créé à l’étape 4. Il devrait se trouver dans le sous-dossier `Ground-Truth-Job-Name/manifests/output`.

1. Suivez les instructions sous [Création d'un ensemble de données à l'aide d'un fichier manifeste SageMaker AI Ground Truth (console)](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-console) pour créer un jeu de données avec le fichier manifeste chargé. Pour l’étape 8, dans **Emplacement du fichier .manifest**, entrez l’URL Amazon S3 correspondant à l’emplacement indiqué à l’étape précédente. Si vous utilisez le AWS SDK, faites-le[Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK) SageMaker AI Ground Truth](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk).

1. Répétez les étapes 1 à 6 pour créer une tâche SageMaker AI Ground Truth pour votre ensemble de données de test.

# Création d’un fichier manifeste
<a name="md-create-manifest-file"></a>

Vous pouvez créer un ensemble de données de test ou d'entraînement en important un fichier manifeste au format SageMaker AI Ground Truth. Si vos images sont étiquetées dans un format autre qu'un fichier manifeste SageMaker AI Ground Truth, utilisez les informations suivantes pour créer un fichier manifeste au format SageMaker AI Ground Truth. 

Les fichiers manifestes sont au format de [lignes JSON](http://jsonlines.org) où chaque ligne est un objet JSON complet représentant les informations d’étiquetage d’une image. Les étiquettes personnalisées Amazon Rekognition prennent en charge les manifestes SageMaker AI Ground Truth contenant des lignes JSON dans les formats suivants :
+ [Sortie de la tâche de classification](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html#sms-output-class) : à utiliser pour ajouter des étiquettes au niveau de l’image à une image. Une étiquette au niveau de l’image définit la classe de scène, de concept ou d’objet (si les informations d’emplacement d’objets ne sont pas nécessaires) figurant sur une image. Une image peut avoir plusieurs étiquettes au niveau de l’image. Pour plus d’informations, consultez [Importation d'étiquettes au niveau de l'image dans des fichiers manifestes](md-create-manifest-file-classification.md).
+ [Sortie de la tâche de cadre de délimitation](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html#sms-output-box) : à utiliser pour étiqueter la classe et l’emplacement d’un ou de plusieurs objets sur une image. Pour plus d’informations, consultez [Localisation d’objets dans les fichiers manifestes](md-create-manifest-file-object-detection.md).

Les lignes JSON au niveau de l’image et de localisation (cadre de délimitation) peuvent être enchaînées les unes aux autres dans le même fichier manifeste. 

**Note**  
La mise en forme des exemples de lignes JSON présentés dans cette section a été modifiée pour une meilleure lisibilité. 

Lorsque vous importez un fichier manifeste, Étiquettes personnalisées Amazon Rekognition applique des règles de validation pour les limites, la syntaxe et la sémantique. Pour plus d’informations, consultez [Règles de validation des fichiers manifestes](md-create-manifest-file-validation-rules.md). 

Les images référencées par un fichier manifeste doivent se trouver dans le même compartiment Amazon S3. Le fichier manifeste peut se trouver dans un compartiment Amazon S3 différent du compartiment Amazon S3 qui stocke les images. Vous spécifiez l’emplacement d’une image dans le champ `source-ref` d’une ligne JSON. 

Amazon Rekognition a besoin d’autorisations pour accéder au compartiment Amazon S3 dans lequel vos images sont stockées. Si vous utilisez le compartiment de la console configuré pour vous par Étiquettes personnalisées Amazon Rekognition, les autorisations requises sont déjà configurées. Si vous n’utilisez pas le compartiment de la console, consultez [Accès à des compartiments Amazon S3 externes](su-console-policy.md#su-external-buckets).

**Topics**
+ [Création d’un fichier manifeste](#md-create-manifest-file-console)

## Création d’un fichier manifeste
<a name="md-create-manifest-file-console"></a>

La procédure suivante crée un projet avec un jeu de données d’entraînement et de test. Les jeux de données sont générés à partir des fichiers manifestes d’entraînement et de test que vous créez.

<a name="create-dataset-procedure-manifest-file"></a>

**Pour créer un ensemble de données à l'aide d'un fichier manifeste au format SageMaker AI Ground Truth (console)**

1. Dans le compartiment de la console, [créez un dossier](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-folder.html) destiné à vos fichiers manifestes. 

1. Dans le compartiment de la console, créez un dossier destiné à vos images.

1. Chargez vos images dans le dossier que vous venez de créer.

1. Créez un fichier manifeste au format SageMaker AI Ground Truth pour votre ensemble de données d'entraînement. Pour plus d’informations, consultez [Importation d'étiquettes au niveau de l'image dans des fichiers manifestes](md-create-manifest-file-classification.md) et [Localisation d’objets dans les fichiers manifestes](md-create-manifest-file-object-detection.md).
**Important**  
La valeur du champ `source-ref` dans chaque ligne JSON doit correspondre à une image que vous avez chargée.

1. Créez un fichier manifeste au format SageMaker AI Ground Truth pour votre ensemble de données de test. 

1. [Chargez vos fichiers manifestes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) dans le dossier que vous venez de créer.

1. Notez l’emplacement du fichier manifeste.

1. Suivez les instructions sous [Création d'un ensemble de données à l'aide d'un fichier manifeste SageMaker AI Ground Truth (console)](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-console) pour créer un jeu de données avec le fichier manifeste chargé. Pour l’étape 8, dans **Emplacement du fichier .manifest**, entrez l’URL Amazon S3 correspondant à l’emplacement indiqué à l’étape précédente. Si vous utilisez le AWS SDK, faites-le[Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK) SageMaker AI Ground Truth](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk).

# Importation d'étiquettes au niveau de l'image dans des fichiers manifestes
<a name="md-create-manifest-file-classification"></a>

Pour importer des étiquettes au niveau des images (images étiquetées avec des scènes, des concepts ou des objets ne nécessitant pas d'informations de localisation), vous devez ajouter des lignes JSON au format SageMaker AI Ground Truth [Classification Job Output](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html#sms-output-class) à un fichier manifeste. Un fichier manifeste est composé d’une ou de plusieurs lignes JSON, une pour chaque image que vous souhaitez importer. 

**Astuce**  
Pour simplifier la création d’un fichier manifeste, nous fournissons un script Python qui crée un fichier manifeste à partir d’un fichier CSV. Pour plus d’informations, consultez [Création d’un fichier manifeste à partir d’un fichier CSV](ex-csv-manifest.md).

**Pour créer un fichier manifeste pour des étiquettes au niveau de l’image**

1. Créez un fichier texte vide.

1. Ajoutez une ligne JSON pour chaque image que vous souhaitez importer. Chaque ligne JSON doit ressembler à ce qui suit.

   ```
   {"source-ref":"s3://custom-labels-console-us-east-1-nnnnnnnnnn/gt-job/manifest/IMG_1133.png","TestCLConsoleBucket":0,"TestCLConsoleBucket-metadata":{"confidence":0.95,"job-name":"labeling-job/testclconsolebucket","class-name":"Echo Dot","human-annotated":"yes","creation-date":"2020-04-15T20:17:23.433061","type":"groundtruth/image-classification"}}
   ```

1. Enregistrez le fichier. Vous pouvez utiliser l’extension `.manifest`, mais cela n’est pas obligatoire. 

1. Créez un jeu de données à l’aide du fichier manifeste que vous avez créé. Pour plus d’informations, consultez [Pour créer un ensemble de données à l'aide d'un fichier manifeste au format SageMaker AI Ground Truth (console)](md-create-manifest-file.md#create-dataset-procedure-manifest-file). 

 

## Lignes JSON au niveau de l’image
<a name="md-manifest-classification-json"></a>

Dans cette section, nous vous expliquons comment créer une ligne JSON pour une image unique. Examinez l’image suivante. Une scène pour l’image suivante pourrait s’appeler *Sunrise*.

![\[Coucher de soleil sur un lac avec un quai et de petits bateaux, entouré de montagnes.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/sunrise.png)


La ligne JSON de l’image précédente, avec la scène *Sunrise*, pourrait être la suivante. 

```
{
    "source-ref": "s3://bucket/images/sunrise.png",
    "testdataset-classification_Sunrise": 1,
    "testdataset-classification_Sunrise-metadata": {
        "confidence": 1,
        "job-name": "labeling-job/testdataset-classification_Sunrise",
        "class-name": "Sunrise",
        "human-annotated": "yes",
        "creation-date": "2020-03-06T17:46:39.176",
        "type": "groundtruth/image-classification"
    }
}
```

Notez les informations suivantes.

### source-ref
<a name="w2aac20c17c25c27c19c11c13"></a>

(Obligatoire) Emplacement Amazon S3 de l’image. Le format est `"s3://BUCKET/OBJECT_PATH"`. Les images d’un jeu de données importé doivent être stockées dans le même compartiment Amazon S3. 

### *testdataset-classification\$1Sunrise*
<a name="w2aac20c17c25c27c19c11c15"></a>

(Obligatoire) Attribut de l’étiquette. Vous choisissez le nom du champ. La valeur du champ (1 dans l’exemple précédent) est un identifiant d’attribut d’étiquette. Elle n’est pas utilisée par Étiquettes personnalisées Amazon Rekognition et peut être n’importe quelle valeur entière. Les métadonnées correspondantes doivent être identifiées par le nom du champ, nom auquel vous devez ajouter *-metadata*. Par exemple, `"testdataset-classification_Sunrise-metadata"`. 

### *testdataset-classification\$1Sunrise*-métadonnées
<a name="w2aac20c17c25c27c19c11c17"></a>

(Obligatoire) Métadonnées relatives à l’attribut de l’étiquette. Le nom du champ doit être identique à celui de l’attribut de l’étiquette. La mention *-metadata* doit être ajoutée à la fin du nom. 

*confidence*  
(Obligatoire) Pas utilisé actuellement par Étiquettes personnalisées Amazon Rekognition, mais une valeur comprise entre 0 et 1 doit être fournie. 

*job-name*  
(Facultatif) Nom que vous choisissez pour la tâche qui traitera l’image. 

*class-name*  
(Obligatoire) Nom de classe que vous choisissez pour la scène ou le concept qui s’applique à l’image. Par exemple, `"Sunrise"`. 

*human-annotated*  
(Obligatoire) Spécifiez `"yes"` si l’annotation a été complétée par un humain. Sinon, spécifiez `"no"`. 

*creation-date*   
(Obligatoire) Date et heure UTC (Coordinated Universal Time) de création de l’étiquette. 

*type*  
(Obligatoire) Type de traitement à appliquer à l’image. Pour les étiquettes au niveau de l’image, la valeur est `"groundtruth/image-classification"`. 

### Ajout de plusieurs étiquettes au niveau de l’image à une image
<a name="md-dataset-purpose-classification-multiple-labels"></a>

Vous pouvez ajouter plusieurs étiquettes à une image. Par exemple, le code JSON suivant ajoute deux étiquettes, *football* et *ball*, à une seule image. 

```
{
    "source-ref": "S3 bucket location", 
    "sport0":0, # FIRST label
    "sport0-metadata": { 
        "class-name": "football", 
        "confidence": 0.8, 
        "type":"groundtruth/image-classification", 
        "job-name": "identify-sport", 
        "human-annotated": "yes", 
        "creation-date": "2018-10-18T22:18:13.527256" 
    },
    "sport1":1, # SECOND label
    "sport1-metadata": { 
        "class-name": "ball", 
        "confidence": 0.8, 
        "type":"groundtruth/image-classification", 
        "job-name": "identify-sport", 
        "human-annotated": "yes", 
        "creation-date": "2018-10-18T22:18:13.527256" 
    }
}  # end of annotations for 1 image
```

# Localisation d’objets dans les fichiers manifestes
<a name="md-create-manifest-file-object-detection"></a>

Vous pouvez importer des images étiquetées avec des informations de localisation d'objets en ajoutant des lignes JSON au format SageMaker AI Ground Truth [Bounding Box Job Output](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html#sms-output-box) à un fichier manifeste. 

Les informations de localisation représentent l’emplacement d’un objet sur une image. L’emplacement est représenté par un cadre de délimitation qui entoure l’objet en question. La structure du cadre de délimitation contient les coordonnées en haut à gauche du cadre de délimitation ainsi que la largeur et la hauteur de ce dernier. Une ligne JSON au format de cadre de délimitation comprend des cadres de délimitation indiquant les emplacements d’un ou de plusieurs objets sur une image et la classe de chaque objet sur l’image. 

Un fichier manifeste est composé d’une ou de plusieurs lignes JSON, chaque ligne contenant les informations relatives à une seule image.

**Pour créer un fichier manifeste pour la localisation d’objets**

1. Créez un fichier texte vide.

1. Ajoutez une ligne JSON pour chaque image que vous souhaitez importer. Chaque ligne JSON doit ressembler à ce qui suit.

   ```
   {"source-ref": "s3://bucket/images/IMG_1186.png", "bounding-box": {"image_size": [{"width": 640, "height": 480, "depth": 3}], "annotations": [{ "class_id": 1,	"top": 251,	"left": 399, "width": 155, "height": 101}, {"class_id": 0, "top": 65, "left": 86, "width": 220,	"height": 334}]}, "bounding-box-metadata": {"objects": [{ "confidence": 1}, {"confidence": 1}],	"class-map": {"0": "Echo",	"1": "Echo Dot"}, "type": "groundtruth/object-detection", "human-annotated": "yes",	"creation-date": "2013-11-18T02:53:27", "job-name": "my job"}}
   ```

1. Enregistrez le fichier. Vous pouvez utiliser l’extension `.manifest`, mais cela n’est pas obligatoire. 

1. Créez un jeu de données à l’aide du fichier que vous venez de créer. Pour plus d’informations, consultez [Pour créer un ensemble de données à l'aide d'un fichier manifeste au format SageMaker AI Ground Truth (console)](md-create-manifest-file.md#create-dataset-procedure-manifest-file). 



## Lignes JSON du cadre de délimitation des objets
<a name="md-manifest-object-localization-json"></a>

Dans cette section, nous vous expliquons comment créer une ligne JSON pour une image unique. L’image suivante affiche des cadres de délimitation autour des appareils Amazon Echo et Amazon Echo Dot.

![\[Deux haut-parleurs intelligents Amazon, l'un avec boîtier de délimitation vert et l'autre avec boîtier de délimitation bleu, sur une surface en bois.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/echos.png)


Voici la ligne JSON des cadres de délimitation correspondant à l’image précédente. 

```
{
	"source-ref": "s3://custom-labels-bucket/images/IMG_1186.png",
	"bounding-box": {
		"image_size": [{
			"width": 640,
			"height": 480,
			"depth": 3
		}],
		"annotations": [{
			"class_id": 1,
			"top": 251,
			"left": 399,
			"width": 155,
			"height": 101
		}, {
			"class_id": 0,
			"top": 65,
			"left": 86,
			"width": 220,
			"height": 334
		}]
	},
	"bounding-box-metadata": {
		"objects": [{
			"confidence": 1
		}, {
			"confidence": 1
		}],
		"class-map": {
			"0": "Echo",
			"1": "Echo Dot"
		},
		"type": "groundtruth/object-detection",
		"human-annotated": "yes",
		"creation-date": "2013-11-18T02:53:27",
		"job-name": "my job"
	}
}
```

Notez les informations suivantes.

### source-ref
<a name="cd-manifest-source-ref"></a>

(Obligatoire) Emplacement Amazon S3 de l’image. Le format est `"s3://BUCKET/OBJECT_PATH"`. Les images d’un jeu de données importé doivent être stockées dans le même compartiment Amazon S3. 

### *bounding-box*
<a name="md-manifest-source-bounding-box"></a>

(Obligatoire) Attribut de l’étiquette. Vous choisissez le nom du champ. Contient la taille de l’image et des cadres de délimitation pour chaque objet détecté dans l’image. Les métadonnées correspondantes doivent être identifiées par le nom du champ, nom auquel vous devez ajouter *-metadata*. Par exemple, `"bounding-box-metadata"`. 

*image\$1size*  
(Obligatoire) Tableau à élément unique contenant la taille de l’image en pixels.   
+ *height* : (obligatoire) hauteur de l’image, en pixels. 
+ *width* : (obligatoire) profondeur de l’image en pixels. 
+ *depth* : (obligatoire) nombre de canaux dans l’image. Pour les images RVB, la valeur est 3. Pas utilisé actuellement par Étiquettes personnalisées Amazon Rekognition, mais une valeur doit être fournie. 

*annotations*  
(Obligatoire) Tableau d’informations relatives au cadre de délimitation pour chaque objet détecté dans l’image.  
+ *class\$1id* : (obligatoire) correspond à l’étiquette dans *class-map*. Dans l’exemple précédent, l’objet avec la valeur `1` comme *class\$1id* est l’appareil Echo Dot sur l’image. 
+ *top* : (obligatoire) distance entre le haut de l’image et le haut du cadre de délimitation, en pixels. 
+ *left* : (obligatoire) distance entre la gauche de l’image et la gauche du cadre de délimitation, en pixels. 
+ *width* : (obligatoire) largeur du cadre de délimitation, en pixels. 
+ *height* : (obligatoire) hauteur du cadre de délimitation, en pixels. 

### *bounding-box*-métadonnées
<a name="md-manifest-source-bounding-box-metadata"></a>

(Obligatoire) Métadonnées relatives à l’attribut de l’étiquette. Le nom du champ doit être identique à celui de l’attribut de l’étiquette. La mention *-metadata* doit être ajoutée à la fin du nom. Tableau d’informations relatives au cadre de délimitation pour chaque objet détecté dans l’image.

*Objets*  
(Obligatoire) Tableau d’objets qui se trouvent dans l’image. Correspond au tableau *annotations* par index. L’attribut de confiance n’est pas utilisé par Étiquettes personnalisées Amazon Rekognition. 

*class-map*  
(Obligatoire) Mappage des classes qui s’appliquent aux objets détectés dans l’image. 

*type*  
(Obligatoire) Type de tâche de classification. `"groundtruth/object-detection"` identifie la tâche en tant que détection d’objets. 

*creation-date*   
(Obligatoire) Date et heure UTC (Coordinated Universal Time) de création de l’étiquette. 

*human-annotated*  
(Obligatoire) Spécifiez `"yes"` si l’annotation a été complétée par un humain. Sinon, spécifiez `"no"`. 

*job-name*  
(Facultatif) Nom de la tâche qui traitera l’image. 

# Règles de validation des fichiers manifestes
<a name="md-create-manifest-file-validation-rules"></a>

 Lorsque vous importez un fichier manifeste, Étiquettes personnalisées Amazon Rekognition applique des règles de validation pour les limites, la syntaxe et la sémantique. Le schéma SageMaker AI Ground Truth impose la validation syntaxique. Pour plus d’informations, consultez [Sorties](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html). Vous trouverez ci-dessous les règles de validation des limites et de la sémantique.

**Note**  
Les règles de non-validité de 20 % s’appliquent cumulativement à toutes les règles de validation. Si l’importation dépasse la limite de 20 % en raison d’une combinaison quelconque, telle que 15 % de code JSON non valide et 15 % d’images non valides, l’importation échoue. 
Chaque objet de jeu de données est une ligne dans le manifeste. Les lignes vierges/non valides sont également considérées comme des objets de jeu de données.
Les chevauchements correspondent aux (étiquettes communes entre le test et l’entraînement)/(étiquettes d’entraînement).

**Topics**
+ [Restrictions](#md-validation-rules-limits)
+ [Sémantique](#md-validation-rules-semantics)

## Restrictions
<a name="md-validation-rules-limits"></a>


| Validation | Limite | Erreur signalée | 
| --- | --- | --- | 
|  Taille du fichier manifeste  |  1 Go maximum  |  Erreur  | 
|  Nombre maximal de lignes pour un fichier manifeste  |  Maximum de 250 000 objets de jeu de données sous forme de lignes dans un manifeste.   |  Erreur  | 
|  Limite inférieure du nombre total d’objets de jeu de données valides par étiquette   |  >=1  |  Erreur  | 
|  Limite inférieure au niveau des étiquettes  |  >=2  |  Erreur  | 
|  Limite supérieure au niveau des étiquettes  |  <= 250  |  Erreur  | 
|  Nombre minimal de cadres de délimitation par image  |  0  |  Aucune  | 
|  Nombre maximal de cadres de délimitation par image  |  50  |  Aucune  | 

## Sémantique
<a name="md-validation-rules-semantics"></a>




| Validation | Limite | Erreur signalée | 
| --- | --- | --- | 
|  Manifeste vide  |    |  Erreur  | 
|  Objet source-ref manquant/inaccessible  |  Nombre d’objets inférieur à 20 %  |  Avertissement  | 
|  Objet source-ref manquant/inaccessible  |  Nombre d’objets > 20 %  |  Erreur  | 
|  Étiquettes de test non présentes dans le jeu de données d’entraînement   |  Au moins 50 % de chevauchement dans les étiquettes  |  Erreur  | 
|  Combinaison d’exemples d’étiquettes et d’objets pour une même étiquette dans un jeu de données. Classification et détection pour la même classe dans un objet de jeu de données.   |    |  Aucune erreur ni aucun avertissement  | 
|  Chevauchement des ressources entre le test et l’entraînement   |  Il ne doit pas y avoir de chevauchement entre les jeux de données de test et d’entraînement.   |    | 
|  Les images d’un jeu de données doivent provenir du même compartiment   |  Erreur si les objets se trouvent dans un autre compartiment  |  Erreur  | 

# Conversion d’autres formats de jeu de données en fichier manifeste
<a name="md-converting-to-sm-format"></a>

Vous pouvez utiliser les informations suivantes pour créer des fichiers manifestes au format Amazon SageMaker AI à partir de différents formats de jeux de données sources. Après avoir créé le fichier manifeste, utilisez-le pour créer un jeu de données. Pour de plus amples informations, veuillez consulter [Utilisation d'un fichier manifeste pour importer des images](md-create-dataset-ground-truth.md).

**Topics**
+ [Transformation d'un ensemble de données COCO en un format de fichier manifeste](md-transform-coco.md)
+ [Transformation des fichiers manifestes SageMaker AI Ground Truth à étiquettes multiples](md-gt-cl-transform.md)
+ [Création d’un fichier manifeste à partir d’un fichier CSV](ex-csv-manifest.md)

# Transformation d'un ensemble de données COCO en un format de fichier manifeste
<a name="md-transform-coco"></a>

[COCO](http://cocodataset.org/#home) est un format permettant de spécifier des jeux de données de détection, de segmentation et de sous-titrage des objets à grande échelle. Cet [exemple](md-coco-transform-example.md) Python vous montre comment transformer un jeu de données au format de détection d’objets COCO en un [fichier manifeste Étiquettes personnalisées Amazon Rekognition au format cadre de délimitation](md-create-manifest-file-object-detection.md). Cette section inclut également des informations que vous pouvez utiliser pour écrire votre propre code.

Un fichier JSON au format COCO se compose de cinq sections fournissant des informations pour un *jeu de données complet*. Pour plus d’informations, consultez [Le format du jeu de données COCO](md-coco-overview.md). 
+ `info` : informations générales sur le jeu de données. 
+ `licenses ` : informations de licence pour les images du jeu de données.
+ [`images`](md-coco-overview.md#md-coco-images) : liste des images du jeu de données.
+ [`annotations`](md-coco-overview.md#md-coco-annotations) : liste d’annotations (y compris les cadres de délimitation) présentes dans toutes les images du jeu de données.
+ [`categories`](md-coco-overview.md#md-coco-categories) : liste des catégories d’étiquettes.

Vous aurez besoin d’informations provenant des listes `images`, `annotations` et `categories` pour créer un fichier manifeste Étiquettes personnalisées Amazon Rekognition.

Un fichier manifeste Étiquettes personnalisées Amazon Rekognition est au format de lignes JSON. Chaque ligne contient les informations relatives aux cadres de délimitation et aux étiquettes d’un ou de plusieurs objets *dans une image*. Pour plus d’informations, consultez [Localisation d’objets dans les fichiers manifestes](md-create-manifest-file-object-detection.md).

## Mappage d’objets COCO avec une ligne JSON Étiquettes personnalisées
<a name="md-mapping-coco"></a>

Pour transformer un jeu de données au format COCO, mappez le jeu de données COCO avec un fichier manifeste Étiquettes personnalisées Amazon Rekognition pour la localisation d’objets. Pour de plus amples informations, veuillez consulter [Localisation d’objets dans les fichiers manifestes](md-create-manifest-file-object-detection.md). Pour créer une ligne JSON pour chaque image, le fichier manifeste doit mapper le jeu de données `image` COCO et le champ `category` d'objet IDs. `annotation` 

Voici un exemple de fichier manifeste COCO. Pour plus d’informations, consultez [Le format du jeu de données COCO](md-coco-overview.md).

```
{
    "info": {
        "description": "COCO 2017 Dataset","url": "http://cocodataset.org","version": "1.0","year": 2017,"contributor": "COCO Consortium","date_created": "2017/09/01"
    },
    "licenses": [
        {"url": "http://creativecommons.org/licenses/by/2.0/","id": 4,"name": "Attribution License"}
    ],
    "images": [
        {"id": 242287, "license": 4, "coco_url": "http://images.cocodataset.org/val2017/xxxxxxxxxxxx.jpg", "flickr_url": "http://farm3.staticflickr.com/2626/xxxxxxxxxxxx.jpg", "width": 426, "height": 640, "file_name": "xxxxxxxxx.jpg", "date_captured": "2013-11-15 02:41:42"},
        {"id": 245915, "license": 4, "coco_url": "http://images.cocodataset.org/val2017/nnnnnnnnnnnn.jpg", "flickr_url": "http://farm1.staticflickr.com/88/xxxxxxxxxxxx.jpg", "width": 640, "height": 480, "file_name": "nnnnnnnnnn.jpg", "date_captured": "2013-11-18 02:53:27"}
    ],
    "annotations": [
        {"id": 125686, "category_id": 0, "iscrowd": 0, "segmentation": [[164.81, 417.51,......167.55, 410.64]], "image_id": 242287, "area": 42061.80340000001, "bbox": [19.23, 383.18, 314.5, 244.46]},
        {"id": 1409619, "category_id": 0, "iscrowd": 0, "segmentation": [[376.81, 238.8,........382.74, 241.17]], "image_id": 245915, "area": 3556.2197000000015, "bbox": [399, 251, 155, 101]},
        {"id": 1410165, "category_id": 1, "iscrowd": 0, "segmentation": [[486.34, 239.01,..........495.95, 244.39]], "image_id": 245915, "area": 1775.8932499999994, "bbox": [86, 65, 220, 334]}
    ],
    "categories": [
        {"supercategory": "speaker","id": 0,"name": "echo"},
        {"supercategory": "speaker","id": 1,"name": "echo dot"}
    ]
}
```

Le schéma suivant montre comment les listes de jeux de données COCO pour un *jeu de données* sont mappées avec les lignes JSON d’Étiquettes personnalisées Amazon Rekognition pour une *image*. Chaque ligne JSON d'une image possède une référence source, un champ de métadonnées de tâche et un champ de métadonnées de tâche. Les couleurs qui sont les mêmes indiquent des informations relatives à une seule image. Notez que dans le manifeste, une image individuelle peut comporter plusieurs annotations et métadonnées/catégories.

![\[Schéma montrant la structure de Coco Manifest, avec les images, les annotations et les catégories qu'il contient.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/coco-transform.png)


**Pour obtenir les objets COCO pour une seule ligne JSON**

1. Pour chaque image de la liste d’images, récupérez l’annotation dans la liste d’annotations où la valeur du champ d’annotation `image_id` correspond à celle du champ `id` de l’image.

1. Pour chaque annotation ayant une correspondance dans l’étape 1, parcourez la liste `categories` et récupérez chaque `category` où la valeur du champ `category` `id` correspond au champ `category_id` de l’objet `annotation`.

1. Créez une ligne JSON pour l’image à l’aide des objets `image`, `annotation` et `category` associés. Pour mapper les champs, consultez [Mappage de champs d’objet COCO avec des champs d’objet de ligne JSON Étiquettes personnalisées](#md-mapping-fields-coco). 

1. Répétez les étapes 1 à 3 jusqu’à ce que vous ayez créé des lignes JSON pour chaque objet `image` de la liste `images`.

Pour obtenir un exemple de code, consultez [Conversion d’un jeu de données COCO](md-coco-transform-example.md).

## Mappage de champs d’objet COCO avec des champs d’objet de ligne JSON Étiquettes personnalisées
<a name="md-mapping-fields-coco"></a>

Après avoir identifié les objets COCO pour une ligne Étiquettes personnalisées Amazon Rekognition, vous devez mapper les champs d’objets COCO avec les champs d’objet de ligne JSON Étiquettes personnalisées Amazon Rekognition respectifs. L’exemple suivant de ligne JSON Étiquettes personnalisées Amazon Rekognition mappe une image (`id`=`000000245915`) avec l’exemple JSON COCO précédent. Notez les informations suivantes.
+ `source-ref` correspond à l’emplacement de l’image dans un compartiment Amazon S3. Si vos images COCO ne sont pas stockées dans un compartiment Amazon S3, vous devez les y transférer.
+ La liste `annotations` contient un objet `annotation` pour chaque objet de l’image. Un objet `annotation` comprend des informations relatives à un cadre de délimitation (`top`, `left`, `width`, `height`) et un identifiant d’étiquette (`class_id`).
+ L’identifiant d’étiquette (`class_id`) correspond à la liste `class-map` figurant dans les métadonnées. Il répertorie les étiquettes utilisées sur l’image.

```
{
	"source-ref": "s3://custom-labels-bucket/images/000000245915.jpg",
	"bounding-box": {
		"image_size": {
			"width": 640,
			"height": 480,
			"depth": 3
		},
		"annotations": [{
			"class_id": 0,
			"top": 251,
			"left": 399,
			"width": 155,
			"height": 101
		}, {
			"class_id": 1,
			"top": 65,
			"left": 86,
			"width": 220,
			"height": 334
		}]
	},
	"bounding-box-metadata": {
		"objects": [{
			"confidence": 1
		}, {
			"confidence": 1
		}],
		"class-map": {
			"0": "Echo",
			"1": "Echo Dot"
		},
		"type": "groundtruth/object-detection",
		"human-annotated": "yes",
		"creation-date": "2018-10-18T22:18:13.527256",
		"job-name": "my job"
	}
}
```

Utilisez les informations suivantes pour mapper les champs du fichier manifeste Étiquettes personnalisées Amazon Rekognition avec les champs JSON du jeu de données COCO. 

### source-ref
<a name="md-source-ref-coco"></a>

URL au format S3 pour l’emplacement de l’image. L’image doit être stockée dans un compartiment S3. Pour plus d’informations, consultez [source-ref](md-create-manifest-file-object-detection.md#cd-manifest-source-ref). Si le champ COCO `coco_url` pointe vers l’emplacement d’un compartiment S3, vous pouvez utiliser la valeur de `coco_url` pour la valeur de `source-ref`. Vous pouvez également mapper `source-ref` avec le champ (COCO) `file_name` et ajouter dans le code de transformation le chemin S3 requis vers l’endroit où l’image est stockée. 

### *bounding-box*
<a name="md-label-attribute-id-coco"></a>

Nom d’attribut d’étiquette de votre choix. Pour plus d’informations, consultez [*bounding-box*](md-create-manifest-file-object-detection.md#md-manifest-source-bounding-box).

#### image\$1size
<a name="md-image-size-coco"></a>

Taille de l’image, en pixels. Correspond à un objet `image` dans la liste des [images](md-coco-overview.md#md-coco-images).
+ `height`-> `image.height`
+ `width`-> `image.width`
+ `depth`-> Pas utilisé par Étiquettes personnalisées Amazon Rekognition, mais une valeur doit être fournie.

#### annotations
<a name="md-annotations-coco"></a>

Liste d’objets `annotation`. Il y a une `annotation` pour chaque objet de l’image.

#### annotation
<a name="md-annotation-coco"></a>

Contient les informations relatives au cadre de délimitation pour une instance d’un objet sur l’image. 
+ `class_id` -> mappage d’ID numérique avec la liste `class-map` d’Étiquettes personnalisées.
+ `top` -> `bbox[1]`
+ `left` -> `bbox[0]`
+ `width` -> `bbox[2]`
+ `height` -> `bbox[3]`

### *bounding-box*-métadonnées
<a name="md-metadata-coco"></a>

Métadonnées pour l’attribut d’étiquette. Inclut les étiquettes et les identifiants d’étiquettes. Pour plus d’informations, consultez [*bounding-box*-métadonnées](md-create-manifest-file-object-detection.md#md-manifest-source-bounding-box-metadata).

#### Objets
<a name="cd-metadata-objects-coco"></a>

Tableau des objets de l’image. Correspond à la liste `annotations` par index.

##### Objet
<a name="cd-metadata-object-coco"></a>
+ `confidence`-> Pas utilisé par Étiquettes personnalisées Amazon Rekognition, mais une valeur (1) doit être fournie.

#### class-map
<a name="md-metadata-class-map-coco"></a>

Mappage des étiquettes (classes) qui s’appliquent aux objets détectés dans l’image. Correspond aux objets de catégorie dans la liste des [catégories](md-coco-overview.md#md-coco-categories).
+ `id` -> `category.id`
+ `id value` -> `category.name`

#### type
<a name="md-type-coco"></a>

Doit être `groundtruth/object-detection`

#### human-annotated
<a name="md-human-annotated-coco"></a>

Spécifiez `yes` ou `no`. Pour plus d’informations, consultez [*bounding-box*-métadonnées](md-create-manifest-file-object-detection.md#md-manifest-source-bounding-box-metadata).

#### creation-date -> [image](md-coco-overview.md#md-coco-images).date\$1captured
<a name="md-creation-date-coco"></a>

Date et heure de création de l’image. Correspond au champ [image](md-coco-overview.md#md-coco-images).date\$1captured d’une image dans la liste des images COCO. Étiquettes personnalisées Amazon Rekognition attend du format `creation-date` qu’il correspond à *Y-M-DTH:M:S*.

#### job-name
<a name="md-job-name-coco"></a>

Nom de tâche de votre choix. 

# Le format du jeu de données COCO
<a name="md-coco-overview"></a>

Un jeu de données COCO se compose de cinq sections d’informations qui fournissent des informations pour le jeu de données complet. Le format d’un jeu de données de détection d’objets COCO est documenté dans la section [Format de données COCO](http://cocodataset.org/#format-data). 
+ info : informations générales sur le jeu de données. 
+ licenses : informations de licence pour les images du jeu de données.
+ [images](#md-coco-images) : liste des images du jeu de données.
+ [annotations](#md-coco-annotations) : liste d’annotations (y compris les cadres de délimitation) présentes dans toutes les images du jeu de données.
+ [categories](#md-coco-categories) : liste des catégories d’étiquettes.

Pour créer un manifeste Étiquettes personnalisées, utilisez les listes `images`, `annotations` et `categories` du fichier manifeste COCO. Les autres sections (`info`, `licences`) ne sont pas obligatoires. Voici un exemple de fichier manifeste COCO.

```
{
    "info": {
        "description": "COCO 2017 Dataset","url": "http://cocodataset.org","version": "1.0","year": 2017,"contributor": "COCO Consortium","date_created": "2017/09/01"
    },
    "licenses": [
        {"url": "http://creativecommons.org/licenses/by/2.0/","id": 4,"name": "Attribution License"}
    ],
    "images": [
        {"id": 242287, "license": 4, "coco_url": "http://images.cocodataset.org/val2017/xxxxxxxxxxxx.jpg", "flickr_url": "http://farm3.staticflickr.com/2626/xxxxxxxxxxxx.jpg", "width": 426, "height": 640, "file_name": "xxxxxxxxx.jpg", "date_captured": "2013-11-15 02:41:42"},
        {"id": 245915, "license": 4, "coco_url": "http://images.cocodataset.org/val2017/nnnnnnnnnnnn.jpg", "flickr_url": "http://farm1.staticflickr.com/88/xxxxxxxxxxxx.jpg", "width": 640, "height": 480, "file_name": "nnnnnnnnnn.jpg", "date_captured": "2013-11-18 02:53:27"}
    ],
    "annotations": [
        {"id": 125686, "category_id": 0, "iscrowd": 0, "segmentation": [[164.81, 417.51,......167.55, 410.64]], "image_id": 242287, "area": 42061.80340000001, "bbox": [19.23, 383.18, 314.5, 244.46]},
        {"id": 1409619, "category_id": 0, "iscrowd": 0, "segmentation": [[376.81, 238.8,........382.74, 241.17]], "image_id": 245915, "area": 3556.2197000000015, "bbox": [399, 251, 155, 101]},
        {"id": 1410165, "category_id": 1, "iscrowd": 0, "segmentation": [[486.34, 239.01,..........495.95, 244.39]], "image_id": 245915, "area": 1775.8932499999994, "bbox": [86, 65, 220, 334]}
    ],
    "categories": [
        {"supercategory": "speaker","id": 0,"name": "echo"},
        {"supercategory": "speaker","id": 1,"name": "echo dot"}
    ]
}
```

## liste d’images
<a name="md-coco-images"></a>

Les images référencées par un jeu de données COCO sont répertoriées dans le tableau d’images. Chaque objet image contient des informations sur l’image, telles que le nom du fichier image. Dans l’exemple d’objet image ci-dessous, notez les informations suivantes et les champs obligatoires pour créer un fichier manifeste Étiquettes personnalisées Amazon Rekognition.
+ `id` : (obligatoire) identifiant unique de l’image. Le champ `id` correspond au champ `id` du tableau d’annotations (où les informations relatives aux cadres de délimitation sont stockées).
+ `license` : (facultatif) correspond au tableau de licences. 
+ `coco_url` : (facultatif) emplacement de l’image.
+ `flickr_url` : (facultatif) emplacement de l’image sur Flickr.
+ `width` : (obligatoire) largeur de l’image.
+ `height` : (obligatoire) hauteur de l’image.
+ `file_name` : (obligatoire) nom du fichier image. Dans cet exemple, `file_name` et `id` correspondent, mais cela n’est pas obligatoire pour les jeux de données COCO. 
+ `date_captured` : (obligatoire) date et heure de capture de l’image. 

```
{
    "id": 245915,
    "license": 4,
    "coco_url": "http://images.cocodataset.org/val2017/nnnnnnnnnnnn.jpg",
    "flickr_url": "http://farm1.staticflickr.com/88/nnnnnnnnnnnnnnnnnnn.jpg",
    "width": 640,
    "height": 480,
    "file_name": "000000245915.jpg",
    "date_captured": "2013-11-18 02:53:27"
}
```

## liste des annotations (cadres de délimitation)
<a name="md-coco-annotations"></a>

Les informations relatives aux cadres de délimitation pour tous les objets de toutes les images sont stockées dans la liste des annotations. Un seul objet d’annotation contient les informations relatives au cadre de délimitation correspondant à un seul objet et l’étiquette de l’objet sur une image. Il existe un objet d’annotation pour chaque instance d’un objet sur une image. 

Dans l’exemple ci-dessous, notez les informations suivantes et les champs obligatoires pour créer un fichier manifeste Étiquettes personnalisées Amazon Rekognition. 
+ `id` : (facultatif) identifiant de l’annotation.
+ `image_id` : (obligatoire) correspond à l’image `id` dans le tableau d’images.
+ `category_id` : (obligatoire) identifiant de l’étiquette qui identifie l’objet dans un cadre de délimitation. Il correspond au champ `id` du tableau des catégories. 
+ `iscrowd` : (facultatif) spécifie si l’image contient une foule d’objets. 
+ `segmentation` : (facultatif) informations de segmentation pour les objets d’une image. Étiquettes personnalisées Amazon Rekognition ne prend pas en charge la segmentation. 
+ `area` : (facultatif) zone de l’annotation.
+ `bbox` : (obligatoire) contient les coordonnées, en pixels, d’un cadre de délimitation autour d’un objet sur l’image.

```
{
    "id": 1409619,
    "category_id": 1,
    "iscrowd": 0,
    "segmentation": [
        [86.0, 238.8,..........382.74, 241.17]
    ],
    "image_id": 245915,
    "area": 3556.2197000000015,
    "bbox": [86, 65, 220, 334]
}
```

## liste des catégories
<a name="md-coco-categories"></a>

Les informations relatives aux étiquettes sont stockées dans le tableau des catégories. Dans l’exemple d’objet de catégorie ci-dessous, notez les informations suivantes et les champs obligatoires pour créer un fichier manifeste Étiquettes personnalisées Amazon Rekognition. 
+ `supercategory` : (facultatif) catégorie parent d’une étiquette. 
+ `id` : (obligatoire) identifiant de l’étiquette. Le champ `id` correspond au champ `category_id` d’un objet `annotation`. Dans l’exemple suivant, l’identifiant d’un appareil echo dot est 2. 
+ `name` : (obligatoire) nom de l’étiquette. 

```
        {"supercategory": "speaker","id": 2,"name": "echo dot"}
```

# Conversion d’un jeu de données COCO
<a name="md-coco-transform-example"></a>

Utilisez l’exemple Python suivant pour transformer les informations du cadre de délimitation d’un jeu de données au format COCO en un fichier manifeste Étiquettes personnalisées Amazon Rekognition. Le code charge le fichier manifeste créé dans votre compartiment Amazon S3. Le code fournit également une commande AWS CLI que vous pouvez utiliser pour charger vos images. 

**Pour convertir un jeu de données COCO (kit SDK)**

1. Si vous ne l’avez pas déjà fait :

   1. Vérifiez que vous disposez des autorisations `AmazonS3FullAccess`. Pour de plus amples informations, veuillez consulter [Configuration des autorisations du kit SDK](su-sdk-permissions.md).

   1. Installez et configurez le AWS CLI et le AWS SDKs. Pour de plus amples informations, veuillez consulter [Étape 4 : configurer le AWS CLI et AWS SDKs](su-awscli-sdk.md).

1. Utilisez le code Python suivant pour convertir un jeu de données COCO. Définissez les valeurs suivantes.
   + `s3_bucket` : nom du compartiment S3 dans lequel vous souhaitez stocker les images et le fichier manifeste Étiquettes personnalisées Amazon Rekognition. 
   + `s3_key_path_images` : chemin d’accès vers l’endroit où vous souhaitez placer les images dans le compartiment S3 (`s3_bucket`).
   + `s3_key_path_manifest_file` : chemin d’accès vers l’endroit où vous souhaitez placer le fichier manifeste Étiquettes personnalisées dans le compartiment S3 (`s3_bucket`).
   + `local_path` : chemin local vers lequel l’exemple ouvre le jeu de données COCO en entrée et enregistre également le nouveau fichier manifeste Étiquettes personnalisées.
   + `local_images_path` : chemin local vers les images que vous souhaitez utiliser pour l’entraînement.
   + `coco_manifest` : nom de fichier du jeu de données COCO en entrée.
   + `cl_manifest_file` : nom du fichier manifeste créé par l’exemple. Ce fichier est enregistré à l’emplacement indiqué par `local_path`. Par convention, il possède l’extension `.manifest`, mais cela n’est pas obligatoire.
   + `job_name` : nom de la tâche Étiquettes personnalisées.

   ```
   import json
   import os
   import random
   import shutil
   import datetime
   import botocore
   import boto3
   import PIL.Image as Image
   import io
   
   #S3 location for images
   s3_bucket = 'bucket'
   s3_key_path_manifest_file = 'path to custom labels manifest file/'
   s3_key_path_images = 'path to images/'
   s3_path='s3://' + s3_bucket  + '/' + s3_key_path_images
   s3 = boto3.resource('s3')
   
   #Local file information
   local_path='path to input COCO dataset and output Custom Labels manifest/'
   local_images_path='path to COCO images/'
   coco_manifest = 'COCO dataset JSON file name'
   coco_json_file = local_path + coco_manifest
   job_name='Custom Labels job name'
   cl_manifest_file = 'custom_labels.manifest'
   
   label_attribute ='bounding-box'
   
   open(local_path + cl_manifest_file, 'w').close()
   
   # class representing a Custom Label JSON line for an image
   class cl_json_line:  
       def __init__(self,job, img):  
   
           #Get image info. Annotations are dealt with seperately
           sizes=[]
           image_size={}
           image_size["width"] = img["width"]
           image_size["depth"] = 3
           image_size["height"] = img["height"]
           sizes.append(image_size)
   
           bounding_box={}
           bounding_box["annotations"] = []
           bounding_box["image_size"] = sizes
   
           self.__dict__["source-ref"] = s3_path + img['file_name']
           self.__dict__[job] = bounding_box
   
           #get metadata
           metadata = {}
           metadata['job-name'] = job_name
           metadata['class-map'] = {}
           metadata['human-annotated']='yes'
           metadata['objects'] = [] 
           date_time_obj = datetime.datetime.strptime(img['date_captured'], '%Y-%m-%d %H:%M:%S')
           metadata['creation-date']= date_time_obj.strftime('%Y-%m-%dT%H:%M:%S') 
           metadata['type']='groundtruth/object-detection'
           
           self.__dict__[job + '-metadata'] = metadata
   
   
   print("Getting image, annotations, and categories from COCO file...")
   
   with open(coco_json_file) as f:
   
       #Get custom label compatible info    
       js = json.load(f)
       images = js['images']
       categories = js['categories']
       annotations = js['annotations']
   
       print('Images: ' + str(len(images)))
       print('annotations: ' + str(len(annotations)))
       print('categories: ' + str(len (categories)))
   
   
   print("Creating CL JSON lines...")
       
   images_dict = {image['id']: cl_json_line(label_attribute, image) for image in images}
   
   print('Parsing annotations...')
   for annotation in annotations:
   
       image=images_dict[annotation['image_id']]
   
       cl_annotation = {}
       cl_class_map={}
   
       # get bounding box information
       cl_bounding_box={}
       cl_bounding_box['left'] = annotation['bbox'][0]
       cl_bounding_box['top'] = annotation['bbox'][1]
    
       cl_bounding_box['width'] = annotation['bbox'][2]
       cl_bounding_box['height'] = annotation['bbox'][3]
       cl_bounding_box['class_id'] = annotation['category_id']
   
       getattr(image, label_attribute)['annotations'].append(cl_bounding_box)
   
   
       for category in categories:
            if annotation['category_id'] == category['id']:
               getattr(image, label_attribute + '-metadata')['class-map'][category['id']]=category['name']
           
       
       cl_object={}
       cl_object['confidence'] = int(1)  #not currently used by Custom Labels
       getattr(image, label_attribute + '-metadata')['objects'].append(cl_object)
   
   print('Done parsing annotations')
   
   # Create manifest file.
   print('Writing Custom Labels manifest...')
   
   for im in images_dict.values():
   
       with open(local_path+cl_manifest_file, 'a+') as outfile:
               json.dump(im.__dict__,outfile)
               outfile.write('\n')
               outfile.close()
   
   # Upload manifest file to S3 bucket.
   print ('Uploading Custom Labels manifest file to S3 bucket')
   print('Uploading'  + local_path + cl_manifest_file + ' to ' + s3_key_path_manifest_file)
   print(s3_bucket)
   s3 = boto3.resource('s3')
   s3.Bucket(s3_bucket).upload_file(local_path + cl_manifest_file, s3_key_path_manifest_file + cl_manifest_file)
   
   # Print S3 URL to manifest file,
   print ('S3 URL Path to manifest file. ')
   print('\033[1m s3://' + s3_bucket + '/' + s3_key_path_manifest_file + cl_manifest_file + '\033[0m') 
   
   # Display aws s3 sync command.
   print ('\nAWS CLI s3 sync command to upload your images to S3 bucket. ')
   print ('\033[1m aws s3 sync ' + local_images_path + ' ' + s3_path + '\033[0m')
   ```

1. Exécutez le code.

1. Dans la sortie du programme, notez la commande `s3 sync`. Vous en aurez besoin à l’étape suivante.

1. À partir d’une invite de commande, exécutez la commande `s3 sync`. Vos images sont importées dans le compartiment S3. Si la commande échoue pendant le chargement, exécutez-la à nouveau jusqu’à ce que les images locales soient synchronisées avec le compartiment S3.

1. Dans la sortie du programme, notez le chemin de l’URL S3 vers le fichier manifeste. Vous en aurez besoin à l’étape suivante.

1. Suivez les instructions sous [Création d'un ensemble de données à l'aide d'un fichier manifeste SageMaker AI Ground Truth (console)](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-console) pour créer un jeu de données avec le fichier manifeste chargé. Pour l’étape 8, dans **Emplacement du fichier .manifest**, entrez l’URL Amazon S3 que vous avez notée à l’étape précédente. Si vous utilisez le kit AWS SDK, effectuez les actions indiquées dans [Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK) SageMaker AI Ground Truth](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk).

# Transformation des fichiers manifestes SageMaker AI Ground Truth à étiquettes multiples
<a name="md-gt-cl-transform"></a>

Cette rubrique explique comment transformer un fichier manifeste Amazon SageMaker AI Ground Truth à étiquettes multiples en un fichier manifeste au format Amazon Rekognition Custom Labels. 

SageMaker Les fichiers manifestes AI Ground Truth pour les tâches à étiquettes multiples sont formatés différemment des fichiers manifestes au format Amazon Rekognition Custom Labels. La classification à plusieurs étiquettes a lieu lorsqu’une image est classée dans un ensemble de classes, mais qu’elle peut appartenir à plusieurs classes à la fois. Dans ce cas, l’image peut potentiellement comporter plusieurs étiquettes, telles que *football* et *ballon*.

Pour plus d'informations sur les tâches SageMaker AI Ground Truth à étiquettes multiples, consultez la section [Classification d'images (étiquettes multiples)](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-image-classification-multilabel.html). Pour plus d’informations sur les fichiers manifestes Étiquettes personnalisées Amazon Rekognition à plusieurs étiquettes, consultez [Ajout de plusieurs étiquettes au niveau de l’image à une image](md-create-manifest-file-classification.md#md-dataset-purpose-classification-multiple-labels).

## Obtenir le fichier manifeste pour une tâche d' SageMaker AI Ground Truth
<a name="md-get-gt-manifest"></a>

La procédure suivante explique comment obtenir le fichier manifeste de sortie (`output.manifest`) pour une tâche Amazon SageMaker AI Ground Truth. Utilisez `output.manifest` comme entrée pour la procédure suivante.

**Pour télécharger un fichier manifeste de travail d' SageMaker AI Ground Truth**

1. Ouvrez la [https://console.aws.amazon.com/sagemaker/](https://console.aws.amazon.com/sagemaker/). 

1. Dans le volet de navigation, choisissez **Ground Truth**, puis **Étiquetage des tâches**. 

1. Choisissez la tâche d’étiquetage qui contient le fichier manifeste que vous souhaitez utiliser.

1. Sur la page de détails, cliquez sur le lien sous **Emplacement de l’ensemble de données de sortie**. La console Amazon S3 s’ouvre à l’emplacement du jeu de données. 

1. Choisissez `Manifests`, `output` puis `output.manifest`.

1. Pour télécharger le fichier manifeste, choisissez **Actions d’objet**, puis **Télécharger**.

## Transformation d'un fichier manifeste d' SageMaker IA à étiquettes multiples
<a name="md-transform-ml-gt"></a>

La procédure suivante crée un fichier manifeste Amazon Rekognition Custom Labels au format multi-étiquettes à partir d'un fichier manifeste AI au format multi-étiquettes existant. SageMaker GroundTruth

**Note**  
Pour exécuter le code, vous avez besoin de la version 3 de Python ou d’une version supérieure.<a name="md-procedure-multi-label-transform"></a>

**Pour transformer un fichier manifeste SageMaker AI à étiquettes multiples**

1. Exécutez le code Python suivant. Indiquez le nom du fichier manifeste que vous avez créé dans [Obtenir le fichier manifeste pour une tâche d' SageMaker AI Ground Truth](#md-get-gt-manifest) en tant qu’argument de ligne de commande.

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier:  Apache-2.0
   """
   Purpose
   Shows how to create and Amazon Rekognition Custom Labels format
   manifest file from an Amazon SageMaker Ground Truth Image
   Classification (Multi-label) format manifest file.
   """
   import json
   import logging
   import argparse
   import os.path
   
   logger = logging.getLogger(__name__)
   
   def create_manifest_file(ground_truth_manifest_file):
       """
       Creates an Amazon Rekognition Custom Labels format manifest file from
       an Amazon SageMaker Ground Truth Image Classification (Multi-label) format
       manifest file.
       :param: ground_truth_manifest_file: The name of the Ground Truth manifest file,
       including the relative path.
       :return: The name of the new Custom Labels manifest file.
       """
   
       logger.info('Creating manifest file from %s', ground_truth_manifest_file)
       new_manifest_file = f'custom_labels_{os.path.basename(ground_truth_manifest_file)}'
   
       # Read the SageMaker Ground Truth manifest file into memory.
       with open(ground_truth_manifest_file) as gt_file:
           lines = gt_file.readlines()
   
       #Iterate through the lines one at a time to generate the
       #new lines for the Custom Labels manifest file.
       with open(new_manifest_file, 'w') as the_new_file:
           for line in lines:
               #job_name - The of the Amazon Sagemaker Ground Truth job.
               job_name = ''
               # Load in the old json item from the Ground Truth manifest file
               old_json = json.loads(line)
   
               # Get the job name
               keys = old_json.keys()
               for key in keys:
                   if 'source-ref' not in key and '-metadata' not in key:
                       job_name = key
   
               new_json = {}
               # Set the location of the image
               new_json['source-ref'] = old_json['source-ref']
   
               # Temporarily store the list of labels
               labels = old_json[job_name]
   
               # Iterate through the labels and reformat to Custom Labels format
               for index, label in enumerate(labels):
                   new_json[f'{job_name}{index}'] = index
                   metadata = {}
                   metadata['class-name'] = old_json[f'{job_name}-metadata']['class-map'][str(label)]
                   metadata['confidence'] = old_json[f'{job_name}-metadata']['confidence-map'][str(label)]
                   metadata['type'] = 'groundtruth/image-classification'
                   metadata['job-name'] = old_json[f'{job_name}-metadata']['job-name']
                   metadata['human-annotated'] = old_json[f'{job_name}-metadata']['human-annotated']
                   metadata['creation-date'] = old_json[f'{job_name}-metadata']['creation-date']
                   # Add the metadata to new json line
                   new_json[f'{job_name}{index}-metadata'] = metadata
               # Write the current line to the json file
               the_new_file.write(json.dumps(new_json))
               the_new_file.write('\n')
   
       logger.info('Created %s', new_manifest_file)
       return  new_manifest_file
   
   def add_arguments(parser):
       """
       Adds command line arguments to the parser.
       :param parser: The command line parser.
       """
   
       parser.add_argument(
           "manifest_file", help="The Amazon SageMaker Ground Truth manifest file"
           "that you want to use."
       )
   
   
   def main():
       logging.basicConfig(level=logging.INFO,
                           format="%(levelname)s: %(message)s")
       try:
           # get command line arguments
           parser = argparse.ArgumentParser(usage=argparse.SUPPRESS)
           add_arguments(parser)
           args = parser.parse_args()
           # Create the manifest file
           manifest_file = create_manifest_file(args.manifest_file)
           print(f'Manifest file created: {manifest_file}')
       except FileNotFoundError as err:
           logger.exception('File not found: %s', err)
           print(f'File not found: {err}. Check your manifest file.')
   
   if __name__ == "__main__":
       main()
   ```

1. Notez le nom du nouveau fichier manifeste affiché par le script. Vous l’utiliserez à l’étape suivante.

1. [Chargez les fichiers manifestes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) dans le compartiment Amazon S3 que vous souhaitez utiliser pour stocker ce type de fichier.
**Note**  
Assurez-vous qu’Étiquettes personnalisées Amazon Rekognition a accès au compartiment Amazon S3 référencé dans le champ `source-ref` des lignes JSON du fichier manifeste. Pour plus d’informations, consultez [Accès à des compartiments Amazon S3 externes](su-console-policy.md#su-external-buckets). Si la tâche Ground Truth stocke des images dans le compartiment de la console Étiquettes personnalisées Amazon Rekognition, vous n’avez pas besoin d’ajouter d’autorisations.

1. Suivez les instructions sous [Création d'un ensemble de données à l'aide d'un fichier manifeste SageMaker AI Ground Truth (console)](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-console) pour créer un jeu de données avec le fichier manifeste chargé. Pour l’étape 8, dans **Emplacement du fichier .manifest**, entrez l’URL Amazon S3 correspondant à l’emplacement du fichier manifeste. Si vous utilisez le kit AWS SDK, effectuez les actions indiquées dans [Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK) SageMaker AI Ground Truth](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk).

# Création d’un fichier manifeste à partir d’un fichier CSV
<a name="ex-csv-manifest"></a>

Cet exemple de script Python simplifie la création d’un fichier manifeste en utilisant un fichier CSV pour étiqueter les images. C’est vous qui créez le fichier CSV. Le fichier manifeste convient à la [classification d’images à plusieurs étiquettes](getting-started.md#gs-multi-label-image-classification-example) ou [Classification des images à plusieurs étiquettes](getting-started.md#gs-multi-label-image-classification-example). Pour plus d’informations, consultez [Recherche d’objets, de scènes et de concepts](understanding-custom-labels.md#tm-classification). 

**Note**  
Ce script ne crée pas de fichier manifeste adapté à la [recherche des emplacements d’objets](understanding-custom-labels.md#tm-object-localization) ni à la [recherche des marques](understanding-custom-labels.md#tm-brand-detection-localization).

Un fichier manifeste décrit les images utilisées pour entraîner un modèle (par exemple, les emplacements des images et les étiquettes attribuées aux images). Un fichier manifeste est composé d’une ou plusieurs lignes JSON. Chaque ligne JSON décrit une seule image. Pour plus d’informations, consultez [Importation d'étiquettes au niveau de l'image dans des fichiers manifestes](md-create-manifest-file-classification.md).

Un fichier CSV représente des données tabulaires réparties sur plusieurs lignes d’un fichier texte. Les champs sur une ligne sont séparés par une virgule. Pour plus d’informations, consultez la section [Valeurs séparées par des virgules](https://en.wikipedia.org/wiki/Comma-separated_values). Pour ce script, chaque ligne du fichier CSV représente une image unique et correspond à une ligne JSON dans le fichier manifeste. Pour créer un fichier CSV pour un fichier manifeste prenant en charge la [classification d’images à plusieurs étiquettes](getting-started.md#gs-multi-label-image-classification-example), vous devez ajouter une ou plusieurs étiquettes au niveau de l’image à chaque ligne. Pour créer un fichier manifeste adapté à la [Classification d’images](getting-started.md#gs-image-classification-example), vous devez ajouter une seule étiquette au niveau de l’image à chaque ligne.

Par exemple, le fichier CSV suivant décrit les images du projet de *mise en route* [Classification des images à plusieurs étiquettes](getting-started.md#gs-multi-label-image-classification-example) (Flowers). 

```
camellia1.jpg,camellia,with_leaves
camellia2.jpg,camellia,with_leaves
camellia3.jpg,camellia,without_leaves
helleborus1.jpg,helleborus,without_leaves,not_fully_grown
helleborus2.jpg,helleborus,with_leaves,fully_grown
helleborus3.jpg,helleborus,with_leaves,fully_grown
jonquil1.jpg,jonquil,with_leaves
jonquil2.jpg,jonquil,with_leaves
jonquil3.jpg,jonquil,with_leaves
jonquil4.jpg,jonquil,without_leaves
mauve_honey_myrtle1.jpg,mauve_honey_myrtle,without_leaves
mauve_honey_myrtle2.jpg,mauve_honey_myrtle,with_leaves
mauve_honey_myrtle3.jpg,mauve_honey_myrtle,with_leaves
mediterranean_spurge1.jpg,mediterranean_spurge,with_leaves
mediterranean_spurge2.jpg,mediterranean_spurge,without_leaves
```

Le script génère des lignes JSON pour chaque ligne. Par exemple, voici la ligne JSON pour la première ligne (`camellia1.jpg,camellia,with_leaves`).

```
{"source-ref": "s3://bucket/flowers/train/camellia1.jpg","camellia": 1,"camellia-metadata":{"confidence": 1,"job-name": "labeling-job/camellia","class-name": "camellia","human-annotated": "yes","creation-date": "2022-01-21T14:21:05","type": "groundtruth/image-classification"},"with_leaves": 1,"with_leaves-metadata":{"confidence": 1,"job-name": "labeling-job/with_leaves","class-name": "with_leaves","human-annotated": "yes","creation-date": "2022-01-21T14:21:05","type": "groundtruth/image-classification"}}
```

Dans l’exemple de fichier CSV, le chemin Amazon S3 vers l’image n’est pas présent. Si le fichier CSV n’inclut pas le chemin Amazon S3 des images, utilisez l’argument de ligne de commande `--s3_path` pour spécifier cette information pour l’image. 

Le script enregistre la première entrée pour chaque image dans un fichier image CSV dédupliqué. Le fichier image CSV dédupliqué contient une seule instance de chaque image trouvée dans le fichier CSV d’entrée. Les autres occurrences d’une image dans le fichier CSV d’entrée sont enregistrées dans un fichier image CSV dupliqué. Si le script détecte des images dupliquées, examinez le fichier image CSV dupliqué et mettez à jour le fichier image CSV dédupliqué si nécessaire. Réexécutez le script avec le fichier dédupliqué. Si aucun doublon n'est détecté dans le fichier CSV d'entrée, le script supprime le fichier image CSV dédupliqué et l'image dupliquée CSVfile, car ils sont vides. 

 Dans cette procédure, c’est vous qui créez le fichier CSV et qui exécutez le script Python pour créer le fichier manifeste. 

**Pour créer un fichier manifeste à partir d’un fichier CSV**

1. Créez un fichier CSV avec les champs suivants dans chaque ligne (une ligne par image). N’ajoutez pas de ligne d’en-tête au fichier CSV.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/ex-csv-manifest.html)

   Par exemple : `camellia1.jpg,camellia,with_leaves` ou `s3://my-bucket/flowers/train/camellia1.jpg,camellia,with_leaves` 

1. Enregistrez le fichier CSV.

1. Exécutez le script Python suivant. Fournissez les arguments suivants :
   + `csv_file` : fichier CSV que vous avez créé à l’étape 1. 
   + `manifest_file` : nom du fichier manifeste que vous souhaitez créer.
   + (Facultatif) `--s3_path s3://path_to_folder/` : chemin Amazon S3 à ajouter aux noms de fichiers image (champ 1). Utilisez `--s3_path` si les images du champ 1 ne contiennent pas déjà de chemin S3.

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier:  Apache-2.0
   
   from datetime import datetime, timezone
   import argparse
   import logging
   import csv
   import os
   import json
   
   """
   Purpose
   Amazon Rekognition Custom Labels model example used in the service documentation.
   Shows how to create an image-level (classification) manifest file from a CSV file.
   You can specify multiple image level labels per image.
   CSV file format is
   image,label,label,..
   If necessary, use the bucket argument to specify the S3 bucket folder for the images.
   https://docs.aws.amazon.com/rekognition/latest/customlabels-dg/md-gt-cl-transform.html
   """
   
   logger = logging.getLogger(__name__)
   
   
   def check_duplicates(csv_file, deduplicated_file, duplicates_file):
       """
       Checks for duplicate images in a CSV file. If duplicate images
       are found, deduplicated_file is the deduplicated CSV file - only the first
       occurence of a duplicate is recorded. Other duplicates are recorded in duplicates_file.
       :param csv_file: The source CSV file.
       :param deduplicated_file: The deduplicated CSV file to create. If no duplicates are found
       this file is removed.
       :param duplicates_file: The duplicate images CSV file to create. If no duplicates are found
       this file is removed.
       :return: True if duplicates are found, otherwise false.
       """
   
       logger.info("Deduplicating %s", csv_file)
   
       duplicates_found = False
   
       # Find duplicates.
       with open(csv_file, 'r', newline='', encoding="UTF-8") as f,\
               open(deduplicated_file, 'w', encoding="UTF-8") as dedup,\
               open(duplicates_file, 'w', encoding="UTF-8") as duplicates:
   
           reader = csv.reader(f, delimiter=',')
           dedup_writer = csv.writer(dedup)
           duplicates_writer = csv.writer(duplicates)
   
           entries = set()
           for row in reader:
               # Skip empty lines.
               if not ''.join(row).strip():
                   continue
   
               key = row[0]
               if key not in entries:
                   dedup_writer.writerow(row)
                   entries.add(key)
               else:
                   duplicates_writer.writerow(row)
                   duplicates_found = True
   
       if duplicates_found:
           logger.info("Duplicates found check %s", duplicates_file)
   
       else:
           os.remove(duplicates_file)
           os.remove(deduplicated_file)
   
       return duplicates_found
   
   
   def create_manifest_file(csv_file, manifest_file, s3_path):
       """
       Reads a CSV file and creates a Custom Labels classification manifest file.
       :param csv_file: The source CSV file.
       :param manifest_file: The name of the manifest file to create.
       :param s3_path: The S3 path to the folder that contains the images.
       """
       logger.info("Processing CSV file %s", csv_file)
   
       image_count = 0
       label_count = 0
   
       with open(csv_file, newline='', encoding="UTF-8") as csvfile,\
               open(manifest_file, "w", encoding="UTF-8") as output_file:
   
           image_classifications = csv.reader(
               csvfile, delimiter=',', quotechar='|')
   
           # Process each row (image) in CSV file.
           for row in image_classifications:
               source_ref = str(s3_path)+row[0]
   
               image_count += 1
   
               # Create JSON for image source ref.
               json_line = {}
               json_line['source-ref'] = source_ref
   
               # Process each image level label.
               for index in range(1, len(row)):
                   image_level_label = row[index]
   
                   # Skip empty columns.
                   if image_level_label == '':
                       continue
                   label_count += 1
   
                  # Create the JSON line metadata.
                   json_line[image_level_label] = 1
                   metadata = {}
                   metadata['confidence'] = 1
                   metadata['job-name'] = 'labeling-job/' + image_level_label
                   metadata['class-name'] = image_level_label
                   metadata['human-annotated'] = "yes"
                   metadata['creation-date'] = \
                       datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.%f')
                   metadata['type'] = "groundtruth/image-classification"
   
                   json_line[f'{image_level_label}-metadata'] = metadata
   
                   # Write the image JSON Line.
               output_file.write(json.dumps(json_line))
               output_file.write('\n')
   
       output_file.close()
       logger.info("Finished creating manifest file %s\nImages: %s\nLabels: %s",
                   manifest_file, image_count, label_count)
   
       return image_count, label_count
   
   
   def add_arguments(parser):
       """
       Adds command line arguments to the parser.
       :param parser: The command line parser.
       """
   
       parser.add_argument(
           "csv_file", help="The CSV file that you want to process."
       )
   
       parser.add_argument(
           "--s3_path", help="The S3 bucket and folder path for the images."
           " If not supplied, column 1 is assumed to include the S3 path.", required=False
       )
   
   
   def main():
   
       logging.basicConfig(level=logging.INFO,
                           format="%(levelname)s: %(message)s")
   
       try:
   
           # Get command line arguments
           parser = argparse.ArgumentParser(usage=argparse.SUPPRESS)
           add_arguments(parser)
           args = parser.parse_args()
   
           s3_path = args.s3_path
           if s3_path is None:
               s3_path = ''
   
           # Create file names.
           csv_file = args.csv_file
           file_name = os.path.splitext(csv_file)[0]
           manifest_file = f'{file_name}.manifest'
           duplicates_file = f'{file_name}-duplicates.csv'
           deduplicated_file = f'{file_name}-deduplicated.csv'
   
           # Create manifest file, if there are no duplicate images.
           if check_duplicates(csv_file, deduplicated_file, duplicates_file):
               print(f"Duplicates found. Use {duplicates_file} to view duplicates "
                     f"and then update {deduplicated_file}. ")
               print(f"{deduplicated_file} contains the first occurence of a duplicate. "
                     "Update as necessary with the correct label information.")
               print(f"Re-run the script with {deduplicated_file}")
           else:
               print("No duplicates found. Creating manifest file.")
   
               image_count, label_count = create_manifest_file(csv_file,
                                                               manifest_file,
                                                               s3_path)
   
               print(f"Finished creating manifest file: {manifest_file} \n"
                     f"Images: {image_count}\nLabels: {label_count}")
   
       except FileNotFoundError as err:
           logger.exception("File not found: %s", err)
           print(f"File not found: {err}. Check your input CSV file.")
   
   
   if __name__ == "__main__":
       main()
   ```

1. Si vous prévoyez d’utiliser un jeu de données de test, répétez les étapes 1 à 3 afin de créer un fichier manifeste pour le jeu de données de test.

1. Si nécessaire, copiez les images dans le chemin du compartiment Amazon S3 que vous avez spécifié dans la colonne 1 du fichier CSV (ou dans la ligne de commande `--s3_path`). Vous pouvez utiliser la commande S3 AWS suivante :

   ```
   aws s3 cp --recursive your-local-folder s3://your-target-S3-location
   ```

1. [Chargez les fichiers manifestes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/upload-objects.html) dans le compartiment Amazon S3 que vous souhaitez utiliser pour stocker ce type de fichier.
**Note**  
Assurez-vous qu’Étiquettes personnalisées Amazon Rekognition a accès au compartiment Amazon S3 référencé dans le champ `source-ref` des lignes JSON du fichier manifeste. Pour plus d’informations, consultez [Accès à des compartiments Amazon S3 externes](su-console-policy.md#su-external-buckets). Si la tâche Ground Truth stocke des images dans le compartiment de la console Étiquettes personnalisées Amazon Rekognition, vous n’avez pas besoin d’ajouter d’autorisations.

1. Suivez les instructions sous [Création d'un ensemble de données à l'aide d'un fichier manifeste SageMaker AI Ground Truth (console)](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-console) pour créer un jeu de données avec le fichier manifeste chargé. Pour l’étape 8, dans **Emplacement du fichier .manifest**, entrez l’URL Amazon S3 correspondant à l’emplacement du fichier manifeste. Si vous utilisez le kit AWS SDK, effectuez les actions indiquées dans [Création d'un ensemble de données à l'aide d'un fichier manifeste (SDK) SageMaker AI Ground Truth](md-create-dataset-ground-truth.md#md-create-dataset-ground-truth-sdk).

# Copier le contenu d'un ensemble de données existant
<a name="md-create-dataset-existing-dataset"></a>

Si vous avez déjà créé un jeu de données, vous pouvez copier son contenu dans un nouveau jeu de données. Pour créer un ensemble de données à partir d'un ensemble de données existant à l'aide du AWS SDK, consultez[Création d’un jeu de données à partir d’un jeu de données existant (kit SDK)](md-create-dataset-existing-dataset-sdk.md).

**Pour créer un jeu de données à partir d’un jeu de données Étiquettes personnalisées Amazon Rekognition existant (console)**

1. Ouvrez la console Amazon Rekognition à l'adresse. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Choisissez **Utiliser Custom Labels**.

1. Choisissez **Démarrer**. 

1. Dans le volet de navigation de gauche, choisissez **Projets**.

1. Sur la page **Projets**, choisissez le projet auquel vous souhaitez ajouter un jeu de données. La page de détails de ce projet s’affiche.

1. Choisissez **Créer un jeu de données**. La page **Créer un jeu de données** s’affiche.

1. Dans **Démarrage de la configuration**, choisissez **Démarrer avec un seul jeu de données** ou **Démarrer avec un jeu de données d’entraînement**. Pour créer un modèle de meilleure qualité, nous vous recommandons de commencer par un jeu de données d’entraînement et un jeu de données de test distincts.

------
#### [ Single dataset ]

   1. Dans la section **Détails du jeu de données d’entraînement**, choisissez **Copier un jeu de données Étiquettes personnalisées Amazon Rekognition existant**.

   1. Dans la section **Détails du jeu de données d’entraînement**, dans la zone d’édition **Jeu de données**, tapez ou sélectionnez le nom du jeu de données que vous souhaitez copier. 

   1. Choisissez **Créer un jeu de données**. La page des jeux de données de votre projet s’ouvre.

------
#### [ Separate training and test datasets ]

   1. Dans la section **Détails du jeu de données d’entraînement**, choisissez **Copier un jeu de données Étiquettes personnalisées Amazon Rekognition existant**.

   1. Dans la section **Détails du jeu de données d’entraînement**, dans la zone d’édition **Jeu de données**, tapez ou sélectionnez le nom du jeu de données que vous souhaitez copier. 

   1. Dans la section **Détails du jeu de données de test**, choisissez **Copier un jeu de données Étiquettes personnalisées Amazon Rekognition existant**.

   1. Dans la section **Détails du jeu de données de test**, dans la zone d’édition **Jeu de données**, tapez ou sélectionnez le nom du jeu de données que vous souhaitez copier. 
**Note**  
Le jeu de données d’entraînement et le jeu de données de test peuvent avoir différentes sources d’images.

   1. Choisissez **Créer des jeux de données**. La page des jeux de données de votre projet s’ouvre.

------

1. Si vous devez ajouter ou modifier des étiquettes, effectuez les actions indiquées dans [Étiquetage des images](md-labeling-images.md).

1. Suivez les étapes décrites dans [Entraînement d’un modèle (console)](training-model.md#tm-console) pour entraîner le modèle.

# Étiquetage des images
<a name="md-labeling-images"></a>

Une étiquette identifie un objet, une scène, un concept ou un cadre de délimitation autour d’un objet dans une image. Par exemple, si votre jeu de données contient des images de chiens, vous pouvez ajouter des étiquettes pour les races de chiens. 

Après avoir importé vos images dans un jeu de données, vous devrez peut-être ajouter des étiquettes à des images ou corriger des images mal étiquetées. Par exemple, les images ne sont pas étiquetées si elles sont importées depuis un ordinateur local. La galerie du jeu de données vous permet d’ajouter de nouvelles étiquettes au jeu de données et d’attribuer des étiquettes et des cadres de délimitation à ses images. 

La façon dont vous étiquetez les images des jeux de données détermine le type de modèle entraîné par Étiquettes personnalisées Amazon Rekognition. Pour plus d’informations, consultez [Utilisation des jeux de données](md-dataset-purpose.md). 

**Topics**
+ [Gestion des étiquettes](md-labels.md)
+ [Attribution d’étiquettes au niveau de l’image à une image](md-assign-image-level-labels.md)
+ [Étiquetage des objets à l’aide de cadres de délimitation](md-localize-objects.md)

# Gestion des étiquettes
<a name="md-labels"></a>

Vous pouvez gérer les étiquettes à l’aide de la console Étiquettes personnalisées Amazon Rekognition. Il n’existe pas d’API spécifique pour gérer les étiquettes : les étiquettes sont ajoutées au jeu de données lorsque vous le créez avec `CreateDataset` ou lorsque vous ajoutez d’autres images au jeu de données avec `UpdateDatasetEntries`.

**Topics**
+ [Gestion des étiquettes (console)](#md-labels-console)
+ [Gestion des étiquettes (kit SDK)](#md-labels-sdk)

## Gestion des étiquettes (console)
<a name="md-labels-console"></a>

Vous pouvez utiliser la console Étiquettes personnalisées Amazon Rekognition pour ajouter, modifier ou supprimer des étiquettes dans un jeu de données. Pour ajouter une étiquette à un jeu de données, vous pouvez ajouter une étiquette que vous créez ou importez des étiquettes à partir d’un jeu de données existant dans Rekognition.

**Topics**
+ [Ajout de nouvelles étiquettes (console)](#md-add-new-labels)
+ [Modification et suppression d’étiquettes (console)](#md-edit-labels-after-adding)

### Ajout de nouvelles étiquettes (console)
<a name="md-add-new-labels"></a>

Vous pouvez spécifier les nouvelles étiquettes que vous souhaitez ajouter au jeu de données. 

#### Ajout d’étiquettes à l’aide de la fenêtre d’édition
<a name="add-with-modal"></a>

**Pour ajouter une nouvelle étiquette (console)**

1. Ouvrez la console Amazon Rekognition à l'adresse. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Choisissez **Utiliser Custom Labels**.

1. Choisissez **Démarrer**. 

1. Dans le volet de navigation de gauche, choisissez **Projets**.

1. Sur la page **Projets**, choisissez le projet que vous voulez utiliser. La page de détails de ce projet s’affiche.

1. Si vous souhaitez ajouter des étiquettes au jeu de données d’entraînement, choisissez l’onglet **Entraînement**. Sinon, choisissez l’onglet **Test** pour ajouter des étiquettes au jeu de données de test. 

1. Choisissez **Commencer l’étiquetage** pour passer en mode d’étiquetage.

1. Dans la section **Étiquettes** de la galerie de jeux de données, choisissez **Gérer les étiquettes** pour ouvrir la boîte de dialogue correspondante****.

1. Dans la zone d’édition, saisissez un nouveau nom d’étiquette.

1. Choisissez **Ajouter une étiquette**.

1. Répétez les étapes 9 et 10 jusqu’à ce que vous ayez créé toutes les étiquettes dont vous avez besoin.

1. Choisissez **Enregistrer** pour enregistrer les étiquettes que vous avez ajoutées.

### Modification et suppression d’étiquettes (console)
<a name="md-edit-labels-after-adding"></a>

Vous pouvez renommer ou supprimer des étiquettes après les avoir ajoutées à un jeu de données. Vous ne pouvez supprimer que les étiquettes qui ne sont attribuées à aucune image.

**Pour renommer ou supprimer une étiquette existante (console)**

1. Ouvrez la console Amazon Rekognition à l'adresse. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Choisissez **Utiliser Custom Labels**.

1. Choisissez **Démarrer**. 

1. Dans le volet de navigation de gauche, choisissez **Projets**.

1. Sur la page **Projets**, choisissez le projet que vous voulez utiliser. La page de détails de ce projet s’affiche.

1. Si vous souhaitez modifier ou supprimer des étiquettes dans le jeu de données d’entraînement, cliquez sur l’onglet **Entraînement**. Sinon, choisissez l’onglet **Test** pour modifier ou supprimer des étiquettes dans le jeu de données de test. 

1. Choisissez **Commencer l’étiquetage** pour passer en mode d’étiquetage.

1. Dans la section **Étiquettes** de la galerie de jeux de données, choisissez **Gérer les étiquettes** pour ouvrir la boîte de dialogue correspondante****.

1. Choisissez l’étiquette que vous souhaitez modifier ou supprimer.   
![\[Boîte de dialogue Gérer les étiquettes affichant un champ de texte pour ajouter une nouvelle étiquette et une étiquette existante nommée « test », avec des options pour enregistrer ou annuler les modifications.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/change-delete-label.jpg)

   1. Si vous choisissez l’icône de suppression (X), l’étiquette est supprimée de la liste.

   1. Si vous souhaitez modifier l’étiquette, choisissez l’icône d’édition (crayon et bloc-notes) et entrez un nouveau nom d’étiquette dans la zone d’édition. 

1. Choisissez **Save** pour enregistrer les changements.

## Gestion des étiquettes (kit SDK)
<a name="md-labels-sdk"></a>

Il n’existe pas d’API unique qui gère les étiquettes des jeux de données. Si vous créez un jeu de données avec `CreateDataset`, les étiquettes présentes dans le fichier manifeste ou dans le jeu de données copié, créez l’ensemble initial d’étiquettes. Si vous ajoutez d’autres images avec l’API `UpdateDatasetEntries`, les nouvelles étiquettes présentes dans les entrées sont ajoutées au jeu de données. Pour plus d’informations, consultez [Ajout d’autres images (kit SDK)](md-add-images.md#md-add-images-sdk). Pour supprimer des étiquettes d’un jeu de données, vous devez supprimer toutes les annotations d’étiquettes du jeu de données.

**Pour supprimer des étiquettes d’un jeu de données**

1. Appelez `ListDatasetEntries` pour obtenir les entrées du jeu de données. Pour obtenir un exemple de code, consultez [Liste des entrées d’un jeu de données (kit SDK)](md-listing-dataset-entries-sdk.md).

1. Dans le fichier, supprimez toutes les annotations d’étiquette. Pour plus d’informations, consultez [Importation d'étiquettes au niveau de l'image dans des fichiers manifestes](md-create-manifest-file-classification.md) et [Localisation d’objets dans les fichiers manifestes](md-create-manifest-file-object-detection.md). 

1. Utilisez ce fichier pour mettre à jour le jeu de données avec l’API `UpdateDatasetEntries`. Pour plus d’informations, consultez [Ajout d’autres images (kit SDK)](md-add-images.md#md-add-images-sdk).

# Attribution d’étiquettes au niveau de l’image à une image
<a name="md-assign-image-level-labels"></a>

Les étiquettes au niveau de l’image vous permettent d’entraîner des modèles qui classent les images dans des catégories. Une étiquette au niveau de l’image indique qu’une image contient un objet, une scène ou un concept. Par exemple, l’image suivante présente une rivière. Si votre modèle classe les images comme contenant des rivières, vous devez ajouter une étiquette *rivière* au niveau de l’image. Pour de plus amples informations, veuillez consulter [Utilisation des jeux de données](md-dataset-purpose.md). 

![\[Lac reflétant les montagnes et les nuages dans l'eau calme au coucher ou au lever du soleil.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/pateros.jpg)


Un jeu de données contenant des étiquettes au niveau de l’image doit comporter au moins deux étiquettes. Chaque image doit comporter au moins une étiquette qui identifie son objet, sa scène ou son concept.

**Pour attribuer des étiquettes au niveau de l’image à une image (console)**

1. Ouvrez la console Amazon Rekognition à l'adresse. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Choisissez **Utiliser Custom Labels**.

1. Choisissez **Démarrer**. 

1. Dans le volet de navigation de gauche, choisissez **Projets**.

1. Sur la page **Projets**, choisissez le projet que vous voulez utiliser. La page de détails de ce projet s’affiche.

1. Dans le volet de navigation de gauche, choisissez **Dataset**. 

1. Si vous souhaitez ajouter des étiquettes au jeu de données d’entraînement, choisissez l’onglet **Entraînement**. Sinon, choisissez l’onglet **Test** pour ajouter des étiquettes au jeu de données de test. 

1. Choisissez **Commencer l’étiquetage** pour passer en mode d’étiquetage.

1. Dans la galerie d’images, sélectionnez une ou plusieurs images auxquelles vous souhaitez ajouter des étiquettes. Vous ne pouvez sélectionner des images que sur une seule page à la fois. Pour sélectionner une plage contiguë d’images sur une page :

   1. Sélectionnez la première image de la plage.

   1. Appuyez sur la touche Maj et maintenez-la enfoncée.

   1. Sélectionnez la dernière plage d’images. Les images situées entre la première et la deuxième image sont également sélectionnées. 

   1. Relâchez la touche Maj.

1. Choisissez **Attribuer des étiquettes au niveau de l’image**. 

1. Dans la boîte de dialogue **Attribuer une étiquette au niveau de l'image aux images sélectionnées**, sélectionnez une étiquette que vous souhaitez attribuer à l'image ou aux images.

1. Choisissez **Attribuer** pour attribuer l’étiquette à l’image.

1. Répétez l’étiquetage jusqu’à ce que chaque image soit annotée avec les étiquettes requises.

1. Choisissez **Enregistrer les Modifications** pour enregistrer vos Modifications.

## Attribution d’étiquettes au niveau de l’image (kit SDK)
<a name="md-assign-image-level-labels-sdk"></a>

Vous pouvez utiliser l’API `UpdateDatasetEntries` pour ajouter ou mettre à jour les étiquettes au niveau de l’image qui sont attribuées à une image. `UpdateDatasetEntries` utilise une ou plusieurs lignes JSON. Chaque ligne JSON représente une seule image. Pour une image avec une étiquette au niveau de l’image, la ligne JSON ressemble à ce qui suit. 

```
{"source-ref":"s3://custom-labels-console-us-east-1-nnnnnnnnnn/gt-job/manifest/IMG_1133.png","TestCLConsoleBucket":0,"TestCLConsoleBucket-metadata":{"confidence":0.95,"job-name":"labeling-job/testclconsolebucket","class-name":"Echo Dot","human-annotated":"yes","creation-date":"2020-04-15T20:17:23.433061","type":"groundtruth/image-classification"}}
```

Le champ `source-ref` indique l’emplacement de l’image. La ligne JSON inclut également les étiquettes au niveau de l’image attribuées à l’image. Pour plus d’informations, consultez [Importation d'étiquettes au niveau de l'image dans des fichiers manifestes](md-create-manifest-file-classification.md).

**Pour attribuer des étiquettes au niveau de l’image à une image**

1. Pour obtenir la ligne get JSON correspondant à l’image existante, utilisez `ListDatasetEntries`. Pour le champ `source-ref`, spécifiez l’emplacement de l’image à laquelle vous souhaitez attribuer l’étiquette. Pour plus d’informations, consultez [Liste des entrées d’un jeu de données (kit SDK)](md-listing-dataset-entries-sdk.md). 

1. Mettez à jour la ligne JSON renvoyée à l’étape précédente à l’aide des informations indiquées dans [Importation d'étiquettes au niveau de l'image dans des fichiers manifestes](md-create-manifest-file-classification.md).

1. Appelez `UpdateDatasetEntries` pour mettre à jour l’image. Pour plus d’informations, consultez [Ajout d’autres images à un jeu de données](md-add-images.md).

# Étiquetage des objets à l’aide de cadres de délimitation
<a name="md-localize-objects"></a>

Si vous souhaitez que votre modèle détecte l’emplacement des objets dans une image, vous devez identifier la nature de l’objet et son emplacement dans l’image. Un cadre de délimitation isole un objet dans une image. Les cadres de délimitation vous permettent d’entraîner un modèle à détecter différents objets dans la même image. Vous identifiez l’objet en attribuant une étiquette au cadre de délimitation. 

**Note**  
Si vous entraînez un modèle à rechercher des objets, des scènes et des concepts avec des étiquettes au niveau de l’image, vous n’avez pas besoin de suivre cette étape.

Par exemple, si vous souhaitez entraîner un modèle qui détecte les appareils Amazon Echo Dot, vous devez dessiner un cadre de délimitation autour de chaque appareil Echo Dot sur une image et attribuer une étiquette nommée *Echo Dot* au cadre de délimitation. L’image suivante affiche un cadre de délimitation autour d’un appareil Echo Dot. L’image contient également un appareil Amazon Echo sans cadre de délimitation.

![\[Appareils Amazon Echo Dot et Echo, avec cadre de délimitation autour de l'Echo Dot.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/dot.jpg)


## Localisation d’objets à l’aide de cadres de délimitation (console)
<a name="md-localize-objects-console"></a>

 Dans cette procédure, vous utilisez la console pour dessiner des cadres de délimitation autour des objets dans vos images. Vous pouvez également identifier des objets dans l’image en attribuant des étiquettes au cadre de délimitation. 

**Note**  
Vous ne pouvez pas utiliser le navigateur Safari pour ajouter des cadres de délimitation aux images. Pour déterminer quels navigateurs sont pris en charge, consultez [Configuration d’Étiquettes personnalisées Amazon Rekognition](setting-up.md).

Avant de pouvoir ajouter des cadres de délimitation, vous devez ajouter au moins une étiquette au jeu de données. Pour plus d’informations, consultez [Ajout de nouvelles étiquettes (console)](md-labels.md#md-add-new-labels).

****

**Pour ajouter des cadres de délimitation aux images (console)**

1. Ouvrez la console Amazon Rekognition à l'adresse. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Choisissez **Utiliser Custom Labels**.

1. Choisissez **Démarrer**. 

1. Dans le volet de navigation de gauche, choisissez **Projets**.

1. Sur la page **Projets**, choisissez le projet que vous voulez utiliser. La page de détails de ce projet s’affiche.

1. Sur la page des détails du projet, choisissez **Étiqueter des images**.

1. Si vous souhaitez ajouter des cadres de délimitation aux images du jeu de données d’entraînement, choisissez l’onglet **Entraînement**. Sinon, choisissez l’onglet **Test** pour ajouter des cadres de délimitation aux images du jeu de données de test. 

1. Choisissez **Commencer l’étiquetage** pour passer en mode d’étiquetage.

1. Dans la galerie d’images, choisissez les images auxquelles vous souhaitez ajouter des cadres de délimitation.

1. Choisissez **Dessiner un cadre de délimitation**. Une série de conseils apparaissent avant l’affichage de l’éditeur de cadres de délimitation.

1. Dans le volet **Étiquettes** de droite, sélectionnez l’étiquette que vous souhaitez attribuer à un cadre de délimitation.

1. Dans l’outil de dessin, placez le pointeur en haut à gauche de l’objet souhaité.

1. Appuyez sur le bouton gauche de la souris et tracez un cadre autour de l’objet. Essayez de dessiner le cadre de délimitation le plus près possible de l’objet. 

1. Relâchez le bouton de la souris. Le cadre de délimitation est mis en évidence.

1. Choisissez **Suivant** si vous avez d’autres images à étiqueter. Sinon, choisissez **OK** pour terminer l’étiquetage.  
![\[Interface utilisateur pour dessiner un cadre autour d'une image, l'image représente des haut-parleurs intelligents Amazon Echo et Echo Dot sur une surface en bois.\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/draw-bounding-box.png)

1. Répétez les étapes 1 à 7 jusqu’à ce que vous ayez créé un cadre de délimitation dans chaque image contenant des objets. 

1. Choisissez **Enregistrer les Modifications** pour enregistrer vos Modifications. 

1. Choisissez **Quitter** pour quitter le mode d’étiquetage.

## Localisation d’objets à l’aide de cadres de délimitation (kit SDK)
<a name="md-localize-objects-sdk"></a>

Vous pouvez utiliser l’API `UpdateDatasetEntries` pour ajouter ou mettre à jour les informations d’emplacement d’objets pour une image. `UpdateDatasetEntries` utilise une ou plusieurs lignes JSON. Chaque ligne JSON représente une seule image. Pour la localisation d’objets, une ligne JSON ressemble à ce qui suit. 

```
{"source-ref": "s3://bucket/images/IMG_1186.png", "bounding-box": {"image_size": [{"width": 640, "height": 480, "depth": 3}], "annotations": [{ "class_id": 1,	"top": 251,	"left": 399, "width": 155, "height": 101}, {"class_id": 0, "top": 65, "left": 86, "width": 220,	"height": 334}]}, "bounding-box-metadata": {"objects": [{ "confidence": 1}, {"confidence": 1}],	"class-map": {"0": "Echo",	"1": "Echo Dot"}, "type": "groundtruth/object-detection", "human-annotated": "yes",	"creation-date": "2013-11-18T02:53:27", "job-name": "my job"}}
```

Le champ `source-ref` indique l’emplacement de l’image. La ligne JSON inclut également des cadres de délimitation étiquetés pour chaque objet de l’image. Pour plus d’informations, consultez [Localisation d’objets dans les fichiers manifestes](md-create-manifest-file-object-detection.md).

**Pour attribuer des cadres de délimitation à une image**

1. Pour obtenir la ligne get JSON correspondant à l’image existante, utilisez `ListDatasetEntries`. Pour le champ `source-ref`, spécifiez l’emplacement de l’image à laquelle vous souhaitez attribuer l’étiquette au niveau de l’image. Pour plus d’informations, consultez [Liste des entrées d’un jeu de données (kit SDK)](md-listing-dataset-entries-sdk.md).

1. Mettez à jour la ligne JSON renvoyée à l’étape précédente à l’aide des informations indiquées dans [Localisation d’objets dans les fichiers manifestes](md-create-manifest-file-object-detection.md).

1. Appelez `UpdateDatasetEntries` pour mettre à jour l’image. Pour plus d’informations, consultez [Ajout d’autres images à un jeu de données](md-add-images.md).

# Débogage des jeux de données
<a name="debugging-datasets"></a>

Lors de la création d’un jeu de données, deux types d’erreurs peuvent se produire : les *erreurs définitives* et les *erreurs non définitives*. Les erreurs définitives peuvent arrêter la création ou la mise à jour du jeu de données. Les erreurs non définitives n’interrompent pas la création ni la mise à jour du jeu de données.

**Topics**
+ [Erreurs de débogage des jeux de données du terminal](debugging-datasets-terminal-errors.md)
+ [Débogage des erreurs d'ensembles de données non terminaux](debugging-datasets-non-terminal-errors.md)

# Erreurs de débogage des jeux de données du terminal
<a name="debugging-datasets-terminal-errors"></a>

 Il existe deux types d’erreurs définitives : les erreurs de fichier qui entraînent l’échec de la création du jeu de données et les erreurs de contenu qu’Étiquettes personnalisées Amazon Rekognition supprime du jeu de données. La création du jeu de données échoue s’il y a trop d’erreurs de contenu.

**Topics**
+ [Erreurs de fichier définitives](#debugging-datasets-terminal-file-errors)
+ [Erreurs définitives de contenu](#debugging-datasets-terminal-content-errors)

## Erreurs de fichier définitives
<a name="debugging-datasets-terminal-file-errors"></a>

Voici des exemples d’erreurs de fichier. Vous pouvez obtenir des informations sur les erreurs de fichier en appelant `DescribeDataset` et en vérifiant les champs `Status` et `StatusMessage`. Pour obtenir un exemple de code, consultez [Description d’un jeu de données (kit SDK)](md-describing-dataset-sdk.md).
+ [ERROR\$1MANIFEST\$1INACCESSIBLE\$1OR\$1UNSUPPORTED\$1FORMAT](#md-error-status-ERROR_MANIFEST_INACCESSIBLE_OR_UNSUPPORTED_FORMAT)
+ [ERROR\$1MANIFEST\$1SIZE\$1TOO\$1LARGE](#md-error-status-ERROR_MANIFEST_SIZE_TOO_LARGE).
+ [ERROR\$1MANIFEST\$1ROWS\$1EXCEEDS\$1MAXIMUM](#md-error-status-ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM)
+ [ERROR\$1INVALID\$1PERMISSIONS\$1MANIFEST\$1S3\$1BUCKET](#md-error-status-ERROR_INVALID_PERMISSIONS_MANIFEST_S3_BUCKET)
+ [ERROR\$1TOO\$1MANY\$1RECORDS\$1IN\$1ERROR](#md-error-status-ERROR_TOO_MANY_RECORDS_IN_ERROR)
+ [ERROR\$1MANIFEST\$1TOO\$1MANY\$1LABELS](#md-error-status-ERROR_MANIFEST_TOO_MANY_LABELS)
+ [ERROR\$1INSUFFICIENT\$1IMAGES\$1PER\$1LABEL\$1FOR\$1DISTRIBUTE](#md-error-status-ERROR_INSUFFICIENT_IMAGES_PER_LABEL_FOR_DISTRIBUTE)

### ERROR\$1MANIFEST\$1INACCESSIBLE\$1OR\$1UNSUPPORTED\$1FORMAT
<a name="md-error-status-ERROR_MANIFEST_INACCESSIBLE_OR_UNSUPPORTED_FORMAT"></a>

#### Message d’erreur
<a name="md-error-message-ERROR_MANIFEST_INACCESSIBLE_OR_UNSUPPORTED_FORMAT"></a>

Le contenu ou l’extension du fichier manifeste ne sont pas valides.

Le fichier manifeste d’entraînement ou de test n’a pas d’extension de fichier ou son contenu n’est pas valide. 

**Pour corriger l’erreur *ERROR\$1MANIFEST\$1INACCESSIBLE\$1OR\$1UNSUPPORTED\$1FORMAT***
+ Vérifiez les causes possibles suivantes dans les fichiers manifestes d’entraînement et de test.
  + Le fichier manifeste ne comporte aucune extension de fichier. Par convention, l’extension de fichier est `.manifest`.
  +  Impossible de trouver la clé ou le compartiment Amazon S3 du fichier manifeste.

### ERROR\$1MANIFEST\$1SIZE\$1TOO\$1LARGE
<a name="md-error-status-ERROR_MANIFEST_SIZE_TOO_LARGE"></a>

#### Message d’erreur
<a name="md-error-message-ERROR_MANIFEST_SIZE_TOO_LARGE"></a>

La taille du fichier manifeste dépasse la taille maximale prise en charge.

La taille (en octets) du fichier manifeste d’entraînement ou de test est trop importante. Pour plus d’informations, consultez [Directives et quotas dans Étiquettes personnalisées Amazon Rekognition](limits.md). Un fichier manifeste peut comporter un nombre de lignes JSON inférieur au nombre maximal autorisé, mais pourtant dépasser la taille de fichier maximale.

Vous ne pouvez pas utiliser la console Étiquettes personnalisées Amazon Rekognition pour corriger l’erreur *La taille du fichier manifeste dépasse la taille maximale prise en charge*.

**Pour corriger l’erreur *ERROR\$1MANIFEST\$1SIZE\$1TOO\$1LARGE***

1. Vérifiez quels manifestes d’entraînement et de test dépassent la taille de fichier maximale.

1. Réduisez le nombre de lignes JSON dans les fichiers manifestes dont la taille est trop importante. Pour plus d’informations, consultez [Création d’un fichier manifeste](md-create-manifest-file.md).

### ERROR\$1MANIFEST\$1ROWS\$1EXCEEDS\$1MAXIMUM
<a name="md-error-status-ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM"></a>

#### Message d’erreur
<a name="md-error-message-ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM"></a>

Le fichier manifeste contient trop de lignes.

#### En savoir plus
<a name="md-error-description-ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM"></a>

Le nombre de lignes JSON (nombre d’images) dans le fichier manifeste est supérieur à la limite autorisée. Cette limite est différente pour les modèles au niveau de l’image et les modèles d’emplacement d’objets. Pour plus d’informations, consultez [Directives et quotas dans Étiquettes personnalisées Amazon Rekognition](limits.md). 

Les erreurs de ligne JSON sont validées jusqu’à ce que le nombre de lignes JSON atteigne la limite `ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM`. 

Vous ne pouvez pas utiliser la console Étiquettes personnalisées Amazon Rekognition pour corriger une erreur `ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM`.

**Pour corriger l’erreur `ERROR_MANIFEST_ROWS_EXCEEDS_MAXIMUM`**
+ Réduisez le nombre de lignes JSON dans le manifeste. Pour plus d’informations, consultez [Création d’un fichier manifeste](md-create-manifest-file.md).



### ERROR\$1INVALID\$1PERMISSIONS\$1MANIFEST\$1S3\$1BUCKET
<a name="md-error-status-ERROR_INVALID_PERMISSIONS_MANIFEST_S3_BUCKET"></a>

#### Message d’erreur
<a name="md-error-message-ERROR_INVALID_PERMISSIONS_MANIFEST_S3_BUCKET"></a>

Les autorisations du compartiment S3 sont incorrectes.

La fonctionnalité Étiquettes personnalisées Amazon Rekognition n’est pas autorisée à accéder à un ou plusieurs compartiments contenant les fichiers manifestes d’entraînement et de test. 

Vous ne pouvez pas utiliser la console Étiquettes personnalisées Amazon Rekognition pour corriger cette erreur.

**Pour corriger l’erreur *ERROR\$1INVALID\$1PERMISSIONS\$1MANIFEST\$1S3\$1BUCKET***
+ Vérifiez les autorisations du ou des compartiments contenant les fichiers manifestes d’entraînement et de test. Pour plus d’informations, consultez [Étape 2 : Configurer les autorisations d’accès à la console Étiquettes personnalisées Amazon Rekognition](su-console-policy.md).

### ERROR\$1TOO\$1MANY\$1RECORDS\$1IN\$1ERROR
<a name="md-error-status-ERROR_TOO_MANY_RECORDS_IN_ERROR"></a>

#### Message d’erreur
<a name="md-error-message-ERROR_TOO_MANY_RECORDS_IN_ERROR"></a>

 Le fichier manifeste contient trop d’erreurs définitives.

**Pour corriger l’erreur `ERROR_TOO_MANY_RECORDS_IN_ERROR`**
+ Réduisez le nombre de lignes JSON (images) présentant des erreurs définitives de contenu. Pour plus d’informations, consultez [Erreurs définitives de contenu de manifeste](tm-debugging-aggregate-errors.md). 

Vous ne pouvez pas utiliser la console Étiquettes personnalisées Amazon Rekognition pour corriger cette erreur.

### ERROR\$1MANIFEST\$1TOO\$1MANY\$1LABELS
<a name="md-error-status-ERROR_MANIFEST_TOO_MANY_LABELS"></a>

#### Message d’erreur
<a name="md-error-message-ERROR_MANIFEST_TOO_MANY_LABELS"></a>

Le fichier manifeste contient trop d’étiquettes.

##### En savoir plus
<a name="md-error-description-ERROR_MANIFEST_TOO_MANY_LABELS"></a>

Le nombre d’étiquettes uniques dans le manifeste (jeu de données) est supérieur à la limite autorisée. Si le jeu de données d’entraînement est fractionné pour créer un jeu de données de test, le nombre d’étiquettes est déterminé après le fractionnement. 

**Pour corriger l’erreur ERROR\$1MANIFEST\$1TOO\$1MANY\$1LABELS (Console)**
+ Supprimez des étiquettes du jeu de données. Pour plus d’informations, consultez [Gestion des étiquettes](md-labels.md). Les étiquettes sont automatiquement supprimées des images et des cadres de délimitation du jeu de données.



**Pour corriger l’erreur ERROR\$1MANIFEST\$1TOO\$1MANY\$1LABELS (Ligne JSON)**
+ Manifestes avec lignes JSON au niveau de l’image : si l’image possède une seule étiquette, supprimez les lignes JSON des images utilisant l’étiquette souhaitée. Si la ligne JSON contient plusieurs étiquettes, supprimez uniquement l’objet JSON correspondant à l’étiquette souhaitée. Pour plus d’informations, consultez [Ajout de plusieurs étiquettes au niveau de l’image à une image](md-create-manifest-file-classification.md#md-dataset-purpose-classification-multiple-labels). 

  Manifestes avec lignes JSON d’emplacement d’objets : supprimez le cadre de délimitation et les informations associées à l’étiquette que vous souhaitez supprimer. Procédez ainsi pour chaque ligne JSON contenant l’étiquette souhaitée. Vous devez supprimer l’étiquette du tableau `class-map` et les objets correspondants dans le tableau `objects` et `annotations`. Pour plus d’informations, consultez [Localisation d’objets dans les fichiers manifestes](md-create-manifest-file-object-detection.md).

### ERROR\$1INSUFFICIENT\$1IMAGES\$1PER\$1LABEL\$1FOR\$1DISTRIBUTE
<a name="md-error-status-ERROR_INSUFFICIENT_IMAGES_PER_LABEL_FOR_DISTRIBUTE"></a>

#### Message d’erreur
<a name="md-error-message-ERROR_MANIFEST_TOO_MANY_LABELS"></a>

Le fichier manifeste ne contient pas suffisamment d’images étiquetées pour distribuer le jeu de données.



La distribution des jeux de données se produit lorsqu’Étiquettes personnalisées Amazon Rekognition fractionne un jeu de données d’entraînement pour créer un jeu de données de test. Vous pouvez également fractionner un jeu de données en appelant l’API `DistributeDatasetEntries`.

**Pour corriger l’erreur *ERROR\$1MANIFEST\$1TOO\$1MANY\$1LABELS***
+ Ajout d’autres images étiquetées au jeu de données d’entraînement

## Erreurs définitives de contenu
<a name="debugging-datasets-terminal-content-errors"></a>

Voici quelques exemples d’erreurs définitives de contenu. Lors de la création d’un jeu de données, les images présentant des erreurs définitives de contenu sont supprimées du jeu de données. Le jeu de données peut continuer à être utilisé pour l’entraînement. S'il y a trop d'erreurs de contenu, dataset/update échoue. Les erreurs définitives de contenu liées aux opérations du jeu de données ne sont pas affichées dans la console ni renvoyées par `DescribeDataset` ou une autre API. Si vous remarquez que des images ou des annotations sont absentes de vos jeux de données, vérifiez les fichiers manifestes de ces derniers pour détecter les problèmes suivants : 
+ La longueur d’une ligne JSON est trop longue. La longueur maximale est de 100 000 caractères.
+ La valeur `source-ref` est absente d’une ligne JSON.
+ Le format d’une valeur `source-ref` dans une ligne JSON n’est pas valide.
+ Le contenu d’une ligne JSON n’est pas valide.
+ La valeur d’un champ `source-ref` apparaît plusieurs fois. Une image ne peut être référencée qu’une seule fois dans un jeu de données.

Pour plus d’informations sur le champ `source-ref`, consultez [Création d’un fichier manifeste](md-create-manifest-file.md). 

# Débogage des erreurs d'ensembles de données non terminaux
<a name="debugging-datasets-non-terminal-errors"></a>

Les erreurs non définitives qui peuvent se produire lors de la création ou de la mise à jour du jeu de données sont les suivantes. Ces erreurs peuvent invalider une ligne JSON entière ou des annotations au sein d’une ligne JSON. Si une ligne JSON contient une erreur, elle n’est pas utilisée pour l’entraînement. Si une annotation dans une ligne JSON contient une erreur, la ligne JSON continue à être utilisée pour l’entraînement, mais sans l’annotation corrompue. Pour plus d’informations sur les lignes JSON, consultez [Création d’un fichier manifeste](md-create-manifest-file.md).

Vous pouvez accéder aux erreurs non définitives depuis la console et en appelant l’API `ListDatasetEntries`. Pour plus d’informations, consultez [Liste des entrées d’un jeu de données (kit SDK)](md-listing-dataset-entries-sdk.md).

Les erreurs suivantes sont également renvoyées pendant l’entraînement. Nous vous recommandons de corriger ces erreurs avant d’entraîner votre modèle. Pour plus d’informations, consultez [Erreurs non définitives de validation de ligne JSON](tm-debugging-json-line-errors.md).
+ [ERROR\$1NO\$1LABEL\$1ATTRIBUTES](tm-debugging-json-line-errors.md#tm-error-ERROR_NO_LABEL_ATTRIBUTES)
+ [ERROR\$1INVALID\$1LABEL\$1ATTRIBUTE\$1FORMAT](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_LABEL_ATTRIBUTE_FORMAT)
+ [ERROR\$1INVALID\$1LABEL\$1ATTRIBUTE\$1METADATA\$1FORMAT](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_LABEL_ATTRIBUTE_METADATA_FORMAT)
+ [ERROR\$1NO\$1VALID\$1LABEL\$1ATTRIBUTES](tm-debugging-json-line-errors.md#tm-error-ERROR_NO_VALID_LABEL_ATTRIBUTES)
+ [ERROR\$1INVALID\$1BOUNDING\$1BOX](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_BOUNDING_BOX)
+ [ERROR\$1INVALID\$1IMAGE\$1DIMENSION](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_IMAGE_DIMENSION)
+ [ERROR\$1BOUNDING\$1BOX\$1TOO\$1SMALL](tm-debugging-json-line-errors.md#tm-error-ERROR_BOUNDING_BOX_TOO_SMALL)
+ [ERROR\$1NO\$1VALID\$1ANNOTATIONS](tm-debugging-json-line-errors.md#tm-error-ERROR_NO_VALID_ANNOTATIONS)
+ [ERROR\$1MISSING\$1BOUNDING\$1BOX\$1CONFIDENCE](tm-debugging-json-line-errors.md#tm-error-ERROR_MISSING_BOUNDING_BOX_CONFIDENCE)
+ [ERROR\$1MISSING\$1CLASS\$1MAP\$1ID](tm-debugging-json-line-errors.md#tm-error-ERROR_MISSING_CLASS_MAP_ID)
+ [ERROR\$1TOO\$1MANY\$1BOUNDING\$1BOXES](tm-debugging-json-line-errors.md#tm-error-ERROR_TOO_MANY_BOUNDING_BOXES)
+ [ERROR\$1UNSUPPORTED\$1USE\$1CASE\$1TYPE](tm-debugging-json-line-errors.md#tm-error-ERROR_UNSUPPORTED_USE_CASE_TYPE)
+ [ERROR\$1INVALID\$1LABEL\$1NAME\$1LENGTH](tm-debugging-json-line-errors.md#tm-error-ERROR_INVALID_LABEL_NAME_LENGTH)

## Accès aux erreurs non définitives
<a name="debugging-dataset-access-non-terminal-errors"></a>

Vous pouvez utiliser la console pour déterminer quelles images d’un jeu de données présentent des erreurs non définitives. Vous pouvez également appeler l’API `ListDatasetEntries` pour obtenir les messages d’erreur. Pour plus d’informations, consultez [Liste des entrées d’un jeu de données (kit SDK)](md-listing-dataset-entries-sdk.md). 

**Pour accéder aux erreurs non définitives (console)**

1. Ouvrez la console Amazon Rekognition à l'adresse. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Choisissez **Utiliser Custom Labels**.

1. Choisissez **Démarrer**. 

1. Dans le volet de navigation de gauche, choisissez **Projets**.

1. Sur la page **Projets**, choisissez le projet que vous voulez utiliser. La page de détails de ce projet s’affiche.

1. Si vous souhaitez afficher les erreurs non définitives dans le jeu de données d’entraînement, choisissez l’onglet **Entraînement**. Sinon, choisissez l’onglet **Test** pour afficher les erreurs non définitives dans le jeu de données de test. 

1. Dans la section **Étiquettes** de la galerie du jeu de données, sélectionnez **Erreurs**. La galerie du jeu de données est filtrée pour n’afficher que les images comportant des erreurs.

1. Choisissez **Erreur** sous une image pour voir le code d’erreur. Utilisez les informations fournies sous [Erreurs non définitives de validation de ligne JSON](tm-debugging-json-line-errors.md) pour corriger l’erreur.  
![\[Boîte de dialogue d'erreur affichant « ERROR_UNSUPPORTED_USE_CASE_TYPE » et « ERROR_NO_VALID_LABEL_ATTRIBUTES » sous « Erreurs d'enregistrement du jeu de données ».\]](http://docs.aws.amazon.com/fr_fr/rekognition/latest/customlabels-dg/images/dataset-non-terminal-error.jpg)