mAP (mean Average Precision) 은 컴퓨터비전 분야인 object detection, 최근에는 pose estimation 분야에서도 모델 평가에 사용되는 지표다.
이를 이해하려면 precision 과 recall에 대해 알아야 하는데 머신러닝 수업에서 많이 들어봤을 것이다.
ground truth \ prediction | Positive | Negative |
Positive | True Positive | Fasle Negative |
Negative | False Positive | True Negative |
$$Precision = \frac{TP}{TP+FP}$$ $$Recall = \frac{TP}{TP+FN}$$
즉 precision 은 옳다고 예측한 것들 중에 실제 옳은 것의 비율, recall은 실제 옳은 것 중 옳다고 예축한 비율이다. 이들은 서로 반비례 관계를 갖기 때문에 accuracy (전체 데이터 중 TP 비율) 나 Precision, recall 하나만 고려하기 보단 precision recall curve 를 이용해 둘다 고려하는 편이 낫다.
Precision recall curve
Precision 과 recall을 축으로 삼아 표현하면 이렇게 반비례 관계임을 확인할 수 있다. 이를 단위별 precision의 평균값을 낸 것을 average precision이라고 하고 이를 모든 클래스 별로 평균낸 값을 mean Average Precision이라고 한다. 이는 precision recall curve가 위처럼 생겼을 때 저 Pr curve를 단조 감소 함수로 만들어 주기 위해 일정 단위로 나눈 모습이 왼쪽 그래프, 각 단위마다 아래 면젹 값을 계산하여 평균을 낸 모습이 오른쪽 그래프이다. 즉 이 Recall 단위 값에 따른 Precision 값들의 평균을 AP라고 한다. 한 클래스마다 AP 값을 계산 할 수 있으며 전체 클래스 갯수에 대해 AP를 계산하여 평균을 낸 값이 바로 mAP 이다.
IoU
예시로 object detection에서 mAP를 사용하는 방법에 대해 설명하면 모델이 고양이라고 예측한 bounding box(bbox) 가 위 빨간 박스라고 가정하자.
이때 이 예측된 빨간 bbox가 ground truth인 초록색 박스와 겹치는 부분이 Intersection over Union(IoU) 이다. 여기서 precision과 recall을 계산하려면 threshold가 필요한데,
위처럼 threshold가 0.5일때 이하값이 나오면 FP로 분류하고, 0.5이상이 나오면 TP로 분류하게 된다. 이런식으로 사진 내 모든 객체에 대해 IoU를 계산 후, TP, FP, FN을 계산해 precision recall값을 구해 PR curve의 아래 면적으로 AP를 계산한다. 이를 모든 객체 클래스로 평균을 내면 mAP 완성!
참고 - 블로그
댓글