Come calcolare il mAP (media precisione media) per l'attività di rilevamento per le classifiche Pascal VOC? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4
Ci ha detto - a pagina 11 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf
Precisione media (AP). Per la sfida VOC2007, la precisione media interpolata (Salton e Mcgill 1986) è stata utilizzata per valutare sia la classificazione che il rilevamento. Per una determinata attività e classe, la curva di precisione / richiamo viene calcolata dall'output classificato di un metodo. Il richiamo è definito come la proporzione di tutti gli esempi positivi classificati al di sopra di un determinato rango. La precisione è la proporzione di tutti gli esempi al di sopra di quel rango che appartengono alla classe positiva. L'AP riassume la forma della curva di precisione / richiamo ed è definita come la precisione media in un insieme di undici livelli di richiamo equidistanti [0,0,1, ..., 1]:
AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)
La precisione ad ogni livello di richiamo r viene interpolata prendendo la massima precisione misurata per un metodo per il quale il richiamo corrispondente supera r
pinterp(r) = max p(r˜)
:, dove p (r˜) è la precisione misurata al richiamo ˜r
Informazioni su mAP : http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision
Quindi significa che:
Noi calcoliamo di precisione e richiamo :
- A) Per molti diversi
IoU
> {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}
calcoliamo i valori Vero / Falso positivo / negativo
Dove
True positive = Number_of_detection with IoU > {0, 0.1,..., 1}
, come detto qui: /datascience//a/16813/37736 e quindi calcoliamo:Precision = True positive / (True positive + False positive)
Recall = True positive / (True positive + False negative)
- A) Per molti diversi
B) O per molte soglie diverse di algoritmi di rilevazione calcoliamo:
Precision = True positive / (True positive + False positive)
Recall = True positive / (True positive + False negative)
Dove
True positive = Number_of_detection with IoU > 0.5
detto qui: /programming//a/43168882/1558037
C) O per molte soglie diverse di algoritmi di rilevazione calcoliamo:
Precision = Intersect / Detected_box
Recall = Intersect / Object
Come mostrato qui? https://en.wikipedia.org/wiki/Precision_and_recall
- Quindi calcoliamo AP (precisione media) come media di 11 valori
Precision
nei punti in cuiRecall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}
, ad esAP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)
(In generale per ogni punto, ad esempio 0.3, otteniamo il MAX di Precisione per Richiamo <= 0.3, invece del valore di Precisione a questo punto Richiama = 0.3)
- E quando calcoliamo AP solo per 1 classe di oggetti qualcosa su tutte le immagini, allora otteniamo AP (precisione media) per questa classe, ad esempio, solo per
air
.
Quindi AP è parte integrante (area sotto la curva): /stats//a/157019/111998
Ma quando calcoliamo l'AP per tutte le classi di oggetti su tutte le immagini, otteniamo mAP (precisione media media) per tutti i set di dati delle immagini, ad esempio 88.6
per R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4
Domande:
- È giusto e, in caso contrario, come calcolare mAP per Pascal VOC Challenge?
- E quale delle 3 formule (A, B o C) è corretta per il calcolo di Precisione e Richiamo, nel paragrafo 1?
Risposta breve:
- mAP = AVG (AP per ogni classe di oggetti)
- AP = AVG (Precisione per ciascuno di 11 richiami {precision = 0, 0.1, ..., 1})
- Curva PR = Precisione e richiamo (per ogni soglia presente nelle caselle associate alle previsioni)
- Precisione = TP / (TP + FP)
- Richiama = TP / (TP + FN)
- TP = numero di rilevamenti con IoU> 0,5
- FP = numero di rilevamenti con IoU <= 0,5 o rilevato più di una volta
- FN = numero di oggetti che non sono stati rilevati o rilevati con IoU <= 0,5