Estoy bastante confundido en cuanto a cómo puedo calcular los valores AP o mAP, ya que parece haber bastantes métodos diferentes. Específicamente quiero obtener los valores AP / mAP para la detección de objetos.
Todo lo que sé con certeza es:
Recuperación = TP / (TP + FN), Precisión = TP / (TP + FP)
Por ejemplo, si solo tengo 1 clase para evaluar, y digo 500 imágenes de prueba. Cada imagen de prueba puede tener un número diferente de predicciones (propuestas de cuadro delimitador) pero cada imagen solo tiene un cuadro delimitador de verdad real.
Imagen 1: [clase, probabilidad, x1, y1, x2, y2], [clase, probabilidad, x3, y3, x4, y4], [clase, probabilidad, x5, y5, x6, y6], [clase, probabilidad, x7, y7, x8, y8], ...
Imagen 2: [clase, probabilidad, x1, y1, x2, y2], [clase, probabilidad, x3, y3, x4, y4], ...
. . . (y así)
* solo un ejemplo, hice esto
Sé que para obtener TP, tendríamos que encontrar los IOU de cada predicción y contar los que están por encima de un umbral seleccionado, como 0.5 (si tenemos múltiples predicciones con IOU por encima del umbral, ¿solo contamos una vez y tratamos los demás como FP?).
Aquí es donde me desconcierta:
¿El TP + FP = # de predicciones hechas para cada imagen?
Como todas las imágenes de prueba no tienen negativos, TP + FN = 500?
¿Se calcula por imagen o por clase?
¿Podría alguien informarme una guía paso a paso para obtener el AP / mAP basado en mi ejemplo? Creo que la parte más ambigua es si lo hacemos por imagen o por clase (es decir, 500 imágenes a la vez).
La mayoría de las guías / documentos que encontré están muy dirigidos a la recuperación de información. Agradecería un poco de ayuda en esto.
* Nota: lo estoy probando en algunos conjuntos de datos personalizados. Sé que PASCAL VOC tiene algún código para hacerlo, pero quiero escribir el código yo mismo, personalizado según mis propios datos.