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.