[딥러닝] mAP(mean Average Precision)이란?
Computer Vision

[딥러닝] mAP(mean Average Precision)이란?

반응형

 

엊그제 주간업무회의 도중에 A가 B에게 말했습니다.

 

 

"이건 mAP가 아니라 IoU 아닌가요? 제대로 적은거 맞나요?!"

 

 

저는 뭔지 몰라서 조용히 있었습니다...

(변명하자면,, 제 파트가 아니였어요ㅠ_ㅠ)

 

 

이제는.. IoU, mAP관련 이야기가 나오면

"그 수치는 mAP가 아니라 IoU죠!"

라고 말하는 멋쟁이가 되기 위해 공부했습니다.

 

 

여러분에게 쉽게 설명드릴테니

우리 같이 멋쟁이가 되어 봅시다!!  : )


 

우선,

mAP에 대해서 이해하기 전에,

우리는 총 3가지 개념을 먼저 알아야 이해가 수월합니다.

  • IoU + Confusion Matrix(TP, FN, FP, TN)
  • Precision
  • Recall

 

 

IoU 포스팅을 통해서

IoU + Confusion Matrix(TP, FN, FP, TN)에 대해 이해가 되실 테고,

Precision, Recall은 TP, FN, FP, TN에 대해 계산만 한 것이기 때문에, 전혀 어렵지 않습니다.

아래에서 쭈-욱 설명드릴게요!

 

 

 

자, 그럼 스트레칭 한번 하시고

--

바로 들어가시죠.

 

 

 

 

목차 :

  1. Why mAP?
  2. What mAP?
    1. IoU + Confusion Matrix
    2. Precision
    3. Recall
  3. Where mAP?

 

 

 

 

 

 

 

1. Why mAP?


자, 우리는 Object Detection 분야에서 성능평가 지표로써

왜!?  mAP 를 사용할까요?

 

 

"mAP는 OD분야에서 정확도를 한눈에 파악할 수 있는 평가 지표이다."

 

 

우리는 성능평가를 실시할 때, mAP를 통해서

'정확도'를 '한눈에' 파악할 수 있기 때문에 사용합니다.

 

 

성능 평가는 크게 2가지 범주로 나뉘어요.

정확도 속도

그 중에 '정확도'와 관련있는 지표가 mAP 입니다.

 

 

그리고, 예시를 하나 가져와 봤어요.

아래 사진은 YOLOv5 모델별 성능을 요약한 표 인데요.

Github를 돌아다니시면서 종종 보셨을 Table이죠?

https://github.com/ultralytics/yolov3

우리는 위 사진 속 표의 mAP를 맛있게 이해하는게 목표입니다.

 

 

 

 

 

 

 

2. What mAP?


자, mAP를 왜 사용한다 했었죠?

mAP는 Object Detection 분야에서 모델의 정확도한눈에 판단할 수 있기때문에 사용합니다.

 

 

왜 제가 "한눈에" 라는 키워드를 강조할까요?

 

 

자,

트럭이라는 1개의 Object를 Detection한다면,

'트럭의 AP', 이것 하나만 있으면 모델의 성능을 파악할 수 있어요.

 

 

하지만, 다중 Object Detection의 경우,

검출하고자 하는 Object의 수 만큼의 AP가 존재하게 되는데

이는, 모델의 정확도를 "한눈에" 파악하기 어렵습니다.

 

 

그리고 요즘에는 단일 Object Detection을 사용하는 경우가 많이 없으니까,

mAP를 성능 평가 지표로써 더 자주 사용하게 되는 것 같습니다.

30개 Object별 AP입니다. 모델 성능을 한눈에 파악하기 조금 힘들지 않나요?

더보기
대신,
해당 Object별 AP를 디테일하게 봐야하는 상황이라면,
위 그림처럼 mAP보다는 AP의 단순나열이 더 활용가치가 있어보이네요!

 

 

 

자, 그래서 우리의 조상님들(?)이 AP의 평균(mean)을 내서

mAP라는 수치로 모델의 성능을 "한눈에" 비교하도록 만들어 놓은 거예요.

YOLOv5 모델 별 mAP 값 비교를 통해 정확도를 "한눈에" 파악 가능합니다.

 

 

오호~!, 그럼

mAP가 AP의 평균(mean)으로써 모델의 성능을 '한눈에' 파악할 수 있도록 도와주는 건 알겠습니다.

그럼, AP(Average Precision)는 뭘까요?

 

 

우리는 AP를 이해하기 위해서는 아래 키워드를 먼저 이해 할 필요가 있습니다.

더보기 를 클릭하시면 내용이 나옵니다.

어려운 내용이 없으니 차근차근 읽으시면 이해하실 수 있으실 거예요.

 

  • Confusion Matrix(TP, FP, TN, FN)
더보기

 

IoU 포스팅 내용과 동일한 내용입니다.


 

\ Prediction
(예측 결과)
Positive Negative
Ground Truth
(실제 정답)
Positive TP
(True Positive)
예측 : 검출O
정답 : 검출O
FN
(False Negative)
예측 : 검출X
정답 : 검출O
Negative FP
(False Positive)
예측 : 검출O
정답 : 검출X
TN
(Ture Negative)
예측 : 검출X
정답 : 검출X

자, 상상해봅시다.

만약 우리가  "트럭"을 검출하는 인공지능 모델을 가지고 있으며,

고속도로 영상에서 트럭을 검출해내는 상황이라고요.

(트럭 외에 다른 학습 데이터(버스, 승용차 등)는 사용하지 않았다고 가정)

 

 

그 인공지능 모델이 실제 정답(GT) 트럭을 정확하게 검출한다면 "TP"입니다.

 

 

하지만, 그 인공지능 모델은 버스를 보고도 트럭이라고 검출할 수 있겠죠.

이 경우를 "FP"라고 합니다.

검출을 해내긴 했지만, 정답이 아닌걸 검출한 것이지요.

 

 

자, 그럼 "FN"은 무엇일까요?

고속도로 영상에서 우리의 인공지능 모델은 트럭을 찾지 못했지만, 실제로는 트럭이 있는 경우죠.

철조망이나 다른 차량에 가려져서 제대로 인식하지 못한 경우일 거예요.

 

 

그렇다면 마지막, "TN"

고속도로 영상에서 트럭은 없었고,

우리가 가진 인공지능 모델 또한 트럭을 검출하지 않은 것을 의미합니다.

 

 

 

  • Confidence
더보기

Object Detection 모델은 아래 2가지를 반환합니다.

Bounding Box 좌표 값, Confidence 값

 

한마디로,

"나 인공지능은 좌표 값 (100, 100) (200, 200) box 부분에 트럭이 있다고 80% 만큼 확신해"

라고 말하는 것입니다.

 

이 모델은 다수의 Bounding Box를 예측하며,

그 예측한 Box마다 Confidence를 반환 하는데,

그렇게되면 Bounding Box가 너무 많겠죠?

그래서 IoU 임계값(threshold)을 정해주는 것입니다.

 

해당 모델의 정확도를 파악하기 위해,

threshold 값 아래의 Bounding Box를 표시하지 않기 위해

IoU가 존재하는 것입니다.

 

 

 

  • Precision (정확도, 얼마나 자주 올바르게 예측하는지)
더보기

Precision(정확도)은 옳은 검출(TP) / 모든 검출(All Detections) 입니다.

 

대부분의 사람들이 Precision을 '정밀도'라고 직역하시는데,

저는 '정확도'라고 의역하는 것이 더 와닿더라구요.

 

모든 검출 중에 옳은 검출의 비율이니까, '정밀도' 보단 '정확도'.. !

 

 

 

  • Recall (검출율, 얼마나 옳게 검출하는지)
더보기

Recall(검출율)은 옳은 검출(TP) / 모든 정답(All GT) 입니다.

 

이것 또한 대부분 '재현율'이라고 직역하시는데

저는 '검출율'이라고 의역해서 이해했습니다.

 

모든 정답 중에 옳은 검출의 비율이니까, '재현율' 보단 '검출율'..!

 

 

 

 

 

위 내용을 읽어보셨다면,

이어서 가겠습니다.

 

 

자,

AP(Average Precision)는 0~1 사이의 모든 Recall에 대응하는 Precision의 평균입니다.

말이 한번에 이해하기 어렵죠?

디테일하게 들어가보죠.

 

AP는 P-R Curve에서 구할 수 있는데,

PR Curve 사진

P-R Curve는 값의 업다운이 심하며,

자주 교차하는 경향이 있기 때문에

비교하는 것이 쉽지가 않습니다.

 

 

따라서,

AP의 평가지표는 계속해서 발전해나갔습니다.

(구체적인 내용은 '더 알아보기'에서 확인.)

 

 

그 중, 현재 자주 쓰이는 AP 계산 방식은 2가지 입니다.

  1. 11점 보간법 (11-point interpolation)
  2. 모든 점 보간법(interpolating all point)

 

관련하여 잘 정리된 페이지를 공유합니다. (클릭)

한번 보고 오셔서 보간법 계산하는 과정을 이해하시면 되겠습니다.

 

 

나아가,

mAP는 2. 모든 점 보간법(interpolating all point)을 이용해서 구한 AP 값의 평균입니다.

 

 

 

 

더 알아보기

평가 지표 관련해서 재밌는 히스토리가 있으니 참고하길 바랍니다.

더보기

우리는 지금 mAP라는 평가지표를 향해 달려가고 있지만,

과거에는 시간이 흐름에 따라 평가 지표가 변화해 왔습니다.

 

*PASCAL VOC(Pattern Analysis, Statistical Modeling and Computational Learning) 챌린지 :

Computer Vision 분야의 기술 중 object class recognition 기술을 겨루는 국제 대회

 

 

ROC-AUC 평가 지표 (ROC-AUC Metric) | PASCAL VOC 2005

해당 평가 지표는 분류(Classification) 모델을 평가하는 데 사용 되었습니다.

TPR = TP / (TP+FN)

FPR = FP / (FP+FN)

 

 

 

11점 보간 AP (11 Point Interpolation AP) | PASCAL VOC 2007 

PR Curve의 아랫 영역의 면적을 구할 때, 11점 보간 법을 활용하여 면적을 구하는 방법인데요.

이 방법은 2007년 PASCAL VOC 대회에서 'IoU threshold 0.5'를 기준으로 계산했다고 해요.

ROC-AUC 평가 지표보다 더 정확한 평가 지표로써 자리 잡았었고,

낮은 Recall에서 성능을 확인하는데 유용했다는 평가를 받았고,

평가 지표로서 모델을 해석할 때 더 유용했었다고 하네요

 

 

 

PR-AUC | PASCAL VOC 2010

PR-AUC는 PR Curve 아랫 면적의 '정확한 면적'을 구하는 방법인데요.

이 또한 IoU threshold 0.5를 기준으로 계산했었어요.

11점 보간 방법과 다르게 Precision값을 보간하지도, 최종값을 11로 나누지도 않는 방법이였어요.

 

 

101점 보간 AP (101 Point Interpolation AP) | MS COCO 2014

이때까지 PASCAL VOC가 도입한 평가 지표들은 표준으로 활약했지만,

시간이 지남에 따라서 모델들이 점차 포화되기 시작했고,

점수가 동일한데도 성능은 떨어지는 등의 현상이 발견되기 시작했어요.

그래서 Micorsoft COCO 2014년에 101점 보간 AP를 도입했습니다.

이는 PR Curve 아래에서 AUC의 더 나은 근사치입니다.

 

바로 MS COCO에서 

mAP@0.5mAP@[0.5:0.05:0.95]로 재정의 했습니다.

IoU를 0.5 뿐만아니라 0.05의 Step으로 0.95까지 같이 평가하자는 것이였죠.

mAP의 수치 차이가 많이 나 보이네요!

 

 

 

 

 

 

 

 

 

 

 

3. Where mAP?


자, 우리는 AP와 mAP에 대해서 심도있게 알아보았습니다.

그래서, mAP가 어디에서 어떻게 사용되는지 이해하기위한 사진을 준비하였습니다.

 

COCO Dataset, PASCAL VOC 2012 Dataset 기반, AP와 mAP 계산 결과 비교 표

mAP와 AP는 위와 같이 성능 지표를 한눈에 파악할 수 있게 도와줍니다.

TABLE II에서는, 모델 별 AP@IoU=0.50~0.95의 값을 비교하면서,

TABLE III에서는, mAP의 값을 비교하면서

한눈에 해당 모델의 성능을 비교하는데 활용됩니다.

 

 

 

 

 

반응형