본문으로 바로가기

Detection 성능 평가를 위한 AP(Average Precision)

category AI/CV & SSL 2019. 11. 27. 23:08
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

 

 

 

[Precision & Recall]

Precision은 네트워크가 검출해낸 모든 물체 중 정답인 것들의 비율이다.

이 때 검출해낸 물체들의 정답유무와 관계없이 총 개수를 세면 된다.

예를 들어, Detection을 하는 네트워크가 5개의 물체를 검출했을 때 그 중 3개만이 정답이면

Precision은 3/5 = 0.6 이 된다.

 

Recall은 검출해낼 수 있는(=label 붙어있는) 모든 물체 중 검출해낸 물체의 비율이다.

예를 들어, 실제로 검출가능한 총 물체가 5개이고 그 중 1개만을 검출해냈다면 

Recall은 1/5 = 0.2 가 된다.

 

 

[TP, FN, FP, TN]

위의 그림에서 4개의 단어를 볼 수 있다.

쉽게 이해하자면 ... 앞의 단어와 뒤의 단어를 쪼개서 보면된다.

 

Positive : 검출됨.

Negative : 검출되지 않음.

True : 옳음.

False : 틀림.

 

Positive/Negative 를 먼저 해석하고 True/False를 해석해주면 쉽다.

TP(true positive) : 검출되었고(positive) 그게 옳다. (true)

FN(false negative) : 검출되지 않았고(negative) 그게 틀렸다. (false) == 검출했었어야 했다.

FP(false positive) : 검출되었고 그게 틀렸다. == 검출되지 말았어야 했다.

TN(true negative) : 검출되지 않았고 그게 옳다.

 

 

위 그림을 참고하자.

그러나 Precision만으로 detection 알고리즘 성능을 평가하는 것은 적절하지 않고 Recall 또한 그러하다.

이 두 값은 항상 0 ~ 1사이의 값으로 나오며 서로 반비례하는 경향을 보인다.

이 두 값을 이용해서 종합적으로 성능을 평가하기 위해 Precision-recall(PR) 곡선 및 AP를 사용한다.

 

 

[Precision-Recall curve (PR curve)]

PR 곡선은 confidence 레벨에 대한 threshold값의 변화에 의한 물체 검출기의 성능을 평가하는 방법이다.

confidence는 알고리즘 자신이 해당 detection에 있어서 얼마나 자신이 있는지를 의미하며 절대적인 지표는 아니다.

알고리즘이 자기 자신의 confidence가 높다고 해도 혼자만의 착각일 수 있다는 의미이다.

 

그러나 confidence가 낮은 경우에는 걸러내는 역할을 하기도 한다.

confidence 레벨에 대해 threshold 값을 부여하여 그 이상의 confidence를 가져야만 검출된 것으로 인정한다.

이에 따라서 검출되는 개수에 변동이 오므로 precision과 recall 값들이 threshold에 따라 달라지게 된다.

 

 

예를 들어보자.

총 검출이 될 수 있는 object는 10개가 있다고 하자. 

이 때 detection이 된 object는 모두 8개였다. (confidence는 0~100 까지 모두 고려)

 

 

검출된 8개 중 3개는 잘못 검출되었고 5개만 잘 검출했다.

이 때 precision = 5/8 = 0.625 이고 recall = 5/15 = 0.333 이 된다.

물론 이 때는 confidence 에 대해 threshold 값을 설정하지 않은 상태이다.

 

 

이번에는 confidence 내림차순으로 정렬을 한다.

 

 

위와 같이 정렬 후에 차근차근 threshold값을 낮춘다라고 생각하자.

예를 들어 threshold가 90%로 적용한다면 4번 object하나만 검출이라고 판단되며

이 때 precision = 1/1 = 1 이고 recall =  1/15 = 0.0667 이 된다.

 

threshold값을 차근차근 내려가며 검출되는 object를 하나씩 늘려보면 아래 표와 같이 된다.

 

 

위의 표를 이용하여 PR 곡선을 그리면 아래와 같다.

 

X축이 Recall , Y축이 precision이다.

즉 recall 값에 따른 precision 값의 변화를 그래프로 그려놓은 것이 PR curve이다.

 

 

 

[Average Precision (AP)]

AP는 PR 곡선의 아래면적으로 계산된다. 

그러나 대게 면적 계산 전에 PR 곡선을 다듬어준다.  단조적으로 감소하는 그래프가 되도록...

 

빨간 점선을 따라 단조적으로 감소하는 그래프로 만들어준 다음 아래의 면적을 구하기 위해서

A + B 를 구한다.

A = 1 * 0.2 = 0.2 

B = (0.333 - 0.2) * 0.83 = 0.110

 

A + B 는 0.310이 되고 이 면적값이 AP(Average Precision)를 의미한다.

 

 

실제 detection 알고리즘은 여러가지 클래스를 동시에 검출하기 때문에 각 클래스당 AP를 구하여

모두 합하고  그 합한 값을 클래스의 개수로 나눠줌으로써 평균값을 얻을 수 있다.

이 때 이 AP의 평균값을 mAP(mean Average Precision)이라고 부른다.

 

 

 

 

게시글은 https://bskyvision.com/465을 읽고 본인이 이해한대로 정리한 것입니다.