굴러가는 분석가의 일상

[Object Detection] mAP(Mean Average Precision) 평가지표 본문

Computer Vision

[Object Detection] mAP(Mean Average Precision) 평가지표

G3LU 2024. 3. 20. 05:13

※ 본 게시물에서는 Object detection의 평가지표인 mAP(Mean Average Precision)에 대해 알아보도록 하겠습니다. mAP 평가지는 IoU와 Precision/Recall의 개념이 기반이 되기에, 함께 알아보도록 하겠습니다. 

 

💡 IoU (Intersection over Union)

분류(Classification)문제 같은 경우, 단순히 예측/실제 Class가 일치하거나 불일치한 것을 구분하면 됩니다. 이러한 개념은 객체탐지에서 도 비슷하게 적용합니다. Ground Truth Bounding Box와 Predicted Bounding Box를 비교하여 모델의 성능을 비교하면 되지만, 이 두가지 값은 모델의 다양한 파라미터로 인하여 일치하는 경우가 거의 없기때문에, 쉽지가 않습니다. 이에 예측된 Bounding Box와 Ground Truth가 일치하거나 불일치한 것을 보는 것 보다, 두 영역이 얼마나 일치하는지를 평가하는 지표가 필요합니다. 그 지표가 바로 IoU(Intersection over Union)인 것 입니다. 아래의 예시를 통해 깊게 알아보도록 하죠.

 

 

 

즉, Prediction과 Ground-Truth의 영역의 <교집합/합집합>을 통해 IoU를 구할 수 있습니다. IoU 값은 0(두 개의 영역이 겹치지 않을 경우) ~ 1(두 개의 영역이 완벽하게 겹칠 경우) 사이의 값이라는 것을 알 수 있습니다. IoU는 0.5을 기준으로 검출의 정확도 여부를 가립니다. 0.5이상 이라면 좋은 결과이고, 0.5미만 이라면 안좋은 결과를 뜻합니다. 


💡 Precision(정밀도) & Recall (재현율)

정밀도(Precision)는 모델이 찾은 객체 중에서 실제로 해당 객체인 것의 비율이며, 아래의 식으로 나타낼 수 있습니다. 

 

재현율(Recall)은 실제로 있는 모든 객체 중에서 모델이 착아낸 객체의 비율이며, 아래의 식으로 나타낼 수 있습니다. 

 

더 자세하게 Object Detection에서는 P와 N은 검출 알고리즘이 예측을 했는지(P) 안했는지(N)를 나타내며, T와 F는 결과적으로 예측이 실제와 일치하여 예측 오류가 안났는지(T) 예측과 실제가 달라 예측 오류가 났는지(F)를 나타냅니다. 

 

객체탐지를 위해서는 Label Class와 해당 클래스의 Bounding Box가 Classification과 Localization에 의해 생성되며, 이를 확인하기 위해 검출 예측과 실제와 실체하는지 파악해줘야 할 필요가 있습니다. 이때, Bounding Box는 위에 언급되었던 IoU(Intersection over Union)의 임계값에 의해 결정됩니다. 아래의 그림을 통해 조금 더 알아보도록 하겠습니다. 

  • True Positive - 예측과 실제가 일치하여 오류가 없으며, 알고리즘이 제대로 예측을 하였음(Class Label 동일하며, IoU의 임계값이 0.5 보다 높음) 
  • False Positive -  예측과 실제가 달라 오류가 발생하였으며, 알고리즘이 제대로 예측을 하였음(Class Label이 다르며, IoU 임계값이 0.5보다 낮음) 
  • False Negative - 예측과 실제가 달라 오류가 발생하였으며, 알고리즘이 제대로 예측하지 못하였음

💡 Precision-Recall 곡선 

Precision-Recall Trade off


일반적으로 정밀도(Precision)과 재현율(Recall)은 어느 하나도 낮아서는 안될 중요한 지표입니다. 하지만 정밀도가 증가하면 재현율은 감소하게 되고, 정도가 낮으면 재현율이 증가하는 반비례적인 관계 가집니다. 따라서, 두 개의 값에 대한 성능 변화 전체를 확인하여 적절하게 조절해야합니다. 그러한 대표적인 방법이 Precision-Recall 곡선를 이용하는 것입니다. 

 

PR 곡선은 객체를 인식하는 알고리즘의 성능을 평가하는 방법이며, Confidence 임계값의 변화에 따라 Precision과 recall 값들도 달라집니다. Confidence는 bounding box가 실제로 객체를 포함하고 있는 정도를 나타내는 값입니다. 만약 어떤 물체의 Bounding Box의 Confidence 값이 0.99라면, 예측한 값과 실제 값이 비슷하다고 해도 무방합니다. 

 

만약 Confidence 임계값이 낮다면 찾는 객체일 가능성이 현저하게 적으므로, 수 많은 예측 Bounding Box가 존재할 것 입니다. 그럼 FP는 전반적으로 증가하고 FN은 감소하게되며, 정밀도는 낮아지고 재현율은 높아질 것 입니다. 



반대로 Confidence 임계값이 높다면 찾는 객체일 가능성이 굉장히 높으므로, 상당히 적은 Bounding Box가 존재하게 됩니다. 그렇다면 FP는 감소하고 FN은 증가하게 되므로 정밀도는 높아지고 재현율은 낮아지게 될 것 입니다. 

 

예시를 들어보도록 하겠습니다. 15개의 물체가 존재하는 이미지에서 총 10개의 객체가 검출되었고, Confidence 임계값이 변경됨에 따라 Precision과 Recall이 도출되는 것을 확인할 수 있습니다. 

Detection  Confidence TP or FP 누적 TP 누적 FP PRECISION RECALL
1 0.95 TP 1 - 1/1 = 1.00 1/15 = 0.067
2 0.83 TP 2 - 2/2 = 1.00 2/15 = 0.130
3 0.78 TP 3 - 3/3 = 1.00 3/15 = 0.200
4 0.68 TP 4 - 4/4 = 1.00 4/15 = 0.270
5 0.61 TP 5 - 5/5 = 1.00 5/15 = 0.330
6 0.49 FP 5 1 5/6 =0.83 5/15 = 0.330
7 0.42 TP 6 1 6/7 = 0.86 6/15 = 0.400
8 0.35 FP 6 2 6/8 = 0.75 6/15 = 0.400
9 0.26 TP 7 2 7/9 = 0.78 7/15 = 0.470
10 0.20 FP 7 3 7/10 = 0.70 7/15 = 0.470

 

Precision 값들과 Recall 값들을 아래와 같이 그래프로 나타내는 것이 PR곡선입니다. PR곡선에서 X축은 Recall 값이고, Y축은 Precision을 뜻합니다. 그말은 즉슨 변화하는 recall 값에 따라 precision 값을 확인할 수 있습니다. 


💡 mAP(mean Average Precision) 

PR곡선은 임계값을 변경함에 따라 변하는 Precision과 Recall을 시각적으로 보여줍니다. 하지만 객체탐지에서 여러 클래스에 대한 검출을 수행하지만, 임계값을 PR곡선에 따라 변경하면 동일한 객체의 탐지 여부가 바뀔 수 있습니다. 이에 나온 개념이 Average Precision입니다. Average Precision은 컴퓨터 비전 분야에서 객체탐지의 성능을 평가합니다. PR곡선 그래프에서 선 아래 쪽의 면적을 계산하게 되는데, 산출된 값이 높으면 높을수록 알고리즘의 성능은 우수하다고 평가할 수 있습니다. 

전반적으로 Average Precision을 계산하기 위해 PR곡선을 단조적으로 감소하는 그래프로 위와 같이 변경해줍니다. 이후, 빨간색 그래프 선 다음과 같이 계산해줍니다. AP = 왼쪽 큰 사각형의 넓이 + 중간 작은 사각형의 넓이 + 왼쪽 작은 사각형의 넓이 = (1 * 0.33) + 0.86(0.4 - 0.33) + 0.77(0.46 - 0.4) = 0.4364 됩니다. 객체탐지 같은 경우 여러 클래스가 존재함으로 각 클래스의 AP를 산출한 다음에 그것을 모두 합하여 클래스 개수로 나누면 mAP(mean Average Precision)이 나옵니다.