

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.

# Mejora de un modelo de Etiquetas personalizadas de Amazon Rekognition
<a name="improving-model"></a>

Cuando se complete el entrenamiento, se evalúa el rendimiento del modelo. Para ayudarle, Etiquetas personalizadas de Amazon Rekognition genera unas métricas resumidas y métricas de evaluación para cada etiqueta. Para obtener más información sobre las métricas disponibles, consulte [Métricas para evaluar su modelo](im-metrics-use.md). Para mejorar el modelo mediante métricas, consulte [Mejora de un modelo de Etiquetas personalizadas de Amazon Rekognition](tr-improve-model.md). 



Si está satisfecho con la precisión del modelo, puede empezar a utilizarlo. Para obtener más información, consulte [Ejecución de un modelo de Etiquetas personalizadas de Amazon Rekognition](running-model.md). 

**Topics**
+ [Métricas para evaluar su modelo](im-metrics-use.md)
+ [Acceso a las métricas de evaluación (consola)](im-access-training-results.md)
+ [Acceso a las métricas de evaluación de Etiquetas personalizadas de Amazon Rekognition (SDK)](im-metrics-api.md)
+ [Mejora de un modelo de Etiquetas personalizadas de Amazon Rekognition](tr-improve-model.md)

# Métricas para evaluar su modelo
<a name="im-metrics-use"></a>

Una vez entrenado el modelo, Etiquetas personalizadas de Amazon Rekognition devuelve las métricas de las pruebas del modelo, que puede utilizar para evaluar el rendimiento del modelo. En este tema se describen las métricas que tiene a su disposición y cómo saber si su modelo entrenado está funcionando bien. 

La consola de Etiquetas personalizadas de Amazon Rekognition genera las siguientes métricas a modo de resumen de los resultados del entrenamiento y en forma de métricas para cada etiqueta: 
+ [Precisión](#im-precision-metric)
+ [Exhaustividad](#im-recall-metric)
+ [F1](#im-f1-metric)

Cada métrica que se genere es una métrica de uso común para evaluar el rendimiento de un modelo de Machine Learning. Etiquetas personalizadas de Amazon Rekognition devuelve las métricas de los resultados de las pruebas de todo el conjunto de datos de prueba, junto con las métricas de cada etiqueta personalizada. También puede revisar el rendimiento del modelo personalizado entrenado por cada imagen del conjunto de datos de prueba. Para obtener más información, consulte [Acceso a las métricas de evaluación (consola)](im-access-training-results.md).

## Evaluación del rendimiento de los modelos
<a name="tr-evaluate-performance"></a>

Durante las pruebas, Etiquetas personalizadas de Amazon Rekognition predice si una imagen de prueba contiene una etiqueta personalizada. La puntuación de confianza es un valor que cuantifica la certeza de la predicción del modelo.

Si la puntuación de confianza de una etiqueta personalizada supera el valor del umbral, el resultado del modelo incluirá esta etiqueta. Las predicciones se pueden clasificar de las siguientes maneras: 
+ *Verdadero positivo*: el modelo de Etiquetas personalizadas de Amazon Rekognition predice correctamente la presencia de la etiqueta personalizada en la imagen de prueba. Es decir, la etiqueta pronosticada también es una etiqueta con “datos reales” en cuanto a esa imagen. Por ejemplo, Etiquetas personalizadas de Amazon Rekognition devuelve correctamente la etiqueta de un balón de fútbol cuando hay uno en una imagen. 
+ *Falso positivo*: el modelo de Etiquetas personalizadas de Amazon Rekognition predice incorrectamente la presencia de la etiqueta personalizada en la imagen de prueba. Es decir, la etiqueta pronosticada también no es una etiqueta con «datos reales» en cuanto a esa imagen. Por ejemplo, Etiquetas personalizadas de Amazon Rekognition devuelve la etiqueta de un balón de fútbol, aunque no haya ninguna etiqueta de balón de fútbol en los datos reales de esa imagen.
+ *Falso negativo*: el modelo de Etiquetas personalizadas de Amazon Rekognition no predice la presencia de una etiqueta personalizada en la imagen, pero los “datos reales” de esa imagen incluyen esta etiqueta. Por ejemplo, Etiquetas personalizadas de Amazon Rekognition no devuelve una etiqueta personalizada de “balón de fútbol” en una imagen que contiene un balón de fútbol. 
+ *Verdadero negativo*: el modelo de Etiquetas personalizadas de Amazon Rekognition predice correctamente que una etiqueta personalizada no está presente en la imagen de prueba. Por ejemplo, Etiquetas personalizadas de Amazon Rekognition no devuelve la etiqueta personalizada de un balón de fútbol en una imagen que no contiene un balón de fútbol. 

La consola da acceso a los valores verdaderos positivos, falsos positivos y falsos negativos de cada imagen del conjunto de datos de prueba. Para obtener más información, consulte [Acceso a las métricas de evaluación (consola)](im-access-training-results.md).

Estos resultados de predicción se utilizan para calcular las siguientes métricas en cada etiqueta y un valor acumulado de todo el conjunto de pruebas. Las mismas definiciones se aplican a las predicciones realizadas por el modelo en cuanto a los cuadros delimitadores, con la diferencia de que todas las métricas se calculan por cada cuadro delimitador (predicción o dato real) en cada imagen de prueba.

### Intersección sobre la unión (IoU) y detección de objetos
<a name="tr-evaluate-performance-object-detection"></a>

La intersección sobre la unión (IoU) calcula el porcentaje de superposición entre dos cuadros delimitadores de objetos en su área combinada. El rango va de 0 (superposición más baja) a 1 (superposición completa). Durante las pruebas, un cuadro delimitador predicho es correcto cuando el IoU del cuadro delimitador con el dato real y el cuadro delimitador previsto es de al menos 0,5.

## Umbral supuesto
<a name="im-assumed-threshold"></a>

Las Etiquetas personalizadas de Amazon Rekognition calculan automáticamente un valor de umbral supuesto (0-1) para cada una de sus etiquetas personalizadas. No puede definir el valor de umbral supuesto en una etiqueta personalizada. El *umbral supuesto* de cada etiqueta es el valor por encima del cual una predicción se cuenta como un verdadero positivo o un falso positivo. Se establece en función del conjunto de datos de prueba. El umbral supuesto se calcula en función de la mejor puntuación de F1 obtenida en el conjunto de datos de prueba durante el entrenamiento del modelo.

Puede obtener el valor del umbral supuesto de una etiqueta a partir de los resultados de entrenamiento del modelo. Para obtener más información, consulte [Acceso a las métricas de evaluación (consola)](im-access-training-results.md).

Los cambios en los valores de umbral supuesto se utilizan normalmente para mejorar la precisión y la capacidad de recuperación de un modelo. Para obtener más información, consulte [Mejora de un modelo de Etiquetas personalizadas de Amazon Rekognition](tr-improve-model.md). Como no se puede establecer el umbral supuesto de un modelo en una etiqueta, se pueden obtener los mismos resultados analizando una imagen con `DetectCustomLabels` e indicando el parámetro de entrada `MinConfidence`. Para obtener más información, consulte [Análisis de una imagen con un modelo entrenado](detecting-custom-labels.md). 

## Precisión
<a name="im-precision-metric"></a>

Las Etiquetas personalizadas de Amazon Rekognition generan proporciona métricas de precisión para cada etiqueta y una métrica de precisión media para todo el conjunto de datos de prueba. 

La *precisión* es la fracción de las predicciones correctas (verdaderos positivos) sobre todas las predicciones del modelo (verdaderos positivos y falsos positivos) en el umbral supuesto de una etiqueta individual. A medida que aumenta el umbral, es posible que el modelo haga menos predicciones. Sin embargo, en general, tendrá una proporción más alta de verdaderos positivos sobre falsos positivos en comparación con un umbral más bajo. Los valores posibles de precisión oscilan entre 0 y 1 y los valores más altos indican una precisión más alta.

Por ejemplo, cuando el modelo predice la presencia de un balón de fútbol en una imagen, ¿con qué frecuencia es correcta esa predicción? Supongamos que hay una imagen con 8 balones de fútbol y 5 rocas. Si el modelo predice 9 balones de fútbol (8 pronosticados correctamente y 1 falso positivo), la precisión de este ejemplo es de 0,89. Sin embargo, si el modelo ha predicho 13 balones de fútbol en la imagen con 8 predicciones correctas y 5 incorrectas, la precisión resultante es menor.

Para obtener más información, consulte [Precisión y exhaustividad](https://en.wikipedia.org/wiki/Precision_and_recall).

## Exhaustividad
<a name="im-recall-metric"></a>

Etiquetas personalizadas de Amazon Rekognition genera métricas de exhaustividad promedio para cada etiqueta y una métrica de exhaustividad media para todo el conjunto de datos de prueba. 

La *exhaustividad* es la fracción de las etiquetas del conjunto de pruebas que se ha predicho correctamente por encima del umbral supuesto. Con esto se mide la frecuencia con la que el modelo puede predecir correctamente una etiqueta personalizada cuando está realmente presente en las imágenes del conjunto de prueba. El rango de exhaustividad es de 0 a 1. Los valores más altos indican una exhaustividad más alta.

Por ejemplo, si una imagen contiene 8 balones de fútbol, ¿cuántos de ellos se han detectado correctamente? En este ejemplo en el que una imagen presenta 8 balones de fútbol y 5 rocas, si el modelo detecta 5 balones de fútbol, el valor de exhaustividad es de 0,62. Si después de volver a entrenarlo, el nuevo modelo detecta 9 balones de fútbol, incluidos los 8 que estaban presentes en la imagen, el valor de exhaustividad es de 1,0.

Para obtener más información, consulte [Precisión y exhaustividad](https://en.wikipedia.org/wiki/Precision_and_recall).

## F1
<a name="im-f1-metric"></a>

Etiquetas personalizadas de Amazon Rekognition utiliza la métrica de puntuación F1 para medir el rendimiento medio del modelo en cada etiqueta y el rendimiento medio del modelo en todo el conjunto de datos de prueba.

El *rendimiento del modelo* es una medida acumulada que tiene en cuenta tanto la precisión como la exhaustividad de todas las etiquetas. (por ejemplo, la puntuación F1 o la precisión media). La puntuación de rendimiento del modelo es un valor entre 0 y 1. Cuanto mayor sea el valor, mejor será el rendimiento del modelo tanto en términos de exhaustividad como de precisión. En concreto, el rendimiento del modelo para las tareas de clasificación suele medirse mediante la puntuación F1. Esa puntuación es la media armónica de las puntuaciones de precisión y exhaustividad en el umbral supuesto. Por ejemplo, en un modelo con una precisión de 0,9 y una exhaustividad de 1,0, la puntuación F1 es de 0,947.

Un valor alto en la puntuación F1 indica que el modelo está funcionando bien tanto en precisión como en exhaustividad. Si el modelo no funciona como debiera, por ejemplo, y presenta una baja precisión de 0,30 y una alta exhaustividad de 1,0, la puntuación F1 será de 0,46. Del mismo modo, si la precisión es alta (0,95) y la exhaustividad es baja (0,20), la puntuación F1 será de 0,33. En ambos casos, la puntuación F1 es baja y da a entender que hay problemas con el modelo. 

Para obtener más información, consulte [Puntuación F1](https://en.wikipedia.org/wiki/F1_score).

## Uso de las métricas
<a name="im-using-metrics"></a>

En un modelo determinado que haya entrenado y en función de su aplicación, puede establecer un equilibrio entre *precisión* y *exhaustividad* utilizando el parámetro de entrada `MinConfidence` en `DetectCustomLabels`. Con un valor `MinConfidence` más alto, por lo general se obtiene una mayor *precisión* (más predicciones correctas de balones de fútbol), pero una menor *exhaustividad* (se pierden más balones de fútbol reales). Con un valor `MinConfidence` más bajo, se consigue una mayor *exhaustividad* (se pronostican correctamente más balones de fútbol reales), pero se reduce la *precisión* (habrá más predicciones que sean erróneas). Para obtener más información, consulte [Análisis de una imagen con un modelo entrenado](detecting-custom-labels.md). 

Las métricas también le informan sobre lo que podría hacer para mejorar el rendimiento del modelo si fuera necesario. Para obtener más información, consulte [Mejora de un modelo de Etiquetas personalizadas de Amazon Rekognition](tr-improve-model.md). 

**nota**  
`DetectCustomLabels` devuelve las predicciones que van de 0 a 100, que se corresponden con el rango de métrica de 0 a 1.

# Acceso a las métricas de evaluación (consola)
<a name="im-access-training-results"></a>

Durante las pruebas, se evalúa el rendimiento del modelo en comparación con el conjunto de datos de prueba. Las etiquetas del conjunto de datos de prueba se consideran «datos reales», ya que representan lo que se ve en la imagen real. Durante la prueba, el modelo hace predicciones utilizando el conjunto de datos de prueba. Las etiquetas pronosticadas se comparan con las etiquetas con datos reales y los resultados aparecen en la página de evaluación de la consola.

En la consola de Etiquetas personalizadas de Amazon Rekognition se registran las métricas resumidas de todo el modelo y las métricas de cada etiqueta. Las métricas disponibles en la consola son la precisión, la exhaustividad, la puntuación de F1, la confianza y el umbral de confianza. Para obtener más información, consulte [Mejora de un modelo de Etiquetas personalizadas de Amazon Rekognition](improving-model.md).

Puede utilizar la consola para centrarse en cada una de las métricas. Por ejemplo, para analizar los problemas de precisión de una etiqueta, puede filtrar los resultados del entrenamiento por etiqueta y por resultados *falsos positivos*. Para obtener más información, consulte [Métricas para evaluar su modelo](im-metrics-use.md).

Tras el entrenamiento, el conjunto de datos de entrenamiento es de solo lectura. Si decide mejorar el modelo, puede copiar el conjunto de datos de entrenamiento en un nuevo conjunto de datos. Utilice la copia del conjunto de datos para entrenar una nueva versión del modelo. 

En este paso, use la consola para acceder a los resultados de entrenamiento en ella. 

**Cómo acceder a las métricas de evaluación (consola)**

1. Abra la consola Amazon Rekognition en. [https://console.aws.amazon.com/rekognition/](https://console.aws.amazon.com/rekognition/)

1. Elija **Usar etiquetas personalizadas**.

1. Elija **Comenzar**. 

1. En el panel de navegación izquierdo, elija **Proyectos**.

1. En la página **Proyectos**, elija el proyecto que contiene el modelo entrenado que desea evaluar.

1. En **Modelos**, elija el modelo que desee evaluar. 

1. Pulse el botón **Evaluación** para ver los resultados de la evaluación. Para obtener información sobre la evaluación de un modelo, consulte [Mejora de un modelo de Etiquetas personalizadas de Amazon Rekognition](improving-model.md).

1. Seleccione **Ver resultados de pruebas** para ver los resultados de cada una de las imágenes de prueba. Para obtener más información, consulte [Métricas para evaluar su modelo](im-metrics-use.md). La siguiente captura de pantalla del resumen de la evaluación del modelo muestra la puntuación F1, la precisión media y la recuperación global de 6 etiquetas con los resultados de las pruebas y las métricas de rendimiento. También se proporcionan detalles sobre el uso del modelo entrenado.   
![\[Resumen de la evaluación del modelo que muestra la puntuación F1, la precisión media y la recuperación global.\]](http://docs.aws.amazon.com/es_es/rekognition/latest/customlabels-dg/images/get-started-training-results.jpg)

1. Tras ver los resultados de las pruebas, elija el nombre del proyecto para volver a la página del modelo. La página de resultados de la pruebas muestra imágenes con etiquetas pronosticadas y puntuaciones de confianza para un modelo de machine learning entrenado en las categorías de imagen de terraza y patio delantero. Se muestran dos imágenes de ejemplo.   
![\[La página de resultados de las pruebas muestra imágenes con etiquetas pronosticadas y sus puntuaciones de confianza.\]](http://docs.aws.amazon.com/es_es/rekognition/latest/customlabels-dg/images/get-started-image-test-results.jpg)

1. Utilice las métricas para evaluar el rendimiento del modelo. Para obtener más información, consulte [Mejora de un modelo de Etiquetas personalizadas de Amazon Rekognition](tr-improve-model.md). 

# 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"
      },
    },
    ...
  ]
}
```

# Mejora de un modelo de Etiquetas personalizadas de Amazon Rekognition
<a name="tr-improve-model"></a>

El rendimiento de los modelos de machine learning depende en gran medida de factores como la complejidad y la variabilidad de las etiquetas personalizadas (los objetos y escenas específicos que le interesen), la calidad y la capacidad representativa del conjunto de datos de entrenamiento que usa, los esquemas de modelos y los métodos de machine learning para entrenar el modelo. 

Etiquetas personalizadas de Amazon Rekognition simplifica este proceso y no se requiere conocimientos de aprendizaje automático. Sin embargo, el proceso de creación de un buen modelo a menudo implica iteraciones sobre los datos y mejoras en el modelo para lograr el rendimiento deseado. A continuación, encontrará información sobre cómo mejorar su modelo.

## Datos
<a name="im-data"></a>

En general, se puede mejorar la calidad del modelo con más cantidades de datos y de mejor calidad. Utilice imágenes de entrenamiento que muestren claramente el objeto o la escena y que no estén repletas de elementos innecesarios. Para delimitar los cuadros alrededor de los objetos, use imágenes de entrenamiento que reflejen el objeto de forma totalmente visible y no se vea obstaculizado por otros objetos. 

Asegúrese de que los conjuntos de datos de entrenamiento y de prueba coincidan con el tipo de imágenes con las que vaya a realizar la inferencia. En el caso de los objetos, como los logotipos, en los que solo hay algunos ejemplos de entrenamiento, debes incluir cuadros delimitadores alrededor del logotipo en las imágenes de prueba. Estas imágenes representan o ilustran los escenarios en los que desea localizar el objeto.

Para agregar más imágenes a un conjunto de datos de entrenamiento o de prueba, consulte [Agregar más imágenes a un conjunto de datos](md-add-images.md).

## Reducción de los falsos positivos (mayor precisión)
<a name="im-reduce-false-positives"></a>
+ En primer lugar, compruebe si el hecho de aumentar el umbral supuesto permite que las predicciones sean correctas y, al mismo tiempo, reducir los falsos positivos. En algún momento, esto merma los avances debido a la compensación entre precisión y exhaustividad en un modelo determinado. No se puede establecer el umbral supuesto de una etiqueta, pero se puede lograr el mismo resultado si se indica un valor alto en el parámetro de entrada `MinConfidence` en `DetectCustomLabels`. Para obtener más información, consulte [Análisis de una imagen con un modelo entrenado](detecting-custom-labels.md).
+ Es posible que observe que una o varias de las etiquetas personalizadas que le interesan (A) se confunden constantemente con la misma clase de objetos (pero no con una etiqueta que le interese) (B). Para ayudarte, agregue B como etiqueta de clase de objeto al conjunto de datos de entrenamiento (junto con las imágenes en las que haya recibido el falso positivo). De hecho, así estará ayudando al modelo a saber predecir B y no A gracias a las nuevas imágenes de entrenamiento. Para agregar imágenes a un conjunto de datos de entrenamiento, consulte [Agregar más imágenes a un conjunto de datos](md-add-images.md). 
+ Es posible que dos de las etiquetas personalizadas (A y B) hagan confundir al modelo; se pronostica que la imagen de prueba con la etiqueta A tendrá la etiqueta B y viceversa. En ese caso, compruebe primero si hay imágenes mal etiquetadas en los conjuntos de entrenamiento y de prueba. Use la galería de conjuntos de datos para administrar las etiquetas asignadas a un conjunto de datos. Para obtener más información, consulte [Administración de etiquetas](md-labels.md). Además, si agrega más imágenes de entrenamiento relacionadas con este tipo de confusión hará que un modelo reentrenado discrimine mejor entre A y B. Para agregar imágenes a un conjunto de datos de entrenamiento, consulte [Agregar más imágenes a un conjunto de datos](md-add-images.md). 

## Reducción de los falsos negativos (mejor exhaustividad)
<a name="im-reduce-false-negatives"></a>
+ Indique un valor inferior para el umbral supuesto. No se puede establecer el umbral supuesto de una etiqueta, pero se puede lograr el mismo resultado si se indica un valor bajo en el parámetro de entrada `MinConfidence` en `DetectCustomLabels`. Para obtener más información, consulte [Análisis de una imagen con un modelo entrenado](detecting-custom-labels.md).
+ Use mejores ejemplos para que haya más variedad tanto del objeto como de las imágenes en las que aparecen.
+ Divida la etiqueta en dos clases que sean más fáciles de aprender. Por ejemplo, en lugar de galletas buenas y malas, tal vez prefiera galletas buenas, galletas quemadas y galletas en pedacitos para que el modelo pueda aprender mejor cada concepto único. 