Definitions and References
Otra forma de comparar el rendimiento de los detectores de objetos es calcular el área bajo la curva (AUC) de la curva de Precisión x Recall. Como las curvas AP a menudo son curvas en zigzag que suben y bajan, comparar diferentes curvas (detectores diferentes) en el mismo diagrama generalmente no es una tarea fácil, porque las curvas tienden a cruzarse entre sí con mucha frecuencia. Es por eso que la precisión promedio (AP), una métrica numérica, también puede ayudarnos a comparar diferentes detectores. En la práctica, AP es la precisión promediada en todos los valores de recall entre 0 y 1.
A partir de 2010, el método de calcular la AP mediante el desafío PASCAL VOC ha cambiado. Actualmente, la interpolación realizada por el desafío PASCAL VOC utiliza todos los puntos de datos, en lugar de interpolar solo 11 puntos igualmente espaciados como se indica en su artículo.
La interpolación de 11 puntos intenta resumir la forma de la curva Precisión x Recall promediando la precisión en un conjunto de once niveles de recall igualmente espaciados [0, 0.1, 0.2, … , 1]:
con
Donde es la precisión medida al nivel de recall
En lugar de utilizar la precisión observada en cada punto, el AP se obtiene interpolando la precisión solo en los 11 niveles tomando la máxima precisión cuyo valor de recall es mayor que
En lugar de interpolar solo en los 11 puntos igualmente espaciados, puede interpolar a través de todos los puntos de tal manera que:
con
Donde es la precisión medida al nivel de recall
En este caso, en lugar de utilizar la precisión observada en solo unos pocos puntos, el AP ahora se obtiene al interpolar la precisión en cada nivel, tomando la **máxima precisión cuyo valor de recall es mayor que . De esta manera se calcula un estimado del área bajo la curva.
Primero se crea una lista TP_FP
donde se van acumulando los Verdaderos positivos y Falsos positivos de todas las imágenes, de la siguiente manera:
image
:
cat
:
groundtruth_boxes
), los recuadros de las detecciones (detected_boxes
) y los scores de las detecciones (detected_scores
) de la categoría cat
.detected_boxes
para descartar las detecciones con recuadros que tengan un iou >= nms_iou_threshold
con algún bounding box de otra detección con score mayor.iou
para cada par de los detected_boxes
resultantes y los groundtruth_boxes
.detected_box
se busca el groundtruth_box
con el que tenga el iou mayor y que cumpla que iou >= iou_threshold
y que no haya sido marcado antes por otro detected_box
. Si se cumple esto, la detección es acumulada como TP (se inserta un True
) en TP_FP[cat]
y el groundtruth_box
es descartado para ser comparado con otras detecciones. Si no se cumple esto se acumula un FP (se inserta un 0
) en TP_FP[cat]
. Al final se suma el total de groundtruth_boxes
en num_total_gt[cat]
, que servirá posteriormente para calcular el recall.Después se calcula la precisión y recall sobre la lista de TP_FP
de cada categoría:
cat
:
TP_FP[cat]
de forma descendente a partir del score de las detecciones.true_positives
=> [False, True, False, False, False, False, False, False, False, False]
false_positives
=> [True, False, True, True, True, True, True, True, True, True]
cum_true_positives
=> [0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
cum_false_positives
=> [ 1., 1., 2., 3., 4., 5., 6., 7., 8., 9.]
cat
con las siguientes fórmulas:precision = cum_true_positives / (cum_true_positives + cum_false_positives)
recall = cum_true_positives / num_gt
precision
=> [0., 0.5, 0.33, 0.25, 0.2, 0.167, 0.14, 0.125, 0.11, 0.1]
recall
=> [0., 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]
Para aclarar las cosas, proporcionamos un ejemplo comparando ambas interpolaciones. Considere las detecciones a continuación:
Hay 7 imágenes con 15 objetos verdaderos representados por los recuadros delimitadores verdes y 24 detecciones representados por los recuadros delimitadores rojos. Cada objeto detectado tiene un nivel de confianza y se identifica con una letra (A,B,…,Y).
La siguiente tabla muestra los recuadros con sus correspondientes scores. La última columna identifica las detecciones como TP o FP. En este ejemplo, se considera un TP si IOU 30%, de lo contrario es un FP. Al observar las imágenes de arriba podemos decir aproximadamente si las detecciones son TP o FP.
En algunas imágenes hay más de una detección que se superpone a recuadro verdadero (Imágenes 2, 3, 4, 5, 6 y 7). Para esos casos, la detección con el mayor IOU se considera TP y los otros se consideran FP. Esta regla se aplica mediante la métrica PASCAL VOC 2012: "por ejemplo, 5 detecciones (TP) de un solo objeto se cuentan como 1 detección correcta y 4 detecciones falsas".
La curva de Precisión x Recall se traza calculando la precisión y los valores de recall de las detecciones acumuladas de TP o FP. Para esto, primero debemos ordenar las detecciones por sus scores, luego calculamos la precisión y recall para cada detección acumulada como se muestra en la tabla a continuación:
Al trazar los valores de precisión y recall tenemos lo siguiente Curva de Precisión x Recall:
Como se mencionó anteriormente, hay dos formas diferentes de medir la precisión promedio interpolada: interpolación de 11 puntos e interpolación de todos los puntos. A continuación hacemos una comparación entre ellos:
La idea de la precisión promedio interpolada de 11-puntos es promediar las precisiones en un conjunto de 11 niveles de recall (0, 0.1, …, 1). Los valores de precisión interpolados se obtienen tomando la precisión máxima cuyo valor de recall es mayor que su valor de recall actual de la siguiente manera:
Aplicando la interpolación de 11-puntos tenemos:
Al interpolar todos los puntos, la precisión promedio (AP) se puede interpretar como un AUC aproximado de la curva de precisión x recall. La intención es reducir el impacto de las oscilaciones de la curva. Al aplicar las ecuaciones presentadas anteriormente, podemos obtener las áreas como se demostrará aquí. También podríamos tener visualmente los puntos de precisión interpolados al observar los recalls comenzando desde el más alto (0.4666) a 0 (mirando el gráfico de derecha a izquierda) y, a medida que disminuimos el recall, recopilamos los valores de precisión que son los más altos como se muestra en la imagen a continuación:
Mirando la gráfica de arriba, podemos dividir el AUC en 4 áreas (A1, A2, A3 y A4):
Calculando el área total, tenemos el AP:
Con
Los resultados entre los dos métodos de interpolación diferentes son un poco diferentes: 24.56% y 26.84% por la interpolación de cada punto y la interpolación de 11 puntos respectivamente.
Nuestra implementación predeterminada es la misma que VOC PASCAL: interpolación en todos los puntos.
Ahora que entendemos la Precisión promedio (AP), la media de la Precisión Promedio (mAP) para un conjunto de datos que contiene N categorías, es el promedia de la AP sobre las N clases.
El desafío PASCAL VOC usa la mAP como métrica con un umbral de IoU de 0.5, mientras que MS COCO promedia mAP sobre diferentes umbrales de IoU (0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95) con un paso de 0.05, esta métrica se denota en los artículos como mAP@[.5,.95]. Por lo tanto, COCO no solo promedia la AP en todas las clases sino también en distintos umbrales de IoU.
Tenga en cuenta que mAP y AP a menudo se usan indistintamente, este es el caso de la competencia COCO. Según su sitio web oficial:
Al optimizar AP o AR (que se analizará a continuación) sobre múltiples valores de umbral de IoU, el modelo penaliza las localizaciones deficientes y optimiza para una buena localización. Simplemente porque la precisión de la localización se evalúa sobre la base de la IoU entre los recuadros reales y el recuadro predicho, esta es la estrategia óptima que se utilizará para aplicaciones de detección que requieren un nivel alto de localización, como la conducción autónoma o las imágenes médicas.
En lugar de calcular el recall en un IoU particular, calculamos el recall promedio (AR) en los umbrales de IoU de 0.5 a 1 y, por lo tanto, resumimos la distribución del recall en un rango de umbrales de IoU.
Solo promediamos el recall sobre los umbrales de IoU de [0.5, 1] porque el rendimiento de la detección se correlaciona con el recall en los umbrales superiores a 0.5, donde en 0.5 los recuadros localizan muy poco los objetos y en un IoU de 1 los objetos están localizados completamente.
Por lo tanto, si se desea optimizar un modelo para un alto recall y una localización precisa de los objetos, puede considerar el recall promedio como una métrica de evaluación.
El recall promedio describe el área duplicada bajo la curva Recall x IoU. La curva Recall x IoU muestra los resultados de recall para cada umbral de IoU donde IoU ∈ [0.5,1.0], con los umbrales de IoU en el eje-x y los niveles de recall en el eje-y.
Esto se describe de forma matemática de la siguiente manera:
De manera similar a mAP, mAR es el promedio de AR sobre el número de clases del conjunto de datos.