

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Acceso a las métricas de evaluación de Etiquetas personalizadas de Amazon Rekognition (SDK)
<a name="im-metrics-api"></a>

La [DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions)operación proporciona acceso a métricas más allá de las que se proporcionan en la consola. 

Al igual que en la consola, `DescribeProjectVersions` da acceso a las siguientes métricas a modo de información resumida de los resultados de las pruebas y como resultados de las pruebas de cada etiqueta:
+ [Precisión](im-metrics-use.md#im-precision-metric)
+ [Exhaustividad](im-metrics-use.md#im-recall-metric)
+ [F1](im-metrics-use.md#im-f1-metric)

Se devuelve el umbral medio de todas las etiquetas y el umbral de las etiquetas por separado.

`DescribeProjectVersions` también da acceso a las siguientes métricas para la clasificación y la detección de imágenes (ubicación de objetos en la imagen).
+ *Matriz de confusión* para la clasificación de imágenes. Para obtener más información, consulte [Visualización de la matriz de confusión en un modelo](im-confusion-matrix.md).
+ *Precisión promedio (MAP)* para la detección de imágenes.
+ *Exhaustividad promedio (mAR)* para la detección de imágenes.

`DescribeProjectVersions` también da acceso a valores verdaderos positivos, falsos positivos, falsos negativos y verdaderos negativos. Para obtener más información, consulte [Métricas para evaluar su modelo](im-metrics-use.md).

La métrica acumulada de puntuación F1 la devuelve directamente `DescribeProjectVersions`. Se puede acceder a otras métricas a partir de una [Acceder al archivo de resumen del modelo](im-summary-file-api.md) y de los archivos de [Interpretación de la instantánea del manifiesto de evaluación](im-evaluation-manifest-snapshot-api.md) almacenados en un bucket de Amazon S3. Para obtener más información, consulte [Acceso al archivo de resumen y al resumen del manifiesto de evaluación (SDK)](im-access-summary-evaluation-manifest.md).

**Topics**
+ [Acceder al archivo de resumen del modelo](im-summary-file-api.md)
+ [Interpretación de la instantánea del manifiesto de evaluación](im-evaluation-manifest-snapshot-api.md)
+ [Acceso al archivo de resumen y al resumen del manifiesto de evaluación (SDK)](im-access-summary-evaluation-manifest.md)
+ [Visualización de la matriz de confusión en un modelo](im-confusion-matrix.md)
+ [Reference: archivo de resumen de los resultados del entrenamiento](im-summary-file.md)

# Acceder al archivo de resumen del modelo
<a name="im-summary-file-api"></a>

El archivo de resumen recoge los resultados de la evaluación, la información sobre el modelo en su conjunto y las métricas de cada etiqueta. Las métricas son precisión, exhaustividad y puntuación F1. También se incluye el valor umbral del modelo. Se puede acceder a la ubicación del archivo de resumen en el objeto `EvaluationResult` devuelto por `DescribeProjectVersions`. Para obtener más información, consulte [Reference: archivo de resumen de los resultados del entrenamiento](im-summary-file.md).

Consulte el siguiente ejemplo de un archivo de resumen.

```
{
  "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
    }
  ]
}
```

# Interpretación de la instantánea del manifiesto de evaluación
<a name="im-evaluation-manifest-snapshot-api"></a>

El resumen de manifiesto de evaluación incluye información detallada sobre los resultados de la prueba. Este resumen registra el índice de confianza de cada predicción. También incluye la clasificación de la predicción en comparación con la clasificación real de la imagen (verdadero positivo, verdadero negativo, falso positivo o falso negativo). 

Los archivos vienen resumidos, ya que solo se incluyen imágenes que podrían usarse para las pruebas y el entrenamiento. Las imágenes que no se pueden verificar, como las que tienen un formato incorrecto, no vienen incluidas en el manifiesto. Se puede acceder a la ubicación del resumen de las pruebas en el objeto `TestingDataResult` devuelto por `DescribeProjectVersions`. Se puede acceder a la ubicación del resumen del entrenamiento en el objeto `TrainingDataResult` devuelto por `DescribeProjectVersions`. 

La instantánea está en el formato de salida del manifiesto de SageMaker AI Ground Truth y se añaden campos para proporcionar información adicional, como el resultado de la clasificación binaria de una detección. En el siguiente fragmento se ven los campos adicionales.

```
"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*: la versión del formato del campo `rekognition-custom-labels-evaluation-details` incluida en el resumen del manifiesto.
+ *is-true-positive...* — La clasificación binaria de la predicción en función de cómo se compara la puntuación de confianza con el umbral mínimo de la etiqueta.
+ *is-present-in-ground-verdad*: Verdadero si la predicción realizada por el modelo está presente en la información de verdad básica utilizada en el entrenamiento; de lo contrario, es falsa. Este valor no se basa en si la puntuación de confianza supera el umbral mínimo calculado por el modelo. 
+ *ground-truth-labeling-jobs*— Una lista de los campos de verdad básica de la línea del manifiesto que se utilizan para el entrenamiento.

Para obtener información sobre el formato de manifiesto de SageMaker AI Ground Truth, consulta [Resultados](https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html). 

El siguiente es un ejemplo de un resumen del manifiesto de prueba donde figuran las métricas de la clasificación de imágenes y la detección de objetos.

```
// 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"
  }
}
```

# Acceso al archivo de resumen y al resumen del manifiesto de evaluación (SDK)
<a name="im-access-summary-evaluation-manifest"></a>

Para obtener los resultados de la capacitación, llama [DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions). Para ver el código de ejemplo, consulte [Descripción de un modelo (SDK)](md-describing-model-sdk.md).

La ubicación de las métricas se devuelve en la respuesta `ProjectVersionDescription` de `DescribeProjectVersions`.
+ `EvaluationResult`: la ubicación del archivo de resumen.
+ `TestingDataResult`: la ubicación del resumen del manifiesto de evaluación utilizada para las pruebas. 

La puntuación F1 y la ubicación del archivo de resumen se devuelven en `EvaluationResult`. Por ejemplo:

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

El resumen del manifiesto de evaluación se almacena en la ubicación definida en el parámetro de entrada ` --output-config` indicado en [Entrenamiento de un modelo (SDK)](training-model.md#tm-sdk). 

**nota**  
Se devuelve en `BillableTrainingTimeInSeconds` la cantidad de tiempo, en segundos, que se le factura por el entrenamiento. 

Para obtener información sobre las métricas que devuelve Etiquetas personalizadas de Amazon Rekognition, consulte [Acceso a las métricas de evaluación de Etiquetas personalizadas de Amazon Rekognition (SDK)](im-metrics-api.md).

# Visualización de la matriz de confusión en un modelo
<a name="im-confusion-matrix"></a>

Una matriz de confusión le permite ver las etiquetas que el modelo confunde con otras etiquetas del modelo. Al utilizar una matriz de confusión, puede ajustar más el modelo y mejorarlo.

Durante la evaluación del modelo, Etiquetas personalizadas de Amazon Rekognition crea una matriz de confusión al utilizar las imágenes de prueba para identificar etiquetas mal identificadas (confusas). Etiquetas personalizadas de Amazon Rekognition solo crea una matriz de confusión para los modelos de clasificación. Se puede acceder a la matriz de clasificación en el archivo de resumen que Etiquetas personalizadas de Amazon Rekognition crea durante el entrenamiento del modelo. No es posible ver la matriz de confusión en la consola de Etiquetas personalizadas de Amazon Rekognition.

**Topics**
+ [Uso de una matriz de confusión](#im-using-confusion-matrix)
+ [Cómo obtener la matriz de confusión en un modelo](#im-getting-confusion-matrix)

## Uso de una matriz de confusión
<a name="im-using-confusion-matrix"></a>

La siguiente tabla es la matriz de confusión del proyecto de ejemplo con [clasificación de imágenes de habitaciones](getting-started.md#gs-image-classification-example). Los encabezados de las columnas son las etiquetas (etiquetas con datos reales) asignadas a las imágenes de prueba. Los encabezados de fila son las etiquetas que el modelo predice para las imágenes de prueba. Cada celda es el porcentaje de predicciones de una etiqueta (fila) que debe ser la etiqueta de datos reales (columna). Por ejemplo, el 67 % de las predicciones para los baños se etiquetaron correctamente como baños. El 33 % de los baños se etiquetaron incorrectamente como cocinas. Un modelo de alto rendimiento tiene valores de celda altos cuando la etiqueta pronosticada coincide con la etiqueta de datos reales. Puede verlas como una línea diagonal desde la primera hasta la última etiqueta pronosticada y las etiquetas de datos reales. Si el valor de una celda es 0, no se ha realizado ninguna predicción en la etiqueta de predicción de la celda, que debe ser la etiqueta de datos reales de la celda.

**nota**  
Como los modelos no son deterministas, los valores de las celdas de la matriz de confusión que se obtienen al entrenar el proyecto Habitaciones pueden variar de los de la siguiente tabla. 

La matriz de confusión identifica las áreas en las que centrarse. Por ejemplo, la matriz de confusión refleja que el 50 % de las veces el modelo confundió armarios con dormitorios. En esta situación, se deben agregar más imágenes de armarios y dormitorios al conjunto de datos de entrenamiento. Compruebe también que las imágenes de armarios y dormitorios existentes estén bien etiquetadas. Esto debería ayudar al modelo a distinguir mejor entre las dos etiquetas. Para agregar más imágenes a un conjunto de datos, consulte [Agregar más imágenes a un conjunto de datos](md-add-images.md).

Aunque la matriz de confusión es útil, es importante tener en cuenta otras métricas. Por ejemplo, el 100 % de las predicciones detectaron correctamente la etiqueta plano\$1planta, lo que indica un rendimiento excelente. Sin embargo, el conjunto de datos de prueba solo tiene 2 imágenes con la etiqueta plano\$1planta. También hay 11 imágenes con la etiqueta sala\$1estar. Este desajuste también se encuentra en el conjunto de datos de entrenamiento (13 imágenes con sala\$1estar y 2 imágenes de armarios). Para lograr una evaluación más precisa, equilibre los conjuntos de datos de entrenamiento y de prueba añadiendo más imágenes de etiquetas infrarrepresentadas (planos de planta en este ejemplo). Para obtener el número de imágenes de prueba por etiqueta, consulte [Acceso a las métricas de evaluación (consola)](im-access-training-results.md). 

La siguiente tabla es un ejemplo de matriz de confusión en la que se compara la etiqueta pronosticada (en el eje y) con la etiqueta de datos reales:


| Etiqueta pronosticada | terraza | baño | dormitorio | armario | camino\$1entrada | plano\$1planta | patio\$1delantero | cocina | sala\$1estar | patio | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| terraza | 75% | 0% | 0% | 0% | 0% | 0% | 33% | 0% | 0% | 0% | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| baño | 0% | 67% | 0% | 0% | 0% | 0% | 0% | 0% | 0% | 0% | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| dormitorio | 0% | 0% | 82% | 50% | 0% | 0% | 0% | 0% | 9% | 0% | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| armario | 0% | 0% | 0% | 50% | 0% | 0% | 0% | 0% | 0% | 0% | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| camino\$1entrada | 0% | 0% | 0% | 0% | 33% | 0% | 0% | 0% | 0% | 0% | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| plano\$1planta | 0% | 0% | 0% | 0% | 0% | 100% | 0% | 0% | 0% | 0% | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| patio\$1delantero | 25% | 0% | 0% | 0% | 0% | 0% | 67% | 0% | 0% | 0% | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| cocina | 0% | 33% | 0% | 0% | 0% | 0% | 0% | 88% | 0% | 0% | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| sala\$1estar | 0% | 0% | 18% | 0% | 67% | 0% | 0% | 12% | 91% | 33% | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| patio | 0% | 0% | 0% | 0% | 0% | 0% | 0% | 0% | 0% | 67% | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |

## Cómo obtener la matriz de confusión en un modelo
<a name="im-getting-confusion-matrix"></a>

El código siguiente utiliza las [DescribeProjectVersions](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjectVersions)operaciones [DescribeProjects](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_DescribeProjects)y para obtener el [archivo de resumen](im-summary-file-api.md) de un modelo. Tras esto, este utiliza el archivo de resumen para mostrar la matriz de confusión del modelo. 

**Cómo ver la matriz de confusión de un modelo (SDK)**

1. Si aún no lo ha hecho, instale y configure las AWS CLI y las AWS SDKs. Para obtener más información, consulte [Paso 4: Configure y AWS CLI AWS SDKs](su-awscli-sdk.md).

1. Utilice el siguiente código para ver la matriz de confusión de un modelo. Indique los siguientes argumentos de línea de comandos:
   + `project_name`: el nombre del proyecto que desea usar. Puede obtener el nombre del proyecto en la página de proyectos en la consola de Etiquetas personalizadas de Amazon Rekognition.
   + `version_name`: la versión del modelo que desea utilizar. Puede obtener el nombre de la versión en la página de detalles del proyecto en la consola de Etiquetas personalizadas de 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()
   ```

# Reference: archivo de resumen de los resultados del entrenamiento
<a name="im-summary-file"></a>

El resumen de los resultados del entrenamiento incluye métricas que puede utilizar para evaluar el modelo. El archivo de resumen también sirve para ver las métricas en la página de resultados del entrenamiento en la consola. El archivo de resumen se almacena en un bucket de Amazon S3 tras el entrenamiento. Para obtener el archivo de resumen, llame a `DescribeProjectVersion`. Para ver el código de ejemplo, consulte [Acceso al archivo de resumen y al resumen del manifiesto de evaluación (SDK)](im-access-summary-evaluation-manifest.md). 

## Archivo de resumen
<a name="im-summary-reference"></a>

El siguiente JSON es el formato del archivo de resumen.



**EvaluationDetails (sección 3)**  
Información general sobre la tarea de entrenamiento. Esto incluye el ARN del proyecto al que pertenece el modelo (`ProjectVersionArn)`), la fecha y hora en que terminó el entrenamiento, la versión del modelo que se ha evaluado (`EvaluationEndTimestamp`) y una lista de etiquetas detectadas durante el entrenamiento (`Labels`). También se registra el número de imágenes utilizadas para el entrenamiento (`NumberOfTrainingImages`) y la evaluación (`NumberOfTestingImages`). 

**AggregatedEvaluationResults (sección 1)**  
Se puede utilizar `AggregatedEvaluationResults` para evaluar el rendimiento general del modelo entrenado cuando se utiliza con el conjunto de datos de prueba. Se incluyen métricas acumuladas para las métricas `Precision`, `Recall` y `F1Score`. Para la detección de objetos (la ubicación de objetos en una imagen), se devuelven las métricas `AverageRecall` (mAR) y `AveragePrecision` (MaP). Para la clasificación (el tipo de objeto en una imagen), se devuelve una métrica de matriz de confusión. 

**LabelEvaluationResults (sección 2)**  
Se puede utilizar `labelEvaluationResults` para evaluar el rendimiento de etiquetas concretas. Las etiquetas se ordenan según la puntuación F1 de cada etiqueta. Las métricas incluidas son `Precision`, `Recall`, `F1Score` y `Threshold` (utilizadas para la clasificación). 

El nombre de archivo tiene el formato siguiente: `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"
      },
    },
    ...
  ]
}
```