¿Cómo calcular mAP para la tarea de detección para el desafío PASCAL VOC?


22

¿Cómo calcular el mAP (precisión media promedio) para la tarea de detección de las tablas de clasificación de Pascal VOC? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4

Dicho esto, en la página 11 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf

Precisión media (AP). Para el desafío VOC2007, se usó la precisión promedio interpolada (Salton y Mcgill 1986) para evaluar tanto la clasificación como la detección. Para una tarea y clase dada, la curva de precisión / recuperación se calcula a partir de la salida clasificada de un método. La recuperación se define como la proporción de todos los ejemplos positivos clasificados por encima de un rango dado. La precisión es la proporción de todos los ejemplos por encima de ese rango que son de la clase positiva. El AP resume la forma de la curva de precisión / recuperación, y se define como la precisión media en un conjunto de once niveles de recuperación igualmente espaciados [0,0.1, ..., 1]: AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)

La precisión en cada nivel de recuperación r se interpola tomando la precisión máxima medida para un método para el cual la recuperación correspondiente excede r:, pinterp(r) = max p(r˜)donde p (r˜) es la precisión medida en la recuperación ˜r

Acerca de mAP: http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision


Entonces, ¿significa que:

  1. Nosotros calculamos la precisión y recordar :

    • A) Para muchos diferentesIoU > {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1} calculamos valores positivos / negativos verdaderos / falsos

    Donde True positive = Number_of_detection with IoU > {0, 0.1,..., 1}, como se dice aquí: /datascience//a/16813/37736 y luego calculamos:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)


  • B) O para muchos umbrales diferentes de algoritmos de detección calculamos:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)

    Donde True positive = Number_of_detection with IoU > 0.5como se dice aquí: /programming//a/43168882/1558037



  1. Luego construimos la curva Precision-Recall , como se muestra aquí: ingrese la descripción de la imagen aquí

  1. Luego calculamos AP (precisión promedio) como promedio de 11 valores dePrecision en los puntos donde Recall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, es decirAP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)

(En general, para cada punto, por ejemplo 0.3, obtenemos MAX de Precisión para Recall <= 0.3, en lugar del valor de Precision en este punto Recall = 0.3)


  1. Y cuando calculamos AP solo para 1 clase de objeto algo en todas las imágenes, entonces obtenemos AP (precisión promedio) para esta clase, por ejemplo, solo para air.

Entonces AP es una integral (área bajo la curva): /stats//a/157019/111998

Pero cuando calculamos AP para todas las clases de objetos en todas las imágenes, entonces obtenemos mAP (precisión promedio promedio) para todas las imágenes del conjunto de datos, por ejemplo, 88.6para R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4


Preguntas:

  1. ¿Es correcto, y si no lo es, entonces cómo calcular mAP para el desafío de VOC de Pascal?
  2. ¿Y cuál de las 3 fórmulas (A, B o C) es correcta para calcular la precisión y la recuperación, en el párrafo 1?

Respuesta corta:

  • mAP = AVG (AP para cada clase de objeto)
  • AP = AVG (Precisión para cada uno de los 11 Retiros {precisión = 0, 0.1, ..., 1})
  • PR-curve = Precision and Recall (para cada Umbral que se encuentra en los cuadros de límite de Predicciones)
  • Precisión = TP / (TP + FP)
  • Recuperación = TP / (TP + FN)
  • TP = número de detecciones con IoU> 0.5
  • FP = número de detecciones con IoU <= 0.5 o detectado más de una vez
  • FN = número de objetos que no se detectaron o detectaron con IoU <= 0.5

Respuestas:


15

Para responder tu pregunta:

  1. Sí, tu enfoque es correcto
  2. De A, B y C la respuesta correcta es B.

La explicación es la siguiente: para calcular la precisión promedio promedio (mAP) en el contexto de la detección de objetos, debe calcular la precisión promedio (AP) para cada clase y luego calcular la media en todas las clases. La clave aquí es calcular el AP para cada clase, en general para calcular Precisión (P) y Recuperación (R) debe definir cuáles son: Positivos verdaderos (TP), Positivos falsos (FP), Verdadero negativo (TN) y Falso Negativo (FN). En el entorno de Detección de objetos del desafío Pascal VOC se encuentran los siguientes:

  • TP: son los cuadros de límite (BB) que la intersección sobre la unión (IoU) con la verdad del terreno (GT) está por encima de 0.5
  • FP: BB que el IoU con GT está por debajo de 0.5 también el BB que tiene IoU con un GT que ya ha sido detectado.
  • TN: no hay negativo verdadero, se espera que la imagen contenga al menos un objeto
  • FN: esas imágenes fueron el método no pudo producir un BB

Ahora cada BB predicho tiene un valor de confianza para la clase dada. Entonces, el método de puntuación clasifica las predicciones para disminuir el orden de confianza y calcula P = TP / (TP + FP) y R = TP / (TP + FN) para cada rango posible k = 1 hasta el número de predicciones. Entonces, ahora tiene una (P, R) para cada rango, esas P y R son la curva de precisión-recuperación "en bruto". Para calcular la curva PR interpolada para cada valor de R, seleccione el P máximo que tenga un R '> = R.

Hay dos formas diferentes de muestrear los puntos de la curva PR según voc devkit doc . Para VOC Challenge antes de 2010, seleccionamos el P máximo obtenido para cualquier R '> = R, que R pertenece a 0, 0.1, ..., 1 (once puntos). El AP es entonces la precisión promedio en cada uno de los umbrales de recuperación. Para VOC Challenge 2010 y posteriores, aún seleccionamos el P máximo para cualquier R '> = R, mientras que R pertenece a todos los valores únicos de recuperación (incluye 0 y 1). El AP es entonces el tamaño del área bajo la curva PR. Observe que en el caso de que no tenga un valor de P con Recall por encima de algunos de los umbrales, el valor de Precisión es 0.

Por ejemplo, considere la siguiente salida de un método dada la clase "Avión":

BB  | confidence | GT
----------------------
BB1 |  0.9       | 1
----------------------
BB2 |  0.9       | 1
----------------------
BB3 |  0.7       | 0
----------------------
BB4 |  0.7       | 0
----------------------
BB5 |  0.7       | 1
----------------------
BB6 |  0.7       | 0
----------------------
BB7 |  0.7       | 0
----------------------
BB8 |  0.7       | 1
----------------------
BB9 |  0.7       | 1
----------------------

Además no detectó cuadros delimitadores en dos imágenes, por lo que tenemos FN = 2. La tabla anterior es el rango ordenado por valor de confianza de las predicciones del método GT = 1 significa que es un TP y GT = 0 FP. Entonces TP = 5 (BB1, BB2, BB5, BB8 y BB9), FP = 5. Para el caso de rank = 3, la precisión cae porque BB1 ​​ya se detectó, por lo que incluso si el objeto está realmente presente, cuenta como FP. .

rank=1  precision=1.00 and recall=0.14
----------
rank=2  precision=1.00 and recall=0.29
----------
rank=3  precision=0.66 and recall=0.29
----------
rank=4  precision=0.50 and recall=0.29
----------
rank=5  precision=0.40 and recall=0.29
----------
rank=6  precision=0.50 and recall=0.43
----------
rank=7  precision=0.43 and recall=0.43
----------
rank=8  precision=0.38 and recall=0.43
----------
rank=9  precision=0.44 and recall=0.57
----------
rank=10 precision=0.50 and recall=0.71
----------

Dados los resultados anteriores: si utilizamos la forma anterior a voc2010, los valores de precisión interpolados son 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0. Entonces AP = 5.5 / 11 = 0.5 para el clase de "Aviones". De lo contrario, si utilizamos la forma desde voc2010, los valores de precisión interpolados son 1, 1, 1, 0.5, 0.5, 0.5, 0 para siete retiros únicos que son 0, 0.14, 0.29, 0.43, 0.57, 0.71, 1. Luego AP = (0.14-0) * 1 + (0.29-0.14) * 1 + (0.43-0.29) * 0.5 + (0.57-0.43) * 0.5 + (0.71-0.57) * 0.5 + (1-0.71) * 0 = 0.5 para la clase de "Aviones".

Repita para cada clase y luego tiene el (mAP).

Se puede encontrar más información en los siguientes enlaces 1 , 2 . También debe consultar el documento: El desafío de las clases de objetos visuales de PASCAL: una retrospectiva para obtener una explicación más detallada.


1
¡De nada! Sí, debes calcular en todas las imágenes. Y GT es 1 si IoU> 0.5. El último FN será 3 por 3 objetos no detectados
feynman410

1
FN es el número de imágenes sin predicciones, FP es el número de detecciones con IoU <= 0.5 o detectadas más de una vez. Vea este pseudocódigo stats.stackexchange.com/a/263758/140597
feynman410

1
Lo sentimos, su derecho es el número de objetos no detectados.
feynman410

1
@ feynman410 Me confundí, ¿podría decirnos dónde coloca en la tabla los objetos que no se detectaron, pero que deberían estar? al final de la mesa? (porque no hay puntaje para ellos)
Martin Brišiak

1
Por lo tanto, "Precisión" y "Recuperación" se calculan por separado para cada clase, con el fin de calcular AP por clase. ¿Derecho? Entonces, ¿se calculan por separado en cada imagen y luego se promedian, o se calculan sobre las detecciones totales en todas las imágenes?
Algo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.