

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.

# Détection d'objets - MXNet
<a name="object-detection"></a>

L' MXNet algorithme Amazon SageMaker AI Object Detection détecte et classe les objets dans les images à l'aide d'un seul réseau neuronal profond. Il s'agit d'un algorithme d'apprentissage supervisé qui accepte les images en tant qu'entrée et identifie toutes les instances d'objets au sein de l'image. L'objet est classé dans l'une des classes d'une collection spécifiée avec un score de fiabilité qu'il appartient à la classe. Son emplacement et son échelle dans l'image sont indiqués par un cadre de délimitation rectangulaire. Il utilise le framework [Single Shot multibox Detector (SSD)](https://arxiv.org/pdf/1512.02325.pdf) et prend en charge deux réseaux de base : [VGG](https://arxiv.org/pdf/1409.1556.pdf) et. [ResNet](https://arxiv.org/pdf/1603.05027.pdf) Le réseau peut être entraîné à partir de zéro ou à l'aide de modèles préentraînés sur le [ImageNet](http://www.image-net.org/)jeu de données.

**Topics**
+ [Interface d'entrée/sortie pour l'algorithme de détection d'objets](#object-detection-inputoutput)
+ [Recommandation sur les instances EC2 pour l'algorithme de détection d'objet](#object-detection-instances)
+ [Exemples de blocs-notes de détection d'objet](#object-detection-sample-notebooks)
+ [Fonctionnement de la détection d'objet](algo-object-detection-tech-notes.md)
+ [Hyperparamètres de la détection d'objet](object-detection-api-config.md)
+ [Régler un modèle de détection d'objet](object-detection-tuning.md)
+ [Formats de demande et de réponse de détection d'objets](object-detection-in-formats.md)

## Interface d'entrée/sortie pour l'algorithme de détection d'objets
<a name="object-detection-inputoutput"></a>

L'algorithme SageMaker AI Object Detection prend en charge à la fois les types de contenu Recordio (`application/x-recordio`) et image (`image/png``image/jpeg`, et`application/x-image`) pour l'entraînement en mode fichier et prend en charge recordIO (`application/x-recordio`) pour l'entraînement en mode pipe. Toutefois, vous pouvez également entraîner les modèles en mode Pipe (Tube) en utilisant les fichiers image (`image/png`, `image/jpeg` et `application/x-image`), sans créer de fichiers RecordIO, en recourant au format manifeste augmenté. Le format d'entrée recommandé pour les algorithmes de détection d'objets Amazon SageMaker AI est [Apache MXNet Recordio](https://mxnet.apache.org/api/architecture/note_data_loading). Toutefois, vous pouvez également utiliser des images brutes au format .jpg ou .png. L'algorithme prend en charge uniquement `application/x-image` pour l'inférence.

**Note**  
Pour maintenir une meilleure interopérabilité avec les frameworks d'apprentissage profond existants, ce format est différent des formats de données protobuf couramment utilisés par les autres algorithmes Amazon SageMaker AI.

Pour plus d'informations sur les formats de données, consultez [Exemples de blocs-notes de détection d'objet](#object-detection-sample-notebooks).

### Entraîner avec le format RecordIO
<a name="object-detection-recordio-training"></a>

Si vous utilisez le format RecordIO pour l'entraînement, spécifiez les canaux d'entraînement et de validation comme valeurs du paramètre `InputDataConfig` de la demande [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Spécifiez un fichier RecordIO (.rec) dans le canal d'entraînement et un fichier RecordIO dans le canal de validation. Définissez le type de contenu des deux canaux dans `application/x-recordio`. Voici un exemple de la façon de générer RecordIO disponible dans l'exemple de bloc-notes de détection d'objet. Vous pouvez également utiliser les outils [MXNetde GluonCV](https://gluon-cv.mxnet.io/build/examples_datasets/recordio.html) pour générer des fichiers Recordio pour des ensembles de données courants tels que les [classes d'objets visuels PASCAL](http://host.robots.ox.ac.uk/pascal/VOC/) et les [objets communs en](http://cocodataset.org/#home) contexte (COCO).

### Entraîner avec le format Image
<a name="object-detection-image-training"></a>

Si vous utilisez le format Image pour l'entraînement, spécifiez les canaux `train`, `validation`, `train_annotation` et `validation_annotation` en tant que valeurs du paramètre `InputDataConfig` de la demande [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Spécifiez les données d'image individuelle (fichiers .jpg ou .png) pour les canaux d'entraînement et de validation. Pour les données d'annotation, vous pouvez utiliser le format JSON. Spécifiez les fichiers .json correspondants dans les canaux `train_annotation` et `validation_annotation`. Définissez le type de contenu pour les quatre canaux au format `image/png` ou `image/jpeg` en fonction du type d'image. Vous pouvez également utiliser le type de contenu `application/x-image` lorsque votre ensemble de données contient à la fois des images .png et des images .jpg. Voici un exemple de fichier .json.

```
{
   "file": "your_image_directory/sample_image1.jpg",
   "image_size": [
      {
         "width": 500,
         "height": 400,
         "depth": 3
      }
   ],
   "annotations": [
      {
         "class_id": 0,
         "left": 111,
         "top": 134,
         "width": 61,
         "height": 128
      },
      {
         "class_id": 0,
         "left": 161,
         "top": 250,
         "width": 79,
         "height": 143
      },
      {
         "class_id": 1,
         "left": 101,
         "top": 185,
         "width": 42,
         "height": 130
      }
   ],
   "categories": [
      {
         "class_id": 0,
         "name": "dog"
      },
      {
         "class_id": 1,
         "name": "cat"
      }
   ]
}
```

Chaque image a besoin d'un fichier .json pour l'annotation et le fichier .json doit avoir le même nom que l'image correspondante. Le nom du fichier .json ci-dessus doit être « sample\$1image1.json ». Il existe quatre propriétés dans le fichier d'annotation .json. La propriété « fichier » spécifie le chemin d'accès relatif du fichier image. Par exemple, si vos images d'entraînement et les fichiers .json correspondants sont stockés dans s3 ://*your\$1bucket*/train/sample\$1image et s3 ://*your\$1bucket*/train\$1annotation, spécifiez le chemin de votre train et de vos canaux train\$1annotation sous la forme s3 :///train et s3 :///train\$1annotation, respectivement. *your\$1bucket* *your\$1bucket* 

Dans le fichier .json, le chemin d'accès relatif d'une image nommée sample\$1image1.jpg doit être sample\$1image/sample\$1image1.jpg. La propriété `"image_size"` spécifie les dimensions de l'image globale. L'algorithme de détection d'objets SageMaker AI ne prend actuellement en charge que les images à 3 canaux. La propriété `"annotations"` spécifie les catégories et les cadres de délimitation des objets au sein de l'image. Chaque objet est annotée par un index `"class_id"` et par quatre coordonnées du cadre de délimitation (`"left"`, `"top"`, `"width"`, `"height"`). Les valeurs `"left"` (coordonnée x) et `"top"` (coordonnée y) représentent le coin supérieur gauche du cadre de délimitation. Les valeurs `"width"` (coordonnée x) et `"height"` (coordonnée y) représentent les dimensions du cadre de délimitation. L'origine (0, 0) est le coin supérieur gauche de la totalité de l'image. Si vous avez plusieurs objets dans une seule image, toutes les annotations doivent être incluses dans un seul fichier .json. La propriété `"categories"` stocke le mappage entre l'index de la classe et le nom de la classe. Les indices de la classe doivent être numérotés successivement, la numérotation commençant à 0. La propriété `"categories"` est facultative pour le fichier .json d'annotation.

### Entraînement avec le format d'image Manifeste augmenté
<a name="object-detection-augmented-manifest-training"></a>

Le format manifeste augmenté permet de procéder à l'entraînement en mode Pipe (Tube) en utilisant des fichiers image sans avoir à créer de fichiers RecordIO. Vous devez spécifier les canaux d'entraînement et de validation en tant que valeurs du paramètre `InputDataConfig` de la demande [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Si vous utilisez ce format, un fichier manifeste S3 contenant la liste des images et leurs annotations associées doit être généré. Le fichier manifeste doit être au format [JSON Lines](http://jsonlines.org/), où chaque ligne représente un exemple. Les images sont spécifiées à l'aide de la balise `'source-ref'` qui pointe vers l'emplacement S3 de l'image. Les annotations sont fournies sous la valeur du paramètre `"AttributeNames"`, comme indiqué dans la demande [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html). Il peut également contenir des métadonnées supplémentaires sous la balise `metadata`, mais celles-ci sont ignorées par l'algorithme. Dans l'exemple suivant, les `"AttributeNames` figurent dans la liste `["source-ref", "bounding-box"]` :

```
{"source-ref": "s3://your_bucket/image1.jpg", "bounding-box":{"image_size":[{ "width": 500, "height": 400, "depth":3}], "annotations":[{"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 80, "height": 50}]}, "bounding-box-metadata":{"class-map":{"0": "dog", "5": "horse"}, "type": "groundtruth/object-detection"}}
{"source-ref": "s3://your_bucket/image2.jpg", "bounding-box":{"image_size":[{ "width": 400, "height": 300, "depth":3}], "annotations":[{"class_id": 1, "left": 100, "top": 120, "width": 43, "height": 78}]}, "bounding-box-metadata":{"class-map":{"1": "cat"}, "type": "groundtruth/object-detection"}}
```

L'ordre des `"AttributeNames"` dans les fichiers d'entrée est important lors de l'entraînement de l'algorithme de détection d'objet. Ce dernier accepte les données acheminées dans un ordre spécifique, avec `image` en premier, suivi de `annotations`. Dans cet exemple, les AttributeNames « » sont donc fournis en `"source-ref"` premier, suivis de`"bounding-box"`. Lorsque vous utilisez la détection d'objets avec manifeste augmenté, la valeur de paramètre `RecordWrapperType` doit être définie en tant que `"RecordIO"`.

Pour plus d'informations sur les fichiers manifeste augmenté, consultez [Fichiers manifestes augmentés dans les tâches d’entraînement](augmented-manifest.md).

### Entraînement incrémentiel
<a name="object-detection-incremental-training"></a>

Vous pouvez également amorcer l'entraînement d'un nouveau modèle avec les artefacts d'un modèle que vous avez déjà entraîné avec l' SageMaker IA. L'entraînement progressif permet de gagner du temps lorsque vous souhaitez entraîner un nouveau modèle avec des données identiques ou similaires. SageMaker Les modèles de détection d'objets basés sur l'IA ne peuvent être ensemencés qu'avec un autre modèle de détection d'objets intégré formé à l' SageMaker IA.

Pour utiliser un modèle préentraîné dans la demande [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html), spécifiez `ChannelName` comme « modèle » dans le paramètre `InputDataConfig`. Définissez le canal de modèle `ContentType` sur `application/x-sagemaker-model`. Les valeurs des hyperparamètres en entrée du nouveau modèle et du modèle préentraîné que vous chargez sur le canal modèle (model) doivent être identiques à celles des paramètres d'entrée `base_network` et `num_classes`. Ces paramètres définissent l'architecture réseau. Pour le fichier de modèle préentraîné, utilisez les artefacts du modèle compressé (au format .tar.gz) produits par AI. SageMaker Pour les données d'entrée, vous pouvez utiliser les formats RecordIO ou image.

Pour plus d'informations sur l'entraînement incrémentiel et pour obtenir des instructions sur son utilisation, consultez [Utiliser la formation incrémentielle dans Amazon AI SageMaker](incremental-training.md). 

## Recommandation sur les instances EC2 pour l'algorithme de détection d'objet
<a name="object-detection-instances"></a>

L'algorithme de détection d'objets prend en charge les familles d'instances de GPU P2, P3, G4dn et G5. Nous recommandons d'utiliser les instances GPU avec davantage de mémoire pour l'entraînement avec des tailles de lot importantes. Vous pouvez exécuter l'algorithme de détection d'objets sur des réglages multi-GPU et multi-machines pour l'entraînement distribué.

Vous pouvez utiliser les instances de CPU (telles que C5 et M5) et les instances de GPU (telles que P3 et G4dn) pour l'inférence.

## Exemples de blocs-notes de détection d'objet
<a name="object-detection-sample-notebooks"></a>

Pour un exemple de bloc-notes expliquant comment utiliser l'algorithme de détection d'objets par SageMaker IA pour entraîner et héberger un modèle sur 

Ensemble de données [Caltech Birds (CUB 200 2011)](http://www.vision.caltech.edu/datasets/cub_200_2011/) utilisant l'algorithme de détection multibox Single Shot, voir [Amazon SageMaker AI Object Detection for](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/object_detection_birds/object_detection_birds.html) Bird Species. Pour savoir comment créer et accéder à des instances de bloc-notes Jupyter que vous pouvez utiliser pour exécuter l'exemple dans SageMaker AI, consultez. [Instances de SageMaker blocs-notes Amazon](nbi.md) Une fois que vous avez créé une instance de bloc-notes et que vous l'avez ouverte, sélectionnez l'onglet **Exemples d'SageMaker IA** pour voir la liste de tous les exemples d' SageMaker IA. L'exemple de bloc-notes de détection d'objets à l'aide de l'algorithme de détection d'objets se trouve dans la section **Présentation des algorithmes Amazon** . Pour ouvrir un bloc-notes, cliquez sur son onglet **Use (Utiliser)** et sélectionnez **Create copy (Créer une copie)**.

Pour plus d'informations sur l'algorithme de détection d'objets Amazon SageMaker AI, consultez les articles de blog suivants :
+ [Entraînement et exécution du modèle de détection d'objets Amazon SageMaker AI AWS IoT Greengrass — Partie 1 de 3 : Préparation des données de formation](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-1-of-3/)
+ [Entraînement et exécution du modèle de détection d'objets Amazon SageMaker AI AWS IoT Greengrass — Partie 2 de 3 : Entraînement d'un modèle de détection d'objets personnalisé](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-2-of-3/)
+ [Formation au modèle de détection d'objets Amazon SageMaker AI et exécution de celui-ci AWS IoT Greengrass — Partie 3 de 3 : Déploiement à la périphérie](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-3-of-3/)