*mAP란 mean Average Precision으로 Object Detection 분야에서 모델의 성능을 평가하는데 주로 사용되는 평가지표이다. 이를 이해하기 위해서는 precision(정밀도), recall(재현율), IoU에 대해서 먼저 알아야 한다. 먼저 아래 Confusion Matrix를 살펴보자.
- True Positive: 예측한 값이 참인데, 실제로도 참인 경우
- False Positive: 예측한 값이 참인데, 실제로는 거짓인 경우
- False Negative: 예측한 값이 거짓인데, 실제로는 참인 경우
- True Positive: 예측한 값이 거짓인데, 실제로도 거짓인 경우
이 때, Precision(정밀도)은 아래 수식과 같이, TP/TP+FP(참이라고 예측한 것 중에 실제로 참인 비율)이고, 재현율은 TP/TP+FN(실제로 참인 것 중에 참으로 예측 한 비율)이 된다. 다르게 말하면, 정밀도는 얼마나 예측이 정확한지를 측정하는 지표이고, 재현율은 얼마나 참인 것을 잘 찾았는지를 의미한다.
100명의 사람이 있는 사진 속에서 '사람을 잘 감지하는 모델'을 만들고 싶다고 가정하자. 만약 100명의 사람에 20000개가 넘는 예측 bounding box를 만들어서 100명을 모두 감지하면 좋은 모델일까?(재현율 1) 아니면 1개의 예측만 진행해 한 명을 잘 찾아내는 모델(정밀도 1)이 더 좋은 모델일까? 두 모델 모두 좋은 모델이라고 볼 수 없다. 그래서 object detection의 성능을 평가하기 위해서는 이러한 재현율과 정밀도가 모두 우수한 모델을 사용해야 한다.
이어서 IoU는 (Intersection over Union)의 줄임말로, 번역하면 합집합 분의 교집합이다. Ground truth(실제 object가 존재하는 바운더리)에 예측한 바운더리가 얼마나 겹치는 지를 나타낸 것으로 생각하면 되는데, 이러한 IoU를 threshold(임계값)로 사용하여 예측이 True positive인지, 혹은 false negative인지를 확인하는 지표로 사용될 수 있다.
아래의 표를 살펴보자, 이 표는 5개의 사과 그림 데이터셋에 대해서, bounding box 예측을 진행하고, 예측된 신뢰도 레벨을 기준으로 내림차순 정렬을 진행한 것이다.
두번째 열은 prediction이 옳은지 또는 그렇지 않은지를 의미하며, IoU값을 기준으로 0.5 이상이면 correct = True, 그렇지 않으면 False이다.
먼저 rank가 3rd인 row를 보고 정밀도와 재현율이 어떻게 구해졌는지를 살펴보면,
Precision은 TP의 비율이므로, 1st: correct, 2nd: correct, 3rd: incorrect이므로, TP/TP+TN인 2/3 = 0.67이 되고,
Recall 의 경우, 가능한 positive(5개 사과 이미지에 대한 ground truth) 5개 중, TP가 2개이므로(1st, 2nd) 2/5=0.4가 된다.
위 그림처럼, precision의 경우 TP가 나오느냐, FP가 나오느냐에 따라 오르락 내리락 하는 반면, recall은 TP가 나올 때 마다 증가하는 형태를 보인다. 이에 Recall 대비 Precision으로 그래프를 그려보면 아래와 같다.
위 그래프를 Precision-recall 커브라고 부른다. 여기서 mAP중 AP(Average Precision)의 정의는 커브 아래면의 면적을 의미한다. 수식은 아래와 같다.
Precision과 Recall이 항상 0과 1 사이에 있으므로, AP 또한 0과 1사이에 값으로 떨어진다. object detection을 위한 AP를 계산하기 전에 주로 지그제그 패턴을 아래와 같이 smoothing을 진행한다.
그래프적으로 보았을 때, 각 recall level에 대해 precision 값을 각 recall 레벨의 오른쪽 최댓값으로 대채한다. 여기서 orange 라인은 green 라인으로 변하게 되며, 커브는 지그제그 패턴이 아니라 단조롭게 줄어든다. 이러한 변환을 수학적으로 표현하면 아래와 같다.
이제 AP(Average Precision)을 구해보자. 먼저 recall 값을 0~1.0 까지 11개의 value로 나눈다. 다음으로 이 11개의 recall value들에 대해 아래와 같이 /11으로 average를 계산해 준다.
위 그래프의 경우 AP = (5x1.0 + 4x0.57 + 2x0.5)/11이 된다.
실제로는 이렇게 재현율이 1이 될때 까지는 진행하지 않고, precision값이 무시가능한 수준이 될 때 멈출 수 있다.
만약 class가 여러개인 경우, 여러 클래스에 대한 AP값들의 평균을 mAP라고 한다.
References: