mAP와 IoU란 무엇인가?
컴퓨터 비전의 recognition task에는 대표적으로
classification, object detection, segmentation 이 있다.
이때 각 task마다 모델 성능을 나타내기 위한 지표가 있다.
classification: accuracy
object detection: mAP
segmentation: mAP, IoU
이때 classification의 accuracy는 말 그대로 모델의 전체 예측 중에서 올바르게 예측한 비율을 나타낸다.
$Accuracy = \frac{TP + TN}{TP + TN + FP + FN}$
정확도는 평소에 쉽게 접할 수 있는 metric이나, mAP와 IoU는 추가적인 이해가 필요하다.
1. mIoU란?
IoU란 Intersection over Union의 약자로 예측한 영역과 실제 영역간의 일치율을 나타내는 지표다.
IoU는 위와 같이 직관적으로 나타낼 수 있다.
좌측 박스가 예측 영역, 우측 박스가 실제 영역이라고 할때, 분모는 두 영역의 합집합이고 분자는 두 영역의 교집합이다.
영역의 단위는 2D Image에서 pixel 수가 되고 3D point cloud에서 point 수가 된다.
이 값이 1에 가까워 지려면 예측 영역과 실제 영역이 완전히 일치하면 된다.
그리고 class별 평균 IoU를 mean IoU 즉 mIoU라 한다.
2. mAP란?
보통 object detection이나 instance segmentation 논문을 보면 평가 지표로 mAP를 사용한다는 것을 알 수 있다.
이러한 task를 수행하는 딥러닝 모듈은 다음과 같은 출력을 낸다는 것을 짚고 넘어가야 한다.
예측 영역(box, mask), 예측 영역에 객체가 존재할 확률(objectness), 예측 영역에 대한 클래스 예측 확률
그리고 confidence score를 객체가 존재할 확률과 argmax class의 클래스 예측 확률을 곱하는 것으로 정의한다.
mAP는 mean average precision의 약자다.
먼저 precision은 모델이 참이라고 예측한 것 중 실제 참인 비율을 뜻한다.
$Precision = \frac{TP}{TP + FP}$
그리고 실제 모든 참 중에서 모델이 참이라고 예측한 비율을 recall이라 한다.
$Recall = \frac{TP}{TP + FN}$
이때 예측된 모든 box에 대해서 confidence score가 $T$보다 큰 box만 남긴 다음, precision과 recall값을 계산할 수 있다.
이를 그래프로 그린다고 할때, 임계값 $T$에서 precision 축에서 한 값, recall 축에서 한 값을 얻어 좌표값을 얻을 수 있을 것이다.
이때 $T$값을 0에서 1로 continuous하게 변화시키면 다음과 같은 형태의 곡선을 얻을 수 있다.
이 곡선을 PR curve라 하고, 이때 그래프의 아래 영역(파란색)을 우리는 average precision(AP)이라 정의한다.
이것을 이제 class별로 평균내어 합산하면 mAP가 되는 것이다.
3. mAP@IoU란?
우리는 논문들을 보면 mAP@50, mAP@75 등과 같이 뒤에 @IoU 조건이 붙는 것을 종종 볼 수 있다.
mAP@IoU란 예측된 box에서 IoU가 특정 값보다 큰 box만을 남긴 후 mAP를 산출한 값을 의미한다.
즉 confidence score를 계산하기 전에 먼저 box의 IoU를 측정하여, 특정 IoU보다 큰 box만을 남긴 다음
confidence score, recall, precision을 계산하는 것이다.
예를 들어 mAP@50을 계산한다고 하면, 먼저 box 영역들을 정답 box와 IoU를 계산하여 0.5보다 큰 box만을 남긴 후
남은 box를 가지고 PR Curve를 통해 mAP를 계산하면 된다.