Mean Average Precision (mAP)
A precisão média (mAP) avalia detectores calculando a média da precisão ao longo da revocação, das classes e dos limiares de IoU. Saiba como mAP50 e mAP50-95 são calculados.
A precisão média média (mAP) é a métrica de avaliação padrão para detecção de objetos, e o mesmo método avalia segmentação de instâncias, estimativa de pose e detecção orientada. Ela recompensa o modelo por encontrar todos os objetos, evitar detecções falsas e posicionar cada caixa delimitadora com precisão, condensando os três aspectos num único valor entre 0 e 1, muitas vezes expresso em porcentagem. A precisão média (AP) é a área sob a curva de precisão-revocação de uma classe, a mAP é a média da AP entre as classes e a forma mais divulgada, mAP50-95, também calcula a média em dez limites de interseção sobre união (IoU).
Os elementos básicos#
- IoU: a sobreposição entre uma caixa prevista e uma caixa rotulada, de 0 a 1. Uma previsão só é um verdadeiro positivo quando sua IoU com um rótulo da mesma classe ainda não associado atinge o limite, por exemplo, 0.5.
- Precisão: a proporção de previsões corretas, TP / (TP + FP).
- Revocação: a proporção de objetos rotulados encontrados pelo modelo, TP / (TP + FN).
- Confiança: a pontuação usada para ordenar as detecções. Cada limite de confiança gera um par de precisão e revocação, e todos os limites juntos traçam a curva de precisão-revocação.
Como a mAP é calculada#
A avaliação reúne todas as detecções de uma classe em todo o conjunto de dados e as ordena por confiança. Percorrendo essa lista, cada detecção associa-se ao rótulo não associado de sua classe com maior sobreposição e torna-se um verdadeiro positivo, ou torna-se um falso positivo. Cada rótulo só pode ser associado uma vez, portanto uma segunda caixa sobre um objeto já encontrado conta contra a precisão. Após cada etapa, a precisão e a revocação são recalculadas, traçando a curva de precisão-revocação da detecção com maior confiança à de menor confiança.
A AP é a área sob essa curva. Antes da integração, a curva é substituída por seu envelope, a maior precisão encontrada em cada nível de revocação ou acima dele, para que pequenas oscilações não alterem a pontuação. A avaliação COCO amostra o envelope em 101 pontos de revocação entre 0 e 1, enquanto o benchmark PASCAL VOC original usava 11. Os níveis de revocação que o modelo não alcança contribuem com precisão zero; assim, cada objeto não detectado reduz a 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}")O script imprime Max recall: 0.8, AP: 0.686. Um dos cinco objetos rotulados nunca é detectado, portanto o último quinto do eixo de revocação não acrescenta nada à área, e a AP permanece em 0.686, embora as duas detecções com maior confiança estejam corretas.
mAP vs. métricas relacionadas#
- Acurácia divide as previsões corretas pelo total de previsões, o que exige contar os verdadeiros negativos. Os verdadeiros negativos de um detector seriam cada região de fundo vazia, portanto a acurácia não tem valor significativo na detecção.
- Pontuação F1 combina precisão e revocação num único limite de confiança e descreve um ponto de operação, como o limite usado por um modelo implantado.
- Matriz de confusão contabiliza quais classes o detector confunde num único limite, um nível de detalhe ocultado por um único valor de mAP.
mAP50, mAP75 e mAP50-95#
Como mAP é uma média simples entre classes, uma classe rara conta tanto quanto uma classe comum. O limiar de IoU determina o quão precisa uma caixa precisa ser para contar:
- mAP50: uma deteção é considerada correta com IoU de 0,5, a regra do PASCAL VOC.
- mAP75: o limiar sobe para 0,75, um teste rigoroso de localização.
- mAP50-95: mAP calculado como média em dez limiares, de 0,50 a 0,95, em incrementos de 0,05. O COCO chama esse valor simplesmente de "AP", não faz distinção entre AP e mAP e o usa como sua principal métrica de competição.
O treinamento do Ultralytics YOLO26 mantém best.pt da época com o maior mAP50-95 de validação, e a validação informa as três variantes em cada execução.
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}")Quanto mais baixo o limiar de IoU, mais deteções contam como corretas; por isso, o mAP50 é o mais alto, e o mAP50-95 fica abaixo dele. O COCO também divide a AP por tamanho do objeto: objetos pequenos ocupam menos de 32 × 32 pixels de área, objetos médios até 96 × 96, e objetos grandes, mais do que isso.










