Come calcolare mAP per l'attività di rilevamento per la sfida PASCAL VOC?


22

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:

  1. Noi calcoliamo di precisione e richiamo :

    • A) Per molti diversiIoU > {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)


  • 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.5detto qui: /programming//a/43168882/1558037



  1. Quindi costruiamo la curva di richiamo di precisione , come mostrato qui: inserisci qui la descrizione dell'immagine

  1. Quindi calcoliamo AP (precisione media) come media di 11 valoriPrecision nei punti in cui Recall = {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)


  1. 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.6per R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4


Domande:

  1. È giusto e, in caso contrario, come calcolare mAP per Pascal VOC Challenge?
  2. 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

Risposte:


15

Per rispondere alle tue domande:

  1. Sì, il tuo approccio è giusto
  2. Di A, B e C la risposta giusta è B.

La spiegazione è la seguente: Per calcolare la precisione media media (mAP) nel contesto del rilevamento oggetto, è necessario calcolare la precisione media (AP) per ciascuna classe, quindi calcolare la media in tutte le classi. La chiave qui è calcolare l'AP per ogni classe, in generale per il calcolo della precisione (P) e del richiamo (R) è necessario definire quali sono: True Positives (TP), False Positives (FP), True Negative (TN) e False Negativo (FN). Nell'ambito di Object Detection of the Pascal VOC Challenge sono i seguenti:

  • TP: sono i Bounding Boxes (BB) che l'intersezione sull'unione (IoU) con la verità di base (GT) è superiore a 0,5
  • FP: BB che l'IoU con GT è inferiore a 0,5 anche il BB che ha IoU con una GT che è già stata rilevata.
  • TN: non ci sono veri negativi, l'immagine dovrebbe contenere almeno un oggetto
  • FN: quelle immagini erano il metodo non è riuscito a produrre un BB

Ora ogni BB previsto ha un valore di confidenza per la classe data. Quindi il metodo di punteggio ordina le previsioni per diminuire l'ordine di confidenza e calcola P = TP / (TP + FP) e R = TP / (TP + FN) per ogni possibile rango k = 1 fino al numero di previsioni. Quindi ora hai un (P, R) per ogni rango che P e R sono la curva "grezza" di richiamo di precisione. Per calcolare la curva PR interpolata per ogni valore di R selezionare la P massima che ha una R '> = R. corrispondente

Esistono due modi diversi per campionare i punti della curva PR in base al doc devkit doc . Per VOC Challenge prima del 2010, selezioniamo la P massima ottenuta per ogni R '> = R, la cui R appartiene a 0, 0,1, ..., 1 (undici punti). L'AP è quindi la precisione media su ciascuna delle soglie di richiamo. Per VOC Challenge 2010 e successivi, selezioniamo comunque il massimo P per ogni R '> = R, mentre R appartiene a tutti i valori di richiamo univoci (includi 0 e 1). L'AP è quindi la dimensione dell'area sotto la curva PR. Si noti che nel caso in cui non si abbia un valore di P con Richiamo sopra alcune delle soglie, il valore Precisione è 0.

Ad esempio, considerare il seguente output di un metodo data la classe "Aereo":

BB  | confidence | GT
----------------------
BB1 |  0.9       | 1
----------------------
BB2 |  0.9       | 1
----------------------
BB3 |  0.7       | 0
----------------------
BB4 |  0.7       | 0
----------------------
BB5 |  0.7       | 1
----------------------
BB6 |  0.7       | 0
----------------------
BB7 |  0.7       | 0
----------------------
BB8 |  0.7       | 1
----------------------
BB9 |  0.7       | 1
----------------------

Inoltre non ha rilevato i riquadri di delimitazione in due immagini, quindi abbiamo FN = 2. La tabella precedente è il rango ordinato in base al valore di confidenza delle previsioni del metodo GT = 1 significa che un TP e GT = 0 FP. Quindi TP = 5 (BB1, BB2, BB5, BB8 e BB9), FP = 5. Nel caso di rank = 3 la precisione diminuisce perché BB1 era già stata rilevata, quindi anche se l'oggetto è effettivamente presente, conta come FP. .

rank=1  precision=1.00 and recall=0.14
----------
rank=2  precision=1.00 and recall=0.29
----------
rank=3  precision=0.66 and recall=0.29
----------
rank=4  precision=0.50 and recall=0.29
----------
rank=5  precision=0.40 and recall=0.29
----------
rank=6  precision=0.50 and recall=0.43
----------
rank=7  precision=0.43 and recall=0.43
----------
rank=8  precision=0.38 and recall=0.43
----------
rank=9  precision=0.44 and recall=0.57
----------
rank=10 precision=0.50 and recall=0.71
----------

Dati i risultati precedenti: se avessimo usato prima di voc2010, i valori di Precisione interpolati sono 1, 1, 1, 0,5, 0,5, 0,5, 0,5, 0,5, 0, 0, 0. Quindi AP = 5,5 / 11 = 0,5 per il classe di "Aeroplani". Altrimenti se usiamo la strada dal voc2010, i valori di precisione interpolati sono 1, 1, 1, 0,5, 0,5, 0,5, 0 per sette richiami univoci che sono 0, 0,14, 0,29, 0,43, 0,57, 0,71, 1, quindi AP = (0,14-0) * 1 + (0,29-0,14) * 1 + (0,43-0,29) * 0,5 + (0,57-0,43) * 0,5 + (0,71-0,57) * 0,5 + (1-0,71) * 0 = 0,5 per la classe di "Aeroplani".

Ripeti l'operazione per ogni classe e poi hai il (mAP).

Ulteriori informazioni sono disponibili nei seguenti collegamenti 1 , 2 . Inoltre, dovresti controllare il documento: La sfida delle classi di oggetti visivi PASCAL: una retrospettiva per una spiegazione più dettagliata.


1
Prego! Sì, dovresti calcolare tutte le immagini. E GT è 1 se IoU> 0,5. L'ultimo FN sarà 3 per 3 oggetti non rilevati
feynman410

1
FN è il numero di immagini in cui non è stata fatta alcuna previsione, FP è il numero di rilevamenti con IoU <= 0,5 o rilevati più di una volta. Vedi questo pseudocodice stats.stackexchange.com/a/263758/140597
feynman410

1
Spiacenti, il tuo diritto è il numero di oggetti non rilevati.
feynman410,

1
@ feynman410 mi sono confuso, puoi dirci dove collochi nella tabella oggetti che non sono stati rilevati, ma che dovrebbero essere? alla fine del tavolo? (perché non c'è punteggio per loro)
Martin Brišiak

1
Quindi "Precisione" e "Richiama" vengono calcolati separatamente per ogni classe, al fine di calcolare AP per classe. Giusto? Quindi vengono calcolati separatamente su ogni immagine e quindi calcolati come media o vengono calcolati sui rilevamenti totali su tutte le immagini?
Qualcosa del

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.