Try   HackMD

Conjuntos de métricas más usadas en los desafíos de detección de objetos

tags: Definitions and References

Existen varias competencias que definen su propio conjunto de métricas de evaluación de modelos de detección de objetos como estándar, y se han hecho tan populares que ahora se utizan comúnmente para la evaluación de este tipo de modelos.

El desafío Pascal VOC

La métrica para evaluar la calidad general de los detectores de objetos será la media de la precisión promedio (mAP), calculada de acuerdo con el protocolo del PASCAL VOC Challenge 2010-2012.

La tarea de detección por clase será evaluada por la curva de Precisión x Recall. La principal medida cuantitativa utilizada será la precisión promedio (AP) calculada en un umbral de IoU único de 0.5.

El cálculo de la medida de precisión promedio (AP) se modificó en 2010 para mejorar la precisión y la capacidad de medir las diferencias entre los métodos con bajo AP.
Tenga en cuenta que antes de 2010, el AP se calcula muestreando la curva decreciente monotónicamente en un conjunto fijo de valores de recall uniformemente espaciados 0,0.1,0.2, , 1. Por el contrario, VOC 2010-2012 muestrea la curva en todos los valores únicos de recall.

Para utilizar esta métrica se debe agregar a la lista del parámetro 'metrics_set' el valor 'pascal_voc_detection_metrics'

PASCAL VOC Ponderado

De acuerdo con la métrica PASCAL VOC 2010, el rendimiento en cada una de las dos clases contribuiría igualmente al valor final del mAP, mientras que para la métrica Weighted PASCAL VOC, el valor final de mAP estará influenciado por la frecuencia de cada clase.

Para utilizar esta métrica se debe agregar a la lista del parámetro 'metrics_set' el valor 'weighted_pascal_voc_detection_metrics'

Formato de salida

{
    'one_class': {
        'label 1': {
            'precisions': float numpy array, list of precisions.
            'recalls': float numpy array, list of recalls.
            'average_precision': float, average precision for each class.
        },
        'label 2': { ... },
        ...
    },
    'all_classes': {
        'mAP': float, mean average precision of all classes. Computes the mean average precision as the mean of the per-class average precisions.
        'total_positives': int, total number of ground truth positives.
        'total_TP': int, total number of True Positive detections.
        'total_FP': int, total number of False Negative detections.
    }
}

El desafío de detección de objetos COCO

Evalúa la detección de objetos usando 12 métricas:

  • mAP (referido indistintamente en la competencia por AP) es la métrica principal para la evaluación en la competencia, donde AP se promedia sobre los 10 umbrales de IoU y las 80 categorías del conjuntos de datos COCO. Esto se denota por AP@[.5:.95] o AP@[.50:.05:.95] incrementándose con .05. Por lo tanto, un AP más alto según el protocolo de evaluación COCO indica que los objetos detectados tienen una mejor localización. Dado que se penalizan las peores localizaciones y se optimiza para las mejores localizaciones, esta métrica es óptima para aplicaciones que requieren una alta precisión en la localización, como la conducción autónoma o las imágenes médicas.
  • Además, COCO evalúa individualmente el AP en umbrales de 0.5 y 0.75 IoU, esto se denota por AP@.50 o APIOU=0.50 y AP@0.75 o APIOU=0.75 respectivamente.
  • Dado que el conjunto de datos COCO contiene más objetos pequeños que grandes, el rendimiento se evalúa con el AP en distintos tamaños de objeto donde:
    • APsmall para objetos pequeños con área menor a 322.
    • APmedium para objetos medianos con área 322 < área < 962.
    • Finalmente, APlarge para objetos grandes con área mayor que 962.
      El área del objeto se define por el número de píxeles en la máscara del objeto proporcionada para la tarea de segmentación de objetos en la competencia COCO.
  • De manera similar, COCO evalúa los algoritmos en mAR (AR se refiere a mAR) en todas las escalas con ARsmall, ARmedium y ARlarge. Si se quiere optimizar un modelo para tener un alto recall y una buena precisión en la localización, se debe considerar usar el AR como la métrica de evaluación.
  • Además, COCO utiliza una métrica adicional que basa la evaluación del AR en el número de detecciones por imagen, específicamente ARmax=1 dada 1 detección por imagen, ARmax=10 para 10 detecciones por imagen y ARmax=100 para 100 detecciones por imagen.

Para utilizar esta métrica se debe agregar a la lista del parámetro 'metrics_set' el valor 'coco_detection_metrics'

Output format

'coco_detection_metrics': {
    'one_class': {
        'label 1': {
            'Precision/mAP ByCategory/class_n': float, mean average precision over classes averaged over IOU thresholds ranging from .5 to .95 with .05 increments.
            'Precision/mAP@.50IOU ByCategory/class_n': float, mean average precision at 50% IOU.
            'Precision/mAP@.75IOU ByCategory/class_n': float, mean average precision at 75% IOU.
            'Precision/mAP (small) ByCategory/class_n': float, mean average precision for small objects (area < 32^2 pixels).
            'Precision/mAP (medium) ByCategory/class_n': float, mean average precision for medium sized objects (32^2 pixels < area < 96^2 pixels).
            'Precision/mAP (large) ByCategory/class_n': float, mean average precision for large objects (96^2 pixels < area < 10000^2 pixels).
            'Recall/AR@1 ByCategory/class_n': float, average recall with 1 detection.
            'Recall/AR@10 ByCategory/class_n': float, average recall with 10 detections.
            'Recall/AR@100 ByCategory/class_n': float, average recall with 100 detections.
            'Recall/AR@100 (small) ByCategory/class_n': float, average recall for small objects with 100.
            'Recall/AR@100 (medium) ByCategory/class_n': float, average recall for medium objects with 100.
            'Recall/AR@100 (large) ByCategory/class_n': float, average recall for large objects with 100 detections.
        },
        'label 2': { ... },
        ...
    },
    'all_classes': {
        'Precision/mAP': float, mean average precision over classes averaged over IOU thresholds ranging from .5 to .95 with .05 increments.
        'Precision/mAP@.50IOU': float, mean average precision at 50% IOU.
        'Precision/mAP@.75IOU': float, mean average precision at 75% IOU.
        'Precision/mAP (small)': float, mean average precision for small objects (area < 32^2 pixels).
        'Precision/mAP (medium)': float, mean average precision for medium sized objects (32^2 pixels < area < 96^2 pixels).
        'Precision/mAP (large)': float, mean average precision for large objects (96^2 pixels < area < 10000^2 pixels).
        'Recall/AR@1': float, average recall with 1 detection.
        'Recall/AR@10': float, average recall with 10 detections.
        'Recall/AR@100': float, average recall with 100 detections.
        'Recall/AR@100 (small)': float, average recall for small objects with 100.
        'Recall/AR@100 (medium)': float, average recall for medium objects with 100.
        'Recall/AR@100 (large)': float, average recall for large objects with 100 detections.
    }
}

El desafío de Google Open Images V2

Para evaluar el resultado de los modelos de detección de objetos, el desafío de Google Open Images V2 utiliza la Precisión Prmedio (AP) para cada clase y la media de la precisión promedio (mAP) sobre todas las clases en el conjunto de datos con un umbral de IoU de 0.5.
La dierencia con las métricas de PASCAL VOC 2010 es que se agrega un campo de agrupamiento de los recuadros verdaderos, que son tratados de forma distinta con el objetivo de decidir si las detecciones son verdaderos positivos, falsos positivos o son ignoradas.

Para utilizar esta métrica se debe agregar a la lista del parámetro 'metrics_set' el valor 'oid_V2_detection_metrics'

Formato de salida

{
    'one_class': {
        'label 1': {
            'precisions': float numpy array, list of precisions.
            'recalls': float numpy array, list of recalls.
            'average_precision': float, average precision for each class.
        },
        'label 2': { ... },
        ...
    },
    'all_classes': {
        'mAP': float, mean average precision of all classes. Computes the mean average precision as the mean of the per-class average precisions.
        'total_positives': int, total number of ground truth positives.
        'total_TP': int, total number of True Positive detections.
        'total_FP': int, total number of False Negative detections.
    }
}