Como calcular o mAP (Precisão média média) para a tarefa de detecção das tabelas de classificação Pascal VOC? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4
Disse - na página 11 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf
Precisão Média (PA). Para o desafio VOC2007, a precisão média interpolada (Salton e Mcgill 1986) foi usada para avaliar a classificação e a detecção. Para uma determinada tarefa e classe, a curva precisão / recuperação é calculada a partir da saída classificada de um método. A rechamada é definida como a proporção de todos os exemplos positivos classificados acima de uma determinada classificação. Precisão é a proporção de todos os exemplos acima dessa classificação que são da classe positiva. O PA resume a forma da curva precisão / recuperação, e é definida como a precisão média em um conjunto de onze níveis de recuperação igualmente espaçados [0,0,1, ..., 1]:
AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)
A precisão em cada nível de recuperação r é interpolada tomando a precisão máxima medida para um método para o qual a recuperação correspondente excede r
pinterp(r) = max p(r˜)
:, onde p (r˜) é a precisão medida na recuperação 'r
Sobre o mAP: http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision
Então, isso significa que:
Calculamos Precisão e Recuperação :
- A) Para muitos diferentes
IoU
> {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}
, calculamos valores Verdadeiro / Falso Positivo / Negativo
Onde
True positive = Number_of_detection with IoU > {0, 0.1,..., 1}
, como dito aqui: /datascience//a/16813/37736 e calculamos:Precision = True positive / (True positive + False positive)
Recall = True positive / (True positive + False negative)
- A) Para muitos diferentes
B) Ou para muitos limiares diferentes de algoritmos de detecção, calculamos:
Precision = True positive / (True positive + False positive)
Recall = True positive / (True positive + False negative)
Onde,
True positive = Number_of_detection with IoU > 0.5
como dito aqui: /programming//a/43168882/1558037
C) Ou para muitos limiares diferentes de algoritmos de detecção, calculamos:
Precision = Intersect / Detected_box
Recall = Intersect / Object
Como mostrado aqui? https://en.wikipedia.org/wiki/Precision_and_recall
- Então calculamos AP (precisão média) como média de 11 valores
Precision
nos pontos em queRecall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}
, ou seja,AP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)
(Em geral, para cada ponto, por exemplo, 0,3, obtemos MAX de precisão para rechamada <= 0,3, em vez do valor de precisão neste momento Rechamada = 0,3)
- E quando calculamos AP apenas para 1 classe de objeto em todas as imagens - obtemos AP (precisão média) para essa classe, por exemplo, apenas para
air
.
Portanto, o AP é uma integral (área sob a curva): /stats//a/157019/111998
Porém, quando calculamos o AP para todas as classes de objetos em todas as imagens - obtemos o mAP (precisão média média) para todos os conjuntos de dados de imagens, por exemplo, 88.6
para R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4
Questões:
- Está certo e, se não estiver, como calcular o mAP para o Pascal VOC Challenge?
- E qual das três fórmulas (A, B ou C) está correta para o cálculo de Precisão e Recuperação, no parágrafo 1?
Resposta curta:
- mAP = AVG (AP para cada classe de objeto)
- AP = AVG (precisão para cada uma das 11 recuperações {precision = 0, 0,1, ..., 1})
- Curva PR = Precisão e recuperação (para cada limite que está nas caixas de limite de previsões)
- Precisão = TP / (TP + FP)
- Rechamada = TP / (TP + FN)
- TP = número de detecções com IoU> 0,5
- FP = número de detecções com IoU <= 0,5 ou detectadas mais de uma vez
- FN = número de objetos que não foram detectados ou detectados com IoU <= 0,5
Existe uma explicação agradável e detalhada com um código fácil de usar no meu github:
https://github.com/rafaelpadilla/Object-Detection-Metrics
Certamente isso vai ajudar vocês.
fonte