Mean Average Precision (mAP)
La precisión media promedio (mAP) mide el rendimiento de los detectores calculando la media de la precisión a lo largo del recall, las clases y los umbrales de IoU. Descubre cómo se calculan mAP50 y mAP50-95.
La precisión media promedio (mAP) es la métrica de evaluación estándar para la detección de objetos, y el mismo método evalúa la segmentación de instancias, la estimación de pose y la detección orientada. Premia que un modelo encuentre todos los objetos, evite las detecciones falsas y ajuste cada cuadro delimitador con precisión; combina estos tres aspectos en un único número entre 0 y 1, que a menudo se expresa como porcentaje. La precisión promedio (AP) es el área bajo la curva precisión-recall de una clase; mAP es la media de AP entre las clases, y la variante más utilizada, mAP50-95, también calcula la media entre diez umbrales de intersección sobre unión (IoU).
Elementos básicos#
- IoU: el solapamiento entre un cuadro predicho y un cuadro etiquetado, de 0 a 1. Una predicción solo es un verdadero positivo si su IoU con una etiqueta de la misma clase aún no emparejada alcanza el umbral, por ejemplo, 0.5.
- Precisión: proporción de predicciones correctas, TP / (TP + FP).
- Exhaustividad: proporción de objetos etiquetados que encuentra el modelo, TP / (TP + FN).
- Confianza: puntuación que ordena las detecciones. Cada umbral de confianza da un par de precisión y exhaustividad, y el conjunto de umbrales traza la curva precisión-exhaustividad.
Cómo se calcula mAP#
La evaluación reúne todas las detecciones de una clase en todo el conjunto de datos y las ordena por confianza. Al recorrer la lista, cada detección se asigna a la etiqueta no emparejada de su clase con mayor solapamiento y se convierte en un verdadero positivo, o bien se convierte en un falso positivo. Cada etiqueta solo puede asignarse una vez, por lo que un segundo cuadro sobre un objeto ya encontrado cuenta en contra de la precisión. Después de cada paso, se recalculan la precisión y la exhaustividad, lo que traza la curva precisión-exhaustividad desde la detección con mayor confianza hasta la de menor confianza.
AP es el área bajo esa curva. Antes de calcularla, la curva se sustituye por su envolvente: la precisión más alta encontrada en cada nivel de exhaustividad o por encima de este, de modo que las pequeñas oscilaciones no alteren la puntuación. La evaluación COCO toma muestras de la envolvente en 101 puntos de exhaustividad entre 0 y 1, mientras que el benchmark PASCAL VOC original utilizaba 11. Los niveles de exhaustividad que el modelo nunca alcanza aportan una precisión de cero, por lo que cada objeto no detectado reduce la AP.
import numpy as np
# One class: 8 detections sorted by confidence (1 = matched a label, 0 = false positive)
tp = np.array([1, 1, 0, 1, 0, 1, 0, 0])
num_labels = 5 # ground-truth objects of this class in the dataset
# Precision and recall after each detection in the ranked list
tp_cum = np.cumsum(tp)
precision = tp_cum / np.arange(1, len(tp) + 1)
recall = tp_cum / num_labels
# Precision envelope: best precision at this recall or any higher recall
envelope = np.maximum.accumulate(precision[::-1])[::-1]
# COCO-style AP: average the envelope at 101 recall points (0 beyond the highest recall reached)
points = np.linspace(0, 1, 101)
idx = np.searchsorted(recall, points, side="left")
ap = np.mean([envelope[i] if i < len(envelope) else 0.0 for i in idx])
print(f"Max recall: {recall[-1]:.1f}, AP: {ap:.3f}")El script imprime Max recall: 0.8, AP: 0.686. Uno de los cinco objetos etiquetados nunca se detecta, por lo que la quinta parte final del eje de exhaustividad no aporta nada al área y la AP se mantiene en 0.686, aunque las dos detecciones con mayor confianza sean correctas.
mAP frente a métricas relacionadas#
- Exactitud: divide las predicciones correctas entre todas las predicciones, lo que exige contar los verdaderos negativos. En un detector, los verdaderos negativos serían todos los fragmentos de fondo vacíos, por lo que la exactitud no tiene un valor significativo en detección.
- Puntuación F1: combina precisión y exhaustividad en un único umbral de confianza y describe un solo punto operativo, como el umbral con el que funciona un modelo desplegado.
- Matriz de confusión: cuenta qué clases confunde un detector en un umbral determinado; es el detalle que oculta una única cifra de mAP.
mAP50, mAP75 y mAP50-95#
Como mAP es una media aritmética simple entre clases, una clase poco frecuente cuenta tanto como una común. El umbral de IoU determina cuánto debe ajustarse una caja para contar:
- mAP50: una detección es correcta con un IoU de 0,5, según la regla de PASCAL VOC.
- mAP75: el umbral sube a 0,75, una prueba estricta de localización.
- mAP50-95: mAP promediado en diez umbrales, de 0,50 a 0,95 en incrementos de 0,05. COCO denomina esta cifra simplemente «AP», no distingue entre AP y mAP, y la utiliza como métrica principal de su desafío.
El entrenamiento de Ultralytics YOLO26 conserva best.pt de la época con el mAP50-95 de validación más alto, y la validación informa de las tres variantes en cada ejecución.
from ultralytics import YOLO
# Load a pretrained YOLO26 nano detector
model = YOLO("yolo26n.pt")
# Validate on the small COCO8 dataset to compute mAP
metrics = model.val(data="coco8.yaml")
# The same detections scored at three IoU thresholds
print(f"mAP50: {metrics.box.map50:.3f}")
print(f"mAP75: {metrics.box.map75:.3f}")
print(f"mAP50-95: {metrics.box.map:.3f}")Cuanto más bajo es el umbral de IoU, más detecciones cuentan como correctas, así que mAP50 resulta ser el valor más alto y mAP50-95 queda por debajo. COCO también desglosa AP por tamaño del objeto: los objetos pequeños ocupan menos de 32 × 32 píxeles de superficie, los medianos hasta 96 × 96 y los grandes, más que eso.










