

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.

# Accès aux métriques d’évaluation d’Étiquettes personnalisées Amazon Rekognition (kit SDK)
<a name="im-metrics-api"></a>

L'[DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions)opération permet d'accéder à des métriques autres que celles fournies dans la console. 

De même que la console, `DescribeProjectVersions` permet d’accéder aux métriques suivantes sous la forme d’informations récapitulatives pour les résultats des tests et de résultats des tests pour chaque étiquette :
+ [Précision](im-metrics-use.md#im-precision-metric)
+ [Rappel](im-metrics-use.md#im-recall-metric)
+ [F1](im-metrics-use.md#im-f1-metric)

Vous obtenez le seuil moyen de toutes les étiquettes et le seuil des étiquettes individuelles.

`DescribeProjectVersions` donne également accès aux métriques suivantes pour la classification et la détection d’images (emplacement de l’objet sur l’image).
+ *Matrice de confusion* pour la classification des images. Pour plus d’informations, consultez [Affichage de la matrice de confusion d’un modèle](im-confusion-matrix.md).
+ *Précision moyenne médiane (mAP, Mean Average Precision)* pour la détection d’images.
+ *Rappel moyen médian (mAR, Mean Average Recall)* pour la détection d’images.

`DescribeProjectVersions` donne également accès aux valeurs vrai positif, faux positif, faux négatif et vrai négatif. Pour plus d’informations, consultez [Métriques d’évaluation du modèle](im-metrics-use.md).

La métrique Score F1 cumulé est renvoyée directement par `DescribeProjectVersions`. Les autres métriques sont accessibles à partir des fichiers [Accès au fichier récapitulatif du modèle](im-summary-file-api.md) et [Interprétation de l'instantané du manifeste d'évaluation](im-evaluation-manifest-snapshot-api.md) stockés dans un compartiment Amazon S3. Pour de plus amples informations, veuillez consulter [Accès au fichier récapitulatif et à l’instantané du manifeste d’évaluation (kit SDK)](im-access-summary-evaluation-manifest.md).

**Topics**
+ [Accès au fichier récapitulatif du modèle](im-summary-file-api.md)
+ [Interprétation de l'instantané du manifeste d'évaluation](im-evaluation-manifest-snapshot-api.md)
+ [Accès au fichier récapitulatif et à l’instantané du manifeste d’évaluation (kit SDK)](im-access-summary-evaluation-manifest.md)
+ [Affichage de la matrice de confusion d’un modèle](im-confusion-matrix.md)
+ [Référence : fichier récapitulatif des résultats de l’entraînement](im-summary-file.md)

# Accès au fichier récapitulatif du modèle
<a name="im-summary-file-api"></a>

Le fichier récapitulatif contient les informations sur les résultats de l’évaluation du modèle dans son ensemble, ainsi que les métriques de chaque étiquette. Les métriques sont Précision, Rappel et Score F1. La valeur de seuil du modèle est également fournie. L’emplacement du fichier récapitulatif est accessible depuis l’objet `EvaluationResult` renvoyé par `DescribeProjectVersions`. Pour plus d’informations, consultez [Référence : fichier récapitulatif des résultats de l’entraînement](im-summary-file.md).

Voici un exemple de fichier récapitulatif.

```
{
  "Version": 1,
  "AggregatedEvaluationResults": {
    "ConfusionMatrix": [
      {
        "GroundTruthLabel": "CAP",
        "PredictedLabel": "CAP",
        "Value": 0.9948717948717949
      },
      {
        "GroundTruthLabel": "CAP",
        "PredictedLabel": "WATCH",
        "Value": 0.008547008547008548
      },
      {
        "GroundTruthLabel": "WATCH",
        "PredictedLabel": "CAP",
        "Value": 0.1794871794871795
      },
      {
        "GroundTruthLabel": "WATCH",
        "PredictedLabel": "WATCH",
        "Value": 0.7008547008547008
      }
    ],
    "F1Score": 0.9726959470546408,
    "Precision": 0.9719115848331294,
    "Recall": 0.9735042735042735
  },
  "EvaluationDetails": {
    "EvaluationEndTimestamp": "2019-11-21T07:30:23.910943",
    "Labels": [
      "CAP",
      "WATCH"
    ],
    "NumberOfTestingImages": 624,
    "NumberOfTrainingImages": 5216,
    "ProjectVersionArn": "arn:aws:rekognition:us-east-1:nnnnnnnnn:project/my-project/version/v0/1574317227432"
  },
  "LabelEvaluationResults": [
    {
      "Label": "CAP",
      "Metrics": {
        "F1Score": 0.9794344473007711,
        "Precision": 0.9819587628865979,
        "Recall": 0.9769230769230769,
        "Threshold": 0.9879502058029175
      },
      "NumberOfTestingImages": 390
    },
    {
      "Label": "WATCH",
      "Metrics": {
        "F1Score": 0.9659574468085106,
        "Precision": 0.961864406779661,
        "Recall": 0.9700854700854701,
        "Threshold": 0.014450683258473873
      },
      "NumberOfTestingImages": 234
    }
  ]
}
```

# Interprétation de l'instantané du manifeste d'évaluation
<a name="im-evaluation-manifest-snapshot-api"></a>

L’instantané du manifeste d’évaluation contient les informations détaillées sur les résultats des tests. L’instantané inclut l’indice de confiance pour chaque prédiction. Il inclut aussi la classification de la prédiction par rapport à la classification réelle de l’image (vrai positif, vrai négatif, faux positif ou faux négatif). 

Les fichiers représentent un instantané, car ne sont incluses que les images utilisées pour les tests et l’entraînement. Les images qui ne peuvent pas être vérifiées, telles que les images au mauvais format, ne sont pas incluses dans le manifeste. L’emplacement de l’instantané des tests est accessible depuis l’objet `TestingDataResult` renvoyé par `DescribeProjectVersions`. L’emplacement de l’instantané de l’entraînement est accessible depuis l’objet `TrainingDataResult` renvoyé par `DescribeProjectVersions`. 

L'instantané est au format de sortie du manifeste SageMaker AI Ground Truth avec des champs ajoutés pour fournir des informations supplémentaires, telles que le résultat de la classification binaire d'une détection. L’extrait suivant montre les champs additionnels.

```
"rekognition-custom-labels-evaluation-details": {
    "version": 1,
    "is-true-positive": true,
    "is-true-negative": false,
    "is-false-positive": false,
    "is-false-negative": false,
    "is-present-in-ground-truth": true
    "ground-truth-labelling-jobs": ["rekognition-custom-labels-training-job"]
}
```
+ *Version* : version du format du champ `rekognition-custom-labels-evaluation-details` au sein de l’instantané du manifeste.
+ *is-true-positive...* — La classification binaire de la prédiction basée sur la comparaison entre le score de confiance et le seuil minimum de l'étiquette.
+ *is-present-in-ground-truth — Vrai* si la prédiction faite par le modèle est présente dans les informations de vérité du sol utilisées pour l'entraînement, sinon fausse. La valeur ne dépend pas du fait que le score de confiance dépasse ou non le seuil minimal calculé par le modèle. 
+ *ground-truth-labeling-jobs*— Une liste des champs de vérité de base figurant dans la ligne du manifeste qui sont utilisés pour la formation.

Pour plus d'informations sur le format du manifeste SageMaker AI Ground Truth, consultez [Output](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html). 

Voici un exemple d’instantané de manifeste de tests affichant les métriques de classification d’images et de détection d’objets.

```
// For image classification
{
  "source-ref": "s3://amzn-s3-demo-bucket/dataset/beckham.jpeg",
  "rekognition-custom-labels-training-0": 1,
  "rekognition-custom-labels-training-0-metadata": {
    "confidence": 1.0,
    "job-name": "rekognition-custom-labels-training-job",
    "class-name": "Football",
    "human-annotated": "yes",
    "creation-date": "2019-09-06T00:07:25.488243",
    "type": "groundtruth/image-classification"
  },
  "rekognition-custom-labels-evaluation-0": 1,
  "rekognition-custom-labels-evaluation-0-metadata": {
    "confidence": 0.95,
    "job-name": "rekognition-custom-labels-evaluation-job",
    "class-name": "Football",
    "human-annotated": "no",
    "creation-date": "2019-09-06T00:07:25.488243",
    "type": "groundtruth/image-classification",
    "rekognition-custom-labels-evaluation-details": {
      "version": 1,
      "ground-truth-labelling-jobs": ["rekognition-custom-labels-training-job"],
      "is-true-positive": true,
      "is-true-negative": false,
      "is-false-positive": false,
      "is-false-negative": false,
      "is-present-in-ground-truth": true
    }
  }
}


// For object detection
{
  "source-ref": "s3://amzn-s3-demo-bucket/dataset/beckham.jpeg",
  "rekognition-custom-labels-training-0": {
    "annotations": [
      {
        "class_id": 0,
        "width": 39,
        "top": 409,
        "height": 63,
        "left": 712
      },
      ...
    ],
    "image_size": [
      {
        "width": 1024,
        "depth": 3,
        "height": 768
      }
    ]
  },
  "rekognition-custom-labels-training-0-metadata": {
    "job-name": "rekognition-custom-labels-training-job",
    "class-map": {
      "0": "Cap",
      ...
    },
    "human-annotated": "yes",
    "objects": [
      {
        "confidence": 1.0
      },
      ...
    ],
    "creation-date": "2019-10-21T22:02:18.432644",
    "type": "groundtruth/object-detection"
  },
  "rekognition-custom-labels-evaluation": {
    "annotations": [
      {
        "class_id": 0,
        "width": 39,
        "top": 409,
        "height": 63,
        "left": 712
      },
      ...
    ],
    "image_size": [
      {
        "width": 1024,
        "depth": 3,
        "height": 768
      }
    ]
  },
  "rekognition-custom-labels-evaluation-metadata": {
    "confidence": 0.95,
    "job-name": "rekognition-custom-labels-evaluation-job",
    "class-map": {
      "0": "Cap",
      ...
    },
    "human-annotated": "no",
    "objects": [
      {
        "confidence": 0.95,
        "rekognition-custom-labels-evaluation-details": {
          "version": 1,
          "ground-truth-labelling-jobs": ["rekognition-custom-labels-training-job"],
          "is-true-positive": true,
          "is-true-negative": false,
          "is-false-positive": false,
          "is-false-negative": false,
          "is-present-in-ground-truth": true
        }
      },
      ...
    ],
    "creation-date": "2019-10-21T22:02:18.432644",
    "type": "groundtruth/object-detection"
  }
}
```

# Accès au fichier récapitulatif et à l’instantané du manifeste d’évaluation (kit SDK)
<a name="im-access-summary-evaluation-manifest"></a>

Pour obtenir les résultats de l'entraînement, tu appelles [DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions). Pour obtenir un exemple de code, consultez [Description d’un modèle (kit SDK)](md-describing-model-sdk.md).

L’emplacement des métriques est renvoyé dans la réponse `ProjectVersionDescription` de `DescribeProjectVersions`.
+ `EvaluationResult` : emplacement du fichier récapitulatif.
+ `TestingDataResult` : emplacement de l’instantané du manifeste d’évaluation utilisé pour les tests. 

Le score F1 et l’emplacement du fichier récapitulatif sont renvoyés dans `EvaluationResult`. Par exemple :

```
"EvaluationResult": {
                "F1Score": 1.0,
                "Summary": {
                    "S3Object": {
                        "Bucket": "echo-dot-scans",
                        "Name": "test-output/EvaluationResultSummary-my-echo-dots-project-v2.json"
                    }
                }
            }
```

L’instantané du manifeste d’évaluation est stocké à l’emplacement spécifié dans le paramètre d’entrée ` --output-config` que vous avez spécifié dans [Entraînement d’un modèle (kit SDK)](training-model.md#tm-sdk). 

**Note**  
La quantité de temps d’entraînement, en secondes, pour laquelle vous êtes facturé est renvoyée dans `BillableTrainingTimeInSeconds`. 

Pour plus d’informations sur les métriques renvoyées par Étiquettes personnalisées Amazon Rekognition, consultez [Accès aux métriques d’évaluation d’Étiquettes personnalisées Amazon Rekognition (kit SDK)](im-metrics-api.md).

# Affichage de la matrice de confusion d’un modèle
<a name="im-confusion-matrix"></a>

Une matrice de confusion permet de voir les étiquettes que le modèle confond avec d’autres étiquettes du même modèle. En utilisant une matrice de confusion, vous pouvez concentrer vos améliorations sur le modèle.

Lors de l’évaluation du modèle, Étiquettes personnalisées Amazon Rekognition crée une matrice de confusion à l’aide des images de test afin de détecter les étiquettes mal identifiées (confuses). Étiquettes personnalisées Amazon Rekognition crée uniquement une matrice de confusion pour les modèles de classification. La matrice de classification est accessible depuis le fichier récapitulatif créé par Étiquettes personnalisées Amazon Rekognition lors de l’entraînement du modèle. Il n’est pas possible d’afficher la matrice de confusion dans la console Étiquettes personnalisées Amazon Rekognition.

**Topics**
+ [Utilisation d’une matrice de confusion](#im-using-confusion-matrix)
+ [Obtention de la matrice de confusion d’un modèle](#im-getting-confusion-matrix)

## Utilisation d’une matrice de confusion
<a name="im-using-confusion-matrix"></a>

Le tableau suivant constitue la matrice de confusion de l’exemple de projet de [classification d’images de pièces](getting-started.md#gs-image-classification-example) (projet Rooms). Les en-têtes de colonne représentent les étiquettes (étiquettes de vérité sur le terrain) attribuées aux images de test. Les en-têtes de ligne représentent les étiquettes que le modèle prédit pour les images de test. Chaque cellule représente le pourcentage de prédictions pour une étiquette (ligne) d’être l’étiquette de vérité sur le terrain (colonne). Par exemple, 67 % des prédictions sur les salles de bains ont été correctement étiquetées comme salles de bains. En revanche, 33 % des salles de bains ont été incorrectement étiquetées comme cuisines. Un modèle très performant possède des valeurs de cellules élevées lorsque l’étiquette prédite correspond à l’étiquette de vérité sur le terrain. Vous pouvez le voir grâce à la diagonale allant de la première à la dernière des étiquettes prédites et des étiquettes de vérité sur le terrain. Si la valeur d’une cellule est égale à 0, aucune prédiction n’a été faite pour l’étiquette prédite qui doit être l’étiquette de vérité sur le terrain de la cellule.

**Note**  
Comme les modèles ne sont pas déterministes, les valeurs des cellules de la matrice de confusion obtenues lors de l’entraînement du projet Rooms peuvent différer de celles indiquées dans le tableau ci-dessous. 

La matrice de confusion identifie les zones sur lesquelles il est nécessaire de se concentrer. Par exemple, la matrice de confusion montre que 50 % du temps, le modèle confond les placards et les chambres à coucher. Dans ce cas, vous devez ajouter de nouvelles images de placards et de chambres à coucher au jeu de données d’entraînement. Vérifiez également que les images existantes de placard et de chambre à coucher sont correctement étiquetées. Le modèle devrait ainsi mieux faire la différence entre les deux étiquettes. Pour ajouter de nouvelles images à un jeu de données, consultez [Ajout d’autres images à un jeu de données](md-add-images.md).

Bien que la matrice de confusion soit utile, il importe de prendre en compte d’autres métriques. Par exemple, 100 % des prédictions ont correctement identifié l’étiquette floor\$1plan, ce qui constitue une excellente performance. Cependant, le jeu de données des tests ne contient que 2 images avec l’étiquette floor\$1plan. Il contient également 11 images avec l’étiquette living\$1space. Ce déséquilibre est également présent dans le jeu de données d’entraînement (13 images living\$1space et 2 images closet). Pour obtenir une évaluation plus précise, équilibrez les jeux de données d’entraînement et de test en ajoutant davantage d’images d’étiquettes sous-représentées (plans de niveau dans cet exemple). Pour obtenir le nombre d’images de test par étiquette, consultez [Accès aux métriques d’évaluation (console)](im-access-training-results.md). 

Le tableau suivant est un exemple de matrice de confusion, comparant l'étiquette prévue (sur l'axe Y) à l'étiquette de vérité fondamentale :


| Étiquette prévue | backyard (jardin arrière) | bathroom (salle de bains) | bedroom (chambre à coucher) | closet (placard) | entry\$1way (entrée) | floor\$1plan (plan d’étage) | front\$1yard (jardin avant) | kitchen (cuisine) | living\$1space (pièce de vie) | patio | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| backyard (jardin arrière) | 75% | 0 % | 0 % | 0 % | 0 % | 0 % | 33 % | 0 % | 0 % | 0 % | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| bathroom (salle de bains) | 0 % | 67 % | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| bedroom (chambre à coucher) | 0 % | 0 % | 82 % | 50% | 0 % | 0 % | 0 % | 0 % | 9 % | 0 % | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| closet (placard) | 0 % | 0 % | 0 % | 50% | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| entry\$1way (entrée) | 0 % | 0 % | 0 % | 0 % | 33 % | 0 % | 0 % | 0 % | 0 % | 0 % | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| floor\$1plan (plan d’étage) | 0 % | 0 % | 0 % | 0 % | 0 % | 100 % | 0 % | 0 % | 0 % | 0 % | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| front\$1yard (jardin avant) | 25% | 0 % | 0 % | 0 % | 0 % | 0 % | 67 % | 0 % | 0 % | 0 % | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| kitchen (cuisine) | 0 % | 33 % | 0 % | 0 % | 0 % | 0 % | 0 % | 88 % | 0 % | 0 % | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| living\$1space (pièce de vie) | 0 % | 0 % | 18 % | 0 % | 67 % | 0 % | 0 % | 12 % | 91 % | 33 % | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| patio | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 0 % | 67 % | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |

## Obtention de la matrice de confusion d’un modèle
<a name="im-getting-confusion-matrix"></a>

Le code suivant utilise les [DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions)opérations [DescribeProjects](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjects)et pour obtenir le [fichier récapitulatif](im-summary-file-api.md) d'un modèle. Il utilise ensuite le fichier récapitulatif pour afficher la matrice de confusion du modèle. 

**Pour afficher la matrice de confusion d’un modèle (kit SDK)**

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. Utilisez le code suivant pour afficher la matrice de confusion d’un modèle. Fournissez les arguments de ligne de commande suivants :
   + `project_name` : nom du projet que vous souhaitez utiliser. Vous pouvez obtenir le nom du projet sur la page des projets de la console Étiquettes personnalisées Amazon Rekognition.
   + `version_name` : version du modèle que vous souhaitez utiliser. Vous pouvez obtenir le nom de la version sur la page des informations détaillées du projet de la console Étiquettes personnalisées Amazon Rekognition.

   ```
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: Apache-2.0
   
   """
   Purpose
   
   Shows how to display the confusion matrix for an Amazon Rekognition Custom labels image
   classification model.
   """
   
   
   import json
   import argparse
   import logging
   import boto3
   import pandas as pd
   from botocore.exceptions import ClientError
   
   
   logger = logging.getLogger(__name__)
   
   
   def get_model_summary_location(rek_client, project_name, version_name):
       """
       Get the summary file location for a model.
   
       :param rek_client: A Boto3 Rekognition client.
       :param project_arn: The Amazon Resource Name (ARN) of the project that contains the model.
       :param model_arn: The Amazon Resource Name (ARN) of the model.
       :return: The location of the model summary file.
       """
   
       try:
           logger.info(
               "Getting summary file for model %s in project %s.", version_name, project_name)
   
           summary_location = ""
   
           # Get the project ARN from the project name.
           response = rek_client.describe_projects(ProjectNames=[project_name])
   
           assert len(response['ProjectDescriptions']) > 0, \
               f"Project {project_name} not found."
   
           project_arn = response['ProjectDescriptions'][0]['ProjectArn']
   
           # Get the summary file location for the model.
           describe_response = rek_client.describe_project_versions(ProjectArn=project_arn,
                                                                    VersionNames=[version_name])
           assert len(describe_response['ProjectVersionDescriptions']) > 0, \
               f"Model {version_name} not found."
   
           model=describe_response['ProjectVersionDescriptions'][0]
   
           evaluation_results=model['EvaluationResult']
   
           summary_location=(f"s3://{evaluation_results['Summary']['S3Object']['Bucket']}"
                               f"/{evaluation_results['Summary']['S3Object']['Name']}")
   
           return summary_location
   
       except ClientError as err:
           logger.exception(
               "Couldn't get summary file location: %s", err.response['Error']['Message'])
           raise
   
   
   def show_confusion_matrix(summary):
       """
       Shows the confusion matrix for an Amazon Rekognition Custom Labels
       image classification model.
       :param summary: The summary file JSON object.
       """
       pd.options.display.float_format = '{:.0%}'.format
   
       # Load the model summary JSON into a DataFrame.
   
       summary_df = pd.DataFrame(
           summary['AggregatedEvaluationResults']['ConfusionMatrix'])
   
       # Get the confusion matrix.
       confusion_matrix = summary_df.pivot_table(index='PredictedLabel',
                                                 columns='GroundTruthLabel',
                                                 fill_value=0.0).astype(float)
   
       # Display the confusion matrix.
       print(confusion_matrix)
   
   
   def get_summary(s3_resource, summary):
       """
       Gets the summary file.
       : return: The summary file in bytes.
       """
       try:
           summary_bucket, summary_key = summary.replace(
               "s3://", "").split("/", 1)
   
           bucket = s3_resource.Bucket(summary_bucket)
           obj = bucket.Object(summary_key)
           body = obj.get()['Body'].read()
           logger.info(
               "Got summary file '%s' from bucket '%s'.",
               obj.key, obj.bucket_name)
       except ClientError:
           logger.exception(
               "Couldn't get summary file '%s' from bucket '%s'.",
               obj.key, obj.bucket_name)
           raise
       else:
           return body
   
   
   def add_arguments(parser):
       """
       Adds command line arguments to the parser.
       : param parser: The command line parser.
       """
   
       parser.add_argument(
           "project_name", help="The ARN of the project in which the model resides."
       )
       parser.add_argument(
           "version_name", help="The version of the model that you want to describe."
       )
   
   
   def main():
       """
       Entry point for script.
       """
   
       logging.basicConfig(level=logging.INFO,
                           format="%(levelname)s: %(message)s")
   
       try:
   
           # Get the command line arguments.
           parser = argparse.ArgumentParser(usage=argparse.SUPPRESS)
           add_arguments(parser)
           args = parser.parse_args()
   
           print(
               f"Showing confusion matrix for: {args.version_name} for project {args.project_name}.")
   
           session = boto3.Session(profile_name='custom-labels-access')
           rekognition_client = session.client("rekognition")
           s3_resource = session.resource('s3')
   
           # Get the summary file for the model.
           summary_location = get_model_summary_location(rekognition_client, args.project_name,
                                                         args.version_name
                                                         )
           summary = json.loads(get_summary(s3_resource, summary_location))
   
           # Check that the confusion matrix is available.
           assert 'ConfusionMatrix' in summary['AggregatedEvaluationResults'], \
               "Confusion matrix not found in summary. Is the model a classification model?"
   
           # Show the confusion matrix.
           show_confusion_matrix(summary)
           print("Done")
   
       except ClientError as err:
           logger.exception("Problem showing confusion matrix: %s", err)
           print(f"Problem describing model: {err}")
   
       except AssertionError as err:
           logger.exception(
               "Error: %s.\n", err)
           print(
               f"Error: {err}\n")
   
   
   if __name__ == "__main__":
       main()
   ```

# Référence : fichier récapitulatif des résultats de l’entraînement
<a name="im-summary-file"></a>

Le résumé des résultats de l’entraînement contient les métriques que vous pouvez utiliser pour évaluer votre modèle. Le fichier récapitulatif est également utilisé pour afficher les métriques dans la page de la console relative aux résultats de l’entraînement. Le fichier récapitulatif est stocké dans un compartiment Amazon S3 après l’entraînement. Pour obtenir le fichier récapitulatif, appelez `DescribeProjectVersion`. Pour obtenir un exemple de code, consultez [Accès au fichier récapitulatif et à l’instantané du manifeste d’évaluation (kit SDK)](im-access-summary-evaluation-manifest.md). 

## Fichier récapitulatif
<a name="im-summary-reference"></a>

Le format JSON suivant est le format du fichier récapitulatif.



**EvaluationDetails (article 3)**  
Informations générales sur la tâche d’entraînement. Ces informations incluent l’ARN du projet auquel appartient le modèle (`ProjectVersionArn)`, la date et l’heure de fin de l’entraînement, la version du modèle évalué (`EvaluationEndTimestamp`) et la liste des étiquettes détectées pendant l’entraînement (`Labels`). Figurent aussi le nombre d’images utilisées pour l’entraînement (`NumberOfTrainingImages`) et l’évaluation (`NumberOfTestingImages`). 

**AggregatedEvaluationResults (article 1)**  
Vous pouvez utiliser `AggregatedEvaluationResults` pour évaluer les performances globales du modèle entraîné lorsqu’il est utilisé avec le jeu de données des tests. Des métriques de cumul sont incluses pour les métriques `Precision`, `Recall` et `F1Score`. Pour la détection d’objets (emplacement de l’objet sur une image), les métriques `AverageRecall` (mAR) et `AveragePrecision` (mAP) sont renvoyées. Pour la classification (type d’objet dans une image), une métrique de matrice de confusion est renvoyée. 

**LabelEvaluationResults (article 2)**  
Vous pouvez utiliser `labelEvaluationResults` pour évaluer les performances de chaque étiquette. Les étiquettes sont triées en fonction du score F1 de chaque étiquette. Les métriques incluses sont `Precision`, `Recall`, `F1Score` et `Threshold` (utilisées pour la classification). 

Le format du fichier est le suivant : `EvaluationSummary-ProjectName-VersionName.json`.

```
{
  "Version": "integer",
  // section-3
  "EvaluationDetails": {
    "ProjectVersionArn": "string",
    "EvaluationEndTimestamp": "string",
    "Labels": "[string]",
    "NumberOfTrainingImages": "int",
    "NumberOfTestingImages": "int"
  },
  // section-1
  "AggregatedEvaluationResults": {
    "Metrics": {
      "Precision": "float",
      "Recall": "float",
      "F1Score": "float",
      // The following 2 fields are only applicable to object detection
      "AveragePrecision": "float",
      "AverageRecall": "float",
      // The following field is only applicable to classification
      "ConfusionMatrix":[
        {
          "GroundTruthLabel": "string",
          "PredictedLabel": "string",
          "Value": "float"
        },
        ...
      ],
    }
  },
  // section-2
  "LabelEvaluationResults": [
    {
      "Label": "string",
      "NumberOfTestingImages", "int",
      "Metrics": {
        "Threshold": "float",
        "Precision": "float",
        "Recall": "float",
        "F1Score": "float"
      },
    },
    ...
  ]
}
```