Object detection에 대해 공부를 하다보면 평가지표로 mAP라는 개념을 사용하는 것을 볼 수 있다. mAP에는 IOU와 Precision, Recall의 개념이 베이스로 깔려있기 때문에 함께 정리를 하였다.
Intersectio over Union의 약자로 두 개의 Bounding box가 얼마나 일치하는지를 확인하기 위해 사용된다. 두 박스에 대해서 교집합 영역의 넓이 / 합집합 영역의 넓이로 정의할 수 있는데 그림을 보면 쉽게 이해할 수 있다.
mAP를 구하기 위해서는 우선 클래스 별 AP를 알아야 한다.
Confidence가 높은 box부터 계산하여 누적된 Precision과 Recall의 값을 표로 정리하면 다음과 같다.
Ground Truth(Acc TP + Acc FN)는 15개로 고정 상수이므로 Recall 계산 시에 분모는 항상 15이다.
첫번째 행부터 살펴보면 R의 IOU가 0.3 이상이므로 TP로 분류되고
Precision = TP/(TP+FP) = 1/1 = 1, Recall = TP/(TP+FN) = 1/15 = 0.066이 된다.
두번째 행을 보면 Y의 IOU가 0.3 미만이라 FP로 분류되고
Precision = TP/(TP+FP) = 1/2 = 0.5, Recall = TP/(TP+FN) = 1/15 = 0.0666이 된다.
이와 같은 방법으로 24개의 박스에 대해서 전부 누적한 결과값들을 도출할 수 있으며 Precision을 산발적으로 증감을 반복하며, Recall은 지속적으로 증가하는 모습을 보인다. Precision과 Recall의 변화를 그래프로 나타내면 다음과 같다.
위의 그래프를 Precision x Recall curve라 부르며 이 그래프의 AUC(area under the curve)를 구하면 AP가 되지만 계산에 어려움이 있어 두 가지 방법을 활용하게 된다.
Recall의 11개의 포인트(0, 0.1, ..., 1)를 잡아 interpolation 한다.
각 포인트는 현재 Recall보다 큰 Recall의 precision 중 가장 큰 값(max)에 찍게 되며 AP는 11개 포인트에서의 precision의 평균값이 된다.
AP = (1 + 0.6666 + 0.4285 + 0.4285 + 0.4285 + 0 + 0 + 0 + 0 + 0+ 0)
AP = 26.84%
원리는 동일하나 모든 점에 대해서 interpolation을 한다는 점만 달라졌다. intepolation을 한 결과 빨간색 점선으로 그래프가 단순화되어 그래프 아래의 면적을 구하기 용이해졌다.
AP = A1 + A2 + A3 + A4
A1 = (0.0666 - 0) x 1 = 0.0666
A2 = (0.1333 - 0.0666) x 0.6666 = 0.04446222
A3 = (0.4 - 0.1333) x 0.4285 = 0.11428095
A4 = (0.4666 - 0.4) x 0.3043 = 0.02026638
AP = 0.0666 + 0.04446222 + 0.011428095 + 0.02026638
AP = 0.24560955
AP = 24.56%
모든 클래스에 대한 AP를 구하면 각 클래스에 대한 AP의 평균을 계산하여 mAP를 구할 수 있다.