PASCAL VOC Challenge의 탐지 작업에 대한 MAP를 계산하는 방법은 무엇입니까?


22

Pascal VOC 리더 보드의 감지 작업에 대한 mAP (평균 평균 정밀도)를 계산하는 방법은 무엇입니까? http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4

11 페이지 에서 : http://homepages.inf.ed.ac.uk/ckiw/postscript/ijcv_voc09.pdf

평균 정밀도 (AP). VOC2007 챌린지의 경우, 보간 평균 정밀도 (Salton and Mcgill 1986)를 사용하여 분류 및 탐지를 평가했습니다. 주어진 작업과 클래스에 대해 정밀도 / 리콜 곡선은 메서드의 순위 출력에서 ​​계산됩니다. 리콜은 주어진 순위보다 순위가 높은 모든 긍정적 인 예의 비율로 정의됩니다. 정밀도는 양의 클래스에서 나온 위의 모든 예의 비율입니다. AP는 정밀도 / 리콜 곡선의 형태를 요약하고 11 개의 동일 간격 간격의 리콜 레벨 [0,0.1, ..., 1]에서 평균 정밀도로 정의됩니다. AP = 1/11 ∑ r∈{0,0.1,...,1} pinterp(r)

각 리콜 레벨 r의 정밀도는 해당 리콜이 r을 초과하는 방법에 대해 측정 된 최대 정밀도를 취함으로써 보간됩니다. pinterp(r) = max p(r˜)여기서, p ( r ~)는 리콜시 측정 된 정밀도 ~ r입니다.

mAP 소개 : http://0agr.ru/wiki/index.php/Precision_and_Recall#Average_Precision


그것은 다음을 의미합니까?

  1. 우리는 정밀 및 호출을 계산 :

    • A) 많은 다른 경우IoU > {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1} True / False Positive / Negative 값을 계산합니다.

    경우 True positive = Number_of_detection with IoU > {0, 0.1,..., 1}: 같은 여기 말했다 /datascience//a/16813/37736 후 우리는 계산 :

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

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


  • B) 또는 탐지 알고리즘의 여러 임계 값 에 대해 다음을 계산합니다.

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

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

    어디 True positive = Number_of_detection with IoU > 0.5여기 말했듯이 : /programming//a/43168882/1558037



  1. 그런 다음 여기에 표시된 것처럼 Precision-Recall 곡선을 만듭니다 . 여기에 이미지 설명을 입력하십시오

  1. 그럼 우리는 다음과 같이 AP (평균 정밀도)를 계산 의 11 개 값의 평균Precision 점에서 경우 Recall = {0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, 즉,AP = 1/11 ∑ recall∈{0,0.1,...,1} Precision(Recall)

(일반적으로 각 포인트 (예 : 0.3)에 대해이 시점의 정밀도 값 대신 리콜에 대한 정밀도 <= 0.3의 MAX를 얻습니다. = Recall = 0.3)


  1. 그리고 모든 이미지에서 1 개의 객체 클래스에 대해서만 AP를 계산하면 이 클래스에 대한 AP (평균 정밀도) 를 얻을 수 있습니다 ( 예 :) air.

따라서 AP는 필수 요소입니다 (곡선 아래) : /stats//a/157019/111998

그러나 모든 이미지의 모든 객체 클래스에 대한 AP를 계산할 때 R4D_faster_rcnn 과 같은 모든 이미지 데이터 세트에 대한 mAP (평균 평균 정밀도)88.6 를 얻습니다. http://host.robots.ox.ac.uk:8080/leaderboard /displaylb.php?challengeid=11&compid=4


질문 :

  1. 맞습니까? 그렇지 않다면 Pascal VOC Challenge의 mAP를 계산하는 방법은 무엇입니까?
  2. 그리고 단락 1에서 정밀도와 리콜을 계산하기 위해 3 가지 공식 (A, B 또는 C) 중 올바른 것은 무엇입니까?

짧은 답변:

  • mAP = AVG (각 객체 클래스에 대한 AP)
  • AP = AVG (11 회 리콜 각각의 정밀도 {정밀도 = 0, 0.1, ..., 1})
  • PR- 곡선 = 정밀도 및 회수 (예측 경계 상자에있는 각 임계 값에 대해)
  • 정밀도 = TP / (TP + FP)
  • 리콜 = TP / (TP + FN)
  • TP = IoU> 0.5 인 탐지 수
  • FP = IoU <= 0.5 인 탐지 횟수 또는 두 번 이상 탐지 된 횟수
  • FN = IoU <= 0.5로 감지되거나 감지되지 않은 개체 수

답변:


15

질문에 대답하려면 :

  1. 네 당신의 접근 방식이 맞습니다
  2. A, B 및 C 중에서 정답은 B입니다.

이에 대한 설명은 다음과 같습니다. 객체 감지와 관련된 맥락에서 평균 평균 정밀도 (mAP)를 계산하려면 각 클래스의 평균 정밀도 (AP)를 계산 한 다음 모든 클래스의 평균을 계산해야합니다. 여기서 핵심은 각 클래스의 AP를 계산하는 것입니다. 일반적으로 정밀 (P) 및 리콜 (R)을 계산하려면 다음을 정의해야합니다. 진 양성 (TP), 거짓 양성 (FP), 진 음성 (TN) 및 거짓 부정 (FN). Pascal VOC Challenge의 객체 감지 설정에서 다음은 다음과 같습니다.

  • TP :지면 진실 (GT)과의 노조 (IoU) 교차점이 0.5 이상인 경계 상자 (BB)
  • FP : GT가있는 IoU가 0.5 미만인 BB와 이미 감지 된 GT가있는 IoU가있는 BB
  • TN : 실제 음수가 아니고 이미지에 하나 이상의 객체가 포함되어 있어야합니다.
  • FN :이 이미지는 BB를 생성하지 못한 방법입니다.

이제 예측 된 각 BB는 주어진 클래스에 대한 신뢰 값을 갖습니다. 따라서 채점 방법은 신뢰도 감소에 대한 예측을 정렬하고 예측 가능한 횟수까지 가능한 각 순위 k = 1에 대해 P = TP / (TP + FP) 및 R = TP / (TP + FN)을 계산합니다. 이제 각 등급에 대해 (P, R)을 얻습니다. P와 R은 "원시"정밀 리콜 곡선입니다. R의 각 값에 대해 보간 된 PR 곡선을 계산하려면 해당 R '> = R을 갖는 최대 P를 선택하십시오.

voc devkit doc 에 따르면 PR 곡선 점을 샘플링하는 두 가지 방법이 있습니다 . 2010 년 이전의 VOC Challenge의 경우 R이 0, 0.1, ..., 1 (11 포인트) 인 R '> = R에 대해 얻은 최대 P를 선택합니다. 그러면 AP는 각 Recall 임계 값의 평균 정밀도입니다. VOC Challenge 2010 이후에는 R '> = R에 대해 여전히 최대 P를 선택하고 R은 모든 고유 한 리콜 값 (0과 1 포함)에 속합니다. 그러면 AP는 PR 곡선 아래 면적 크기입니다. 일부 임계 값을 초과하는 Recall을 갖는 P 값이없는 경우 Precision 값은 0입니다.

예를 들어 "Aeroplane"클래스가 주어지면 다음과 같은 메소드 출력을 고려하십시오.

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

두 이미지에서 경계 상자가 감지되지 않았으므로 FN = 2입니다. 앞의 표는 GT = 1 방법이 TP이고 GT = 0 FP 인 방법의 예측에 대한 신뢰도 값에 따라 정렬 된 순위입니다. 따라서 TP = 5 (BB1, BB2, BB5, BB8 및 BB9), FP = 5입니다. rank = 3 인 경우 BB1이 이미 감지 되었기 때문에 정밀도가 떨어 지므로 개체가 실제로 존재하더라도 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
----------

이전 결과를 고려할 때 : voc2010 이전 방식을 사용한 경우 보간 된 정밀도 값은 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0, 0, 0입니다. 그러면 AP = 5.5 / 11 = 0.5입니다. "비행기"의 클래스. 그렇지 않고 2010 년 voc 이후 방식을 사용한 경우, 보간 된 정밀도 값은 0, 0.14, 0.29, 0.43, 0.57, 0.71, 1 인 7 개의 고유 리콜에 대해 1, 1, 1, 0.5, 0.5, 0.5, 0입니다. (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 인 경우 "비행기"의 클래스.

각 수업에 대해 반복하면 (mAP)가됩니다.

자세한 내용은 다음 링크 1 , 2 에서 찾을 수 있습니다 . 또한 자세한 내용 은 PASCAL Visual Object Classes Challenge : A Retrospective 를 참조하십시오.


1
천만에요! 예, 모든 이미지에서 계산해야합니다. IoU> 0.5 인 경우 GT는 1입니다. 마지막 FN 3 검출되지 개체에 대한 3이 될 것이다
feynman410

1
FN은 예측이 이루어지지 않은 이미지의 수이고, FP는 IoU <= 0.5 인 검출의 수 또는 두 번 이상 검출 된 수입니다. 이 의사의 참조 stats.stackexchange.com/a/263758/140597
feynman410

1
죄송합니다. 개체가 감지되지 않은 숫자입니다.
feynman410

1
@ feynman410 혼란스러워서 감지되지 않은 테이블 객체의 위치를 ​​알려주시겠습니까? 테이블 끝에서? (그들에 대한 점수가 없기 때문에)
마틴 Brišiak

1
따라서 "정밀"과 "호출"은 클래스별로 AP를 계산하기 위해 각 클래스에 대해 별도로 계산됩니다. 권리? 따라서 각 이미지에서 개별적으로 계산 된 다음 평균화됩니까, 아니면 모든 이미지에서 전체 감지에 대해 계산됩니까?
SomethingSomething

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.