mAP(Mean Average Precision) 정리

2020. 7. 12. 01:53

☞    문서의 내용은 가장 하단 참고문헌 및 사이트를 참고하여 필자가 보기 쉽도록 정리한 내용입니다.

☞    틀린 내용 및 저작권 관련 문의가 있는 경우 문의하시면 수정 및 삭제 조치하겠습니다.


mAP

합성곱 신경망(Convolutional Neural Network CNN)의 모델 성능 평가는 아래 그림과 같이 mAP를 이용하여 평가하는 것을 볼 수 있다. mAP를 이해하기 위해서는 우선 precision, recall , AP(Average Precision)에 대해 이해해야 한다. 

※ Precision-recall 곡선과 , Average precision은 컴퓨터비전(Computer Vision)에서 물체 검출(Object Detection) 알고리즘 성능 평가를 위해 사용되는 방법이다.

 

 

 

 

예를 들어 2개의 알고리즘이 있다고 하자, 첫 번째 알고리즘은 사람을 검출할 수 있는 검출율이 99%이다. 하지만 1장당 10건 정도의 오검출이 발생된다. 두 번째 알고리즘은 검출율이 50%이다. 하지만 오검출이 발생하지 않는다. 이런 경우 어떤 알고리즘이 더 좋다고 평가할 수 있을까? 응용에 따라 달라질 수 있지만 검출율 만으로 기술을 평가하는 것은 적합하지 않다. 그렇기 때문에 물체의 인식 및 탐지 기술의 성능을 평가하기 위해서는 검출율과 정확도를 동시에 고려해야 한다.

왼쪽 이미지 - 검출율 99% 오검출 10건] [오른쪽 이미지 - 검출율 50% 오검출 없음

 

 

 


Precision-Recall

Precision-Recall에 대해 설명하기 전 표[1]의 약자의 의미를 알아두도록 하자.

※ Precision, Recall의 수식을 설명하기 위해 필요한 내용입니다.

실제 상황
(ground truth)
예측 결과
(predict result)
Positive Negative
Positive TP(true Positive)
옳은 검출
FN(false negative)
검출되어야 할 것이
검출되지 않음
Negative FP(false positive)
틀린 검출
TN(true negative)
검출되지 말아야할 것이
검출되지 않음

 

 

 

Precision과 Recall에 대해 설명하기 이전에 "물체를 옳게 검출되었다." , "물체를 옳게 검출되지 않았다."를 구분해 주는 기준에 대해 알아보도록 하자.


Intersection over union(IoU)

아래의 그림에 사용자가 인물의 위치에 바운더리 박스를 적용했다고 가정해보자.

 

 

 

아래의 그림은 바운더리 박스가 주어지지 않은 상황에서 어떤 알고리즘이 예측한 바운더리 박스라고 가정해보자.

 

 

 

이때 알고리즘이 설정한 바운더리 박스가 맞는지 틀린 지를 결정하기 위해서 나온 것이 IoU이다.  IoU는 아래의 그림과 같이 구해진다. 예측된 바운더리 박스와 사용자가 설정한 바운더리 박스 간 중첩되는 부분의 면적을 측정해서 중첩된 면적을 합집합의 면적으로 나눠준다.

 

 

 

IoU의 계산 결과 값이 0.5 이상이면 제대로 검출(TP)되었다고 판단한다. 만약 0.5 미만이면 잘못 검출(FP)되었다고 판단한다. (이 값은 임의의 값으로 설정할 수 있다.)

※ Intersect over Union[IoU]  C++ , Python 코드는 링크에서 확인 할 수 있습니다.


Precision

Precision은 정확도를 의미하며 검출 결과들 중 옳게 검출한 비율을 의미한다.

Precision은 아래의 식과 같이 나타낼 수 있다.

예를 들어 알고리즘이 사람 10명을 검출했는데 그 중 4명을 옳게 검출해낸 것이라면 Precision은 4/10 = 0.4이다.


Recall

Recall은 검출율을 의미하며, 실제 옳게 검출된 결과물 중에서 옳다고 예측한 것의 비율을 의미한다.

Recall은 아래의 식과 같이 나타낼 수 있다.

※Recall을 정확히 번역하면 '재현율'이다. 하지만 일반인의 용어로서 그리고 보다 직관적이라고 생각되는 '검출율'로 표현했다.

예를 들어 10개의 옳게 검출된 결과물 중에서 옳다고 예측한 것이 5개라고 예측했다면 recall은 5/10 = 0.5가 된다.

예를 들어 10개를 옳게 검출해야하는데 5개만 옳다고 예측했다면 recall은 5/10 = 0.5가 된다.


 

일반적으로 정확도(precision)와 검출율(recall)은 서로 반비례 관계를 가진다. 정확도가 높으면 검출율은 낮아지고, 정확도가 낮아지면 검출율은 올라간다. 따라서 정확도와 검출율의 성능 변화 전체를 확인해야 한다. 그러한 대표적인 방법이 precision-recall 그래프를 이용하는 것이다.


Precision-recall 곡선

Precision-recall 곡선(PR곡선)은 물체를 검출하는 알고리즘의 성능을 평가하는 방법 중 하나로 confidence 레벨에 대한 threshold 값의 변화에 따라 precision과 recall 값들도 달라진다. confidence는 검출한 것에 대해 알고리즘이 얼마나 정확하다고 생각하는지 알려주는 값이다. 만약 어떤 물체를 검출했을 때 confidence 레벨이 0.99라면 알고리즘은 그 물체가 검출해야 하는 물체와 거이 똑같다고 생각하는 것과 같다. 하지만 confidence레벨이 높다고 해서 무조건 정확한 것이 아니다. 알고리즘이 그저 학습한 것에 따른 정확도를 나타내는 것이다. 사용자는 보통 confidence 레벨에 대해 threshold 값을 부여해서 특정값 이상이 되어야 검출된 것으로 인정한다. threshold 값이 0.4라면 confidence 레벨로 0.1,0.2,0.3을 갖는 검출은 무시하는 것이다. 따라서 이 confidence 레벨에 대한 threshold 값의 변화에 따라 precision과 recall 값들도 달라질 것이다. 이것을 그래프로 나타낸 것이 바로 PR곡선이다. 15개의 번호판이 존재하는 이미지에서 총 10개의 이미지가 검출되었다고 가정해보자. (confidece 레벨 0부터 100%까지 모든 번호판을 검출한다는 전재이다.)

 

Detection Plate Confidence TP or FP
54 가
4864
43% TP
85 노
7452
25% TP
12 나
9845
95% TP
48 오
4822
88% TP
48 다
4563
10% FP
89 고
1233
55% FP
88 허
7877
78% TP
77 다
4456
66% TP
38 고
4562
75% TP
74 보
5625
32% FP

 

10개 중 7개가 제대로 검출되었고, 3개는 잘못 검출되었다. 이때 Precision = 옳게 검출된 번호판 개수/ 검출된 번호판 개수 = 7/10 = 0.7이 되고, Recall = 옳게 검출된 번호판 개수/ 실제 번호판 개수 = 7/15 = 0.47이 된다. 이 것은 confidence레벨이 10%와 같이 아주 낮더라도 검출해낸 것은 모두 인정했을 때의 결과이다.

 

Detection Plate Confidences TP or FP
48 오
4822
95% TP
12 나
9845
85% TP
88 허
7877
78% TP
38 고
4562
75% TP
77 다
4456
66% TP
89 고
1233
55% FP
54 가
4864
43% TP
74 보
5625
32% FP
85 노
7452
25% TP
48 다
4563
10% FP

 

이번에는 검출된 결과를 confidence레벨에 따라 재정렬 해보자. confidence 레벨에 대한 threshold 값을 아주 엄격하게 적용해서 90%로 했다면, 하나만 검출한 것으로 판단할 것이고, 이때 Precision = 1/1 = 1, Recall = 1/15 = 0.067이 된다. threshold 값을 85%로 했다면, 두 개가 검출된 것으로 판단할 것이고, 이때 Precision = 2/2 = 1, Recall = 2/15 = 0.13이 된다. threshold 값을 검출들의 confidence 레벨에 맞춰 낮춰가면 다음과 같이 precision과 recall이 계산될 것이다.

 

Detections Confidences TP or FP 누적 TP 누적 FP Precision Recall
48 오
4822
95% TP 1 - 1/1
= 1
1/15
= 0.067
12 나
9845
85% TP 2 - 2/2
= 1 
2/15
= 0.13
88 허
7877
78% TP 3 - 3/3
= 1
3/15
= 0.2
38 고
4562
75% TP 4 - 4/4
= 1
4/15
= 0.27
77 다
4456
66% TP 5 - 5/5
= 1
5/15
= 0.33
89 고
1233
55% FP 5 1 5/6
= 0.83
5/15
= 0.33
54 가
4864
43% TP 6 1 6/7
= 0.86
6/15
= 0.4
74 보
5625
32% FP 6 2 6/8
= 0.75
6/15
= 0.4
85 노
7452
25% TP 7 2 7/9
= 0.78
7/15
= 0.47
48 다
4563
10% FP 7 3 7/10
= 0.7
7/15
= 0.47

 

이 Precision 값들과 Recall값들을 아래와 같이 그래프로 나타내면 그것이 바로 PR곡선이다. PR 곡선에서 x축은 recall 값이고, y축은 precision값이다. 즉, PR 곡선에서는 recall 값의 변화에 따른 precision값을 확인할 수 있다.

 


Average Precision (AP)

precision-recall 그래프는 어떤 알고리즘의 성능을 전반적으로 파악하기에는 좋으나 서로 다른 두 알고리즘의 성능을 정량적(quantitatively) 비교하기에는 불편한 점이 있다. 그래서 나온 개념이 Average precision이다. Average precision은 인식 알고리즘의 성능을 하나의 값으로 표현한 것으로서 precision-recall 그래프에서 그래프 선 아래 쪽의 면적으로 계산된다. Average precision이 높으면 높을수록 그 알고리즘의 성능이 전체적으로 우수하다는 의미이다. 컴퓨터 비전 분야에서 물체인식 알고리즘의 성능은 대부분 Average precision으로 평가한다.

 

보통 계산 전에 PR곡선을 단조적으로 감소하는 그래프로 변경해준다. 이렇게 바꾼 다음에 그래프 선 아래의 넓이를 계산함으로 AP를 구한다. 이 경우 AP = 왼쪽 큰 사각형의 넓이 + 중간 작은 사각형의 넓이 + 왼쪽 작은 사각형의 넓이 = 1 * 0.33 + 0.86 * (0.4-0.33) + 0.77 * (0.46 - 0.4) = 0.4364가 된다.

 

컴퓨터 비전 분야에서 물체 검출 및 이미지 분류 알고리즘의 성능은 대부분 이 AP로 평가한다. 물체 클래스가 여러 개인 경우 각 클래스당 AP를 구한 다음에 그것을 모두 합한 다음에 물체 클래스의 개수로 나눠줌으로 알고리즘의 성능을 평가한다. 이것을 mAP(mean average precision)라고 한다. 

 


참고자료

 

물체 검출 알고리즘 성능 평가방법 AP(Average Precision)의 이해

물체 검출(object detection) 알고리즘의 성능은 precision-recall 곡선과 average precision(AP)로 평가하는 것이 대세다. 이에 대해서 이해하려고 한참을 구글링했지만 초보자가 이해하기에 적당한 문서는 찾�

bskyvision.com

 

 

precision, recall의 이해

자신이 어떤 기술을 개발하였다. 예를 들어 이미지에서 사람을 자동으로 찾아주는 영상 인식 기술이라고 하자. 이 때, 사람들에게 "이 기술의 검출율은 99.99%입니다"라고 말하면 사람들은 "오우..

darkpgmr.tistory.com

 

 

(PDF) Livestock detection in aerial images using a fully convolutional network

PDF | In order to accurately count the number of animals grazing on grassland, we present a livestock detection algorithm using modified versions of... | Find, read and cite all the research you need on ResearchGate

www.researchgate.net

 

 

정밀도와 재현율 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 이진 분류 기법(binary classification)을 사용하는 패턴 인식과 정보 검색 분야에서, 정밀도는 검색된 결과들 중 관련 있는 것으로 분류된 결과물의 비율이고, 재현��

ko.wikipedia.org

COMMENT

  • 딥린이 2020.09.24 08:57 진짜 진짜 너무 감사합니다.
    이렇게 자세한 설명은 여기가 처음 입니다.
  • 박준태 2021.03.15 15:50 영어논문으로 이해하기가 굉장히 어려웠는데 덕분에 한번에 이해할 수 있어 좋았습니다. 감사합니다!
  • BlogIcon 전자둥이 2021.04.30 08:51 신고 도움이 많이 되었어요~
  • BlogIcon suhkream 2021.05.02 20:58 신고 좋은 글 감사합니다. 덕분에 쉽게 이해했습니다.
  • BlogIcon 비기너유저 2021.06.17 17:38 신고 먼저 자세한 설명 감사합니다.
    Recall 부분에 대한 예시가 조금 헷갈리는 것 같습니다. 10개의 옳게 검출된 결과물중에서 옳다고 예측한 것이 5개라는 표현이 맞지 않는 것 같습니다.
    10개의 검출해야할 사물 중 5개를 검출한것이라는게 맞지 않나요?
  • BlogIcon gogo5911 2021.08.23 23:07 신고 안녕하세요! 저의 글을 읽어주셔서 감사합니다. 의견 주신 부분을 읽어보니 비기너유저님이 말씀하신 것 처럼 혼동되는 부분이 있어 수정했습니다. 다시 한번 의견 감사합니다!
  • 문박사 2021.12.16 22:12 원문으로 된 자료 중에도 여기만큼 이해하기 쉽게 설명된 곳이 드뭅니다.

    감사합니다.
  • heriun 2022.04.29 10:57 pr curve 사각형 넓이 설명하실때, 왼쪽 작은 사각형이 아니라 오른쪽 작은 사각형이네요!