Jak obliczyć mAP dla zadania wykrywania dla PASCAL VOC Challenge?

22

Jak obliczyć mAP (średnia średnia precyzja) dla zadania wykrywania dla liderów Pascal VOC? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4

Tam powiedział - na stronie 11 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf

Średnia precyzja (AP). Do oceny VOC2007 zastosowano interpolowaną średnią precyzję (Salton i Mcgill 1986) do oceny zarówno klasyfikacji, jak i wykrywania. Dla danego zadania i klasy krzywa precyzji / przywołania jest obliczana na podstawie wyników rankingu metody. Odwołanie jest zdefiniowane jako odsetek wszystkich pozytywnych przykładów powyżej rangi. Precyzja to proporcja wszystkich przykładów powyżej tej rangi, które pochodzą z klasy pozytywnej. AP podsumowuje kształt krzywej precyzji / przywołania i jest zdefiniowany jako średnia precyzja na zbiorze jedenastu równomiernie rozmieszczonych poziomów przywołania [0,0,1, ..., 1]: AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)

Precyzja na każdym poziomie przywołania r jest interpolowana poprzez przyjęcie maksymalnej precyzji zmierzonej dla metody, dla której odpowiadające przywołanie przekracza r pinterp(r) = max p(r˜):, gdzie p (r˜) jest zmierzoną precyzją przy przywołaniu

Informacje o mAP: http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision


Czy to oznacza, że:

  1. Możemy obliczyć precyzji i Recall :

    • A) Dla wielu różnychIoU > {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1} obliczamy prawdziwe / fałszywe wartości dodatnie / ujemne

    Gdzie True positive = Number_of_detection with IoU > {0, 0.1,..., 1}, jak powiedziano tutaj: /datascience//a/16813/37736, a następnie obliczamy:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)


  • B) Lub dla wielu różnych progów algorytmów wykrywania obliczamy:

    Precision = True positive / (True positive + False positive)

    Recall = True positive / (True positive + False negative)

    Gdzie True positive = Number_of_detection with IoU > 0.5powiedziano tutaj: /programming//a/43168882/1558037



  1. Następnie tworzymy krzywą Precision-Recall , jak pokazano tutaj: wprowadź opis zdjęcia tutaj

  1. Następnie obliczamy AP (średnia precyzja) jako średnią z 11 wartościPrecision w punktach gdzie Recall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, tjAP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)

(Zasadniczo dla każdego punktu, na przykład 0,3, otrzymujemy MAKS. Precyzji dla Przywołania <= 0,3, zamiast wartości Precyzji w tym momencie Przywołania = 0,3)


  1. A kiedy obliczamy AP tylko dla 1 klasy obiektów na wszystkich obrazach - otrzymujemy AP (średnia precyzja) dla tej klasy, na przykład tylko dla air.

AP jest więc całką (obszar pod krzywą): /stats//a/157019/111998

Ale gdy obliczamy AP dla wszystkich klas obiektów na wszystkich obrazach - otrzymujemy mAP (średnia średnia precyzja) dla wszystkich 88.6zbiorów danych obrazów, na przykład dla R4D_faster_rcnn: http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4


Pytania:

  1. Czy to prawda, a jeśli nie, to jak obliczyć mAP dla Pascal VOC Challenge?
  2. I który z 3 wzorów (A, B lub C) jest poprawny do obliczania dokładności i przywołania, w ust. 1?

Krótka odpowiedź:

  • mAP = AVG (AP dla każdej klasy obiektów)
  • AP = AVG (Precyzja dla każdego z 11 przywołań {precyzja = 0, 0,1, ..., 1})
  • Krzywa PR = Precyzja i przywołanie (dla każdego progu znajdującego się w obwiedniach prognozy)
  • Precyzja = TP / (TP + FP)
  • Recall = TP / (TP + FN)
  • TP = liczba wykrytych IoU> 0,5
  • FP = liczba wykrytych IoU <= 0,5 lub wykrytych więcej niż jeden raz
  • FN = liczba obiektów, które nie zostały wykryte lub wykryte z IoU <= 0,5
Alex
źródło

Odpowiedzi:

15

Aby odpowiedzieć na pytania:

  1. Tak, twoje podejście jest słuszne
  2. Z A, B i C poprawną odpowiedzią jest B.

Wyjaśnienie jest następujące: Aby obliczyć średnią średnią precyzję (mAP) w kontekście wykrywania obiektów, należy obliczyć średnią precyzję (AP) dla każdej klasy, a następnie obliczyć średnią dla wszystkich klas. Kluczem tutaj jest obliczenie AP dla każdej klasy, ogólnie w obliczeniach Precyzji (P) i Przywołania (R) musisz zdefiniować, co to jest: Prawdziwie pozytywne (TP), Fałszywe pozytywne (FP), Prawdziwie negatywne (TN) i Fałsz Negatywne (FN). W ustawieniu Wykrywanie obiektów w Pascal VOC Challenge są następujące:

  • TP: są polami ograniczającymi (BB), że przecięcie nad zjednoczeniem (IoU) z prawdą podstawową (GT) jest powyżej 0,5
  • FP: BB, że IoU z GT jest poniżej 0,5, a także BB, który ma IoU z GT, który został już wykryty.
  • TN: nie ma prawdziwego negatywu, oczekuje się, że obraz będzie zawierał co najmniej jeden obiekt
  • FN: te obrazy nie były w stanie wygenerować BB

Teraz każdy przewidywany BB ma wartość ufności dla danej klasy. Zatem metoda punktacji sortuje prognozy dla malejącego rzędu ufności i oblicza P = TP / (TP + FP) i R = TP / (TP + FN) dla każdej możliwej rangi k = 1 do liczby prognoz. Więc teraz masz (P, R) dla każdej rangi, te P i R są „surową” krzywą Precyzji-Przywołania. Aby obliczyć interpolowaną krzywą PR dla każdej wartości R, wybierz maksimum P, które ma odpowiadające R '> = R.

Istnieją dwa różne sposoby próbkowania punktów krzywej PR według doc devkit doc . W VOC Challenge przed 2010 r. Wybieramy maksymalne P uzyskane dla dowolnego R '> = R, przy czym R należy do 0, 0,1, ..., 1 (jedenaście punktów). AP jest wtedy średnią precyzją dla każdego z progów przywołania. W przypadku VOC Challenge 2010 i późniejszych nadal wybieramy maksymalne P dla dowolnego R '> = R, podczas gdy R należy do wszystkich unikalnych wartości wycofania (obejmują 0 i 1). AP jest wówczas rozmiarem powierzchni pod krzywą PR. Zauważ, że w przypadku, gdy nie masz wartości P z Recall powyżej niektórych progów, wartość Precyzji wynosi 0.

Rozważmy na przykład następujące dane wyjściowe metody o klasie „Samolot”:

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
----------------------

Poza tym nie wykrył obwiedni na dwóch obrazach, więc mamy FN = 2. Poprzednia tabela jest uporządkowaną rangą według wartości ufności prognoz metody GT = 1 oznacza TP i GT = 0 FP. Zatem TP = 5 (BB1, BB2, BB5, BB8 i BB9), FP = 5. W przypadku rangi = 3 precyzja spada, ponieważ BB1 został już wykryty, więc nawet jeśli obiekt rzeczywiście jest obecny, liczy się jako 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
----------

Biorąc pod uwagę poprzednie wyniki: Jeśli zastosowaliśmy sposób przed voc2010, interpolowane wartości precyzji wynoszą 1, 1, 1, 0,5, 0,5, 0,5, 0,5, 0,5, 0, 0, 0, a następnie AP = 5,5 / 11 = 0,5 dla klasa „samolotów”. W przeciwnym razie, jeśli użyliśmy tej metody od voc2010, interpolowane wartości Precyzji wynoszą 1, 1, 1, 0,5, 0,5, 0,5, 0 dla siedmiu unikalnych przywołań, które wynoszą 0, 0,14, 0,29, 0,43, 0,57, 0,71, 1. Następnie 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 dla klasa „samolotów”.

Powtórz dla każdej klasy, a następnie otrzymasz (mAP).

Więcej informacji można znaleźć w poniższych linkach 1 , 2 . Powinieneś także przeczytać artykuł: Wyzwanie klas obiektów wizualnych PASCAL: Retrospektywa, aby uzyskać bardziej szczegółowe wyjaśnienia.

feynman410
źródło
1
Nie ma za co! Tak, powinieneś obliczyć wszystkie obrazy. A GT wynosi 1, jeśli IoU> 0,5. Ostatni FN będzie
wynosił
1
FN to liczba zdjęć, dla których nie dokonano prognozy, FP to liczba wykrytych IoU <= 0,5 lub wykrytych więcej niż jeden raz. Zobacz ten pseudokod stats.stackexchange.com/a/263758/140597
feynman410
1
Przepraszamy, masz prawo do liczby obiektów, które nie zostały wykryte.
feynman410,
1
@ feynman410 pomyliłem się, czy możesz nam powiedzieć, gdzie umieszczasz w tabeli obiekty, które nie zostały wykryte, ale powinny być? na końcu stołu? (ponieważ nie ma dla nich punktacji)
Martin Brišiak
1
Zatem „Precyzja” i „Przywołanie” są obliczane osobno dla każdej klasy - w celu obliczenia AP dla każdej klasy. Dobrze? Czy są one obliczane osobno dla każdego obrazu, a następnie uśredniane, czy są obliczane na podstawie całkowitej liczby wykrytych obrazów?
Coś,