본문 바로가기

DeepLearning/ObjectDetection

Object Detection 과 Segmentation 평가 Metric 알아보기

glee1228@naver.com

 

지금부터 object detection과 segmentation에서 사용하는 평가 metric인 IoU, Precision 과 Recall, mAP(mean Average Precision)에 대해 알아보겠습니다.

우선, 데이터셋과 competition마다 사용하는 평가 metric이 다릅니다.

대부분의 경우 Pascal VOC metric과 MS COO 평가 metric을 사용합니다.

 

 

우선 IoU부터 살펴보겠습니다.

IoU(Intersection over Union)

  • 예측이 객체에 대해 정확히 그려졌는지 아닌지를 결정하기 위해 IoU 또는 Jaccard Index를 사용합니다. 예측된 Bounding Box(줄여서 Bbox)와 실제 Bounding Box의 겹치는 구간을 그 두개 구간의 합으로 나눈 것 입니다.
  • 예측은 IoU > threshold(임계값) 일 경우, True Positive(TP)로 IoU < threshold(임계값)일 경우 False Positive(FP)로 간주합니다.

 

 

다음은 Precision과 Recall을 살펴보겠습니다.

Precision과 Recall

mAP를 이해하기 위해서는 먼저 precision과 recall을 이해해야 합니다. Recall은 모든 실제로 존재하는 참 중 True Positive의 비율입니다. 간단히 말하면, Recall이 높으면 실제로 존재하는 정답 중 예측한 정답 비율이 높다는 뜻입니다. 그리고 Precision은 positive 예측 값을 말합니다. 즉, 모든 positive 예측 중에서 True Positive 비율이 얼마인지를 말합니다. 그러므로 Precision이 높으면 Positive 예측 중에서 정답을 positive라고 예측한 비율이 높다는 뜻입니다.

$$ Recall = \frac{TP}{TP+FN} = \frac{TP}{\# ground\ truths} $$

$$ Precision = \frac{TP}{TP+FP} = \frac{TP}{\# predictions} $$

 

 

 

마지막으로 mAP(mean Average Precision)을 살펴보겠습니다.

우선 Pascal VOC Competition의 평가 metric과 MS COO Competition의 평가 metric은 서로 다릅니다.

VOC와 COCO 순서대로 평가 metric이 어떻게 이루어져 있는지 살펴보겠습니다.

mAP(mean Average Precision)

Pascal VOC

mAP를 계산하기 위해서, 첫 번째로 각 클래스 별 AP를 계산해야 합니다.

특정한 클래스에 대한 ground truth(초록색)와 Bbox 예측(빨간색)을 포함한 아래의 이미지를 살펴보겠습니다.

Bbox를 상세히 살펴보면 다음과 같습니다.

이 예시에서는 IoU > 0.5인 경우 TP로 결정되고 아닐 경우, FP로 결정됩니다. 이제 confidence 점수를 기준으로 이미지를 정렬합니다. 이미지2에서 보듯이, 단일 객체에 대해 2개 이상의 detection이 있는 경우 IoU가 가장 높은 검출이 TP로 간주되고, 나머지는 FP로 간주됩니다.

  • VOC metric에서, Recall은 랭크된 순위보다 높은 모든 positive 예시에 대한 비율로 정의됩니다. Precision은 positive로 예측한 순위에서의 모든 positive 예시의 비율을 나타냅니다.

따라서, 누적된 Acc TP 열에 상단에서 접하는 TP의 총 개수를 기입하고, Acc FP에 대해서도 동일하게 합니다. 그리고 Precision과 Recall을 계산합니다. 예를 들어, P4의 경우, Precision = 1/(1+0), Recall = 1/3 = 0.33이 됩니다.

이러한 Precision과 Recall 값은 PR(Precision-recall) Curve를 얻을 수 있도록 그려집니다. PR Curve 아래 영역을 Average Precision이라고 합니다. PR Curve는 Recall이 절대적으로 증가함에 따라 일종의 지그재그 패턴을 따르는 반면, Precision은 전체적으로 산발적으로 상승하면서 감소합니다.

AP는 Precision-Recall Curve의 형태를 요약하고 있으며, PASCAL VOC 2007에서는 AUC가 아닌 균일한 간격으로 Recall level [0,0.1,...,1] 의 집합에서의 Precision 값의 평균으로 정의됩니다.


$$ AP = \frac{1}{11}\sum_{r\in(0.0.1,...,1)}P_{interp(r)} $$


각 Recall level에서의 Precision은 해당 Recall이 level r을 초과하는 방법에 대해 측정한 최대 Precision을 취함으로써 보간(interpolate)됩니다.


$$ P_{interp(r)} = max_{\bar{r}:\bar{r}\ge r}p(r) $$

즉, 최대 Precision 값을 11개의 동일한 간격으로 오른쪽으로 가져가고 [0:0.1:1], 평균을 내어 AP를 얻습니다.

그러나 VOC 2010부터는 AP의 계산이 바뀌었습니다.

Recall r에 대한 정밀도를 [r:r~]에 대해 획득한 최대 Precision로 설정하여 측정된 Precision-Recall Curve의 버전을 단조롭게 감소시키면서 계산합니다. 그리고 numerical integration에 의해 AP를 이 곡선 아래의 영역으로 계산합니다.

즉, 주황색의 PR Curve가 주어진 경우, 모든 Recall 지점에 대한 오른쪽의 최대 Precision을 계산하여 녹색으로 그려진 새로운 Curve를 구합니다. 이제 녹색 Curve 아래의 integration을 이용해서 AUC를 구합니다. 이게 바로 AP가 될 것입니다. 여기서 VOC 2007과의 차이점은 단지 11개의 Recall 지점을 고려한 것이 아니라 모든 점을 고려한다는 것입니다.

이제 객체 클래스 당 AP를 구했으며, 모든 객체 클래스에 대한 평균 AP인 mAP를 구하면 됩니다.

img

VOC에서 Segmentation 챌린지의 경우, Segmentation 정확도(IoU를 사용해서 계산한 픽셀 단위 정확도)를 평가 Metric으로 사용하며 다음과 같이 정의됩니다.


$$ Segmentation Accuracy = \frac{TP}{TP+FP+FN} $$

 

 

 

이제 MS COO의 평가 Metric에 대해 알아보겠습니다.

 

MS COCO

일반적으로, VOC에서 IoU > 0.5 인 예측은 TP 예측으로 결정됩니다. 이것은 IoU 0.6과 0.9의 두 예측은 동일한 가중치를 갖는다는 것을 의미합니다. 그러므로, 특정 임계값은 평가 metric에 편향을 도입합니다. 이 문제를 해결하는 한 가지 방법은 IoU 임계값 범위를 사용하고 각 IoU에 대해 mAP를 계산하여 평균을 내어 최종 mAP를 얻는 것입니다.

 

자세히 살펴보겠습니다.

 

COCO는 [0:0.01:1] R=101 Recall 임계값을 평가에 사용합니다. COCO metric에서 IoU 임계값의 범위는 0.5에서 0.95까지이며 스텝 크기는 0.05로 AP@[.5:0.05:0.95]로 표시됩니다.

IoU=0.5, IoU=0.75 등 고정 IoU에서의 AP는 각각 AP50과 AP75로 표기됩니다. 달리 명시되어 있지 않을 때에는 AP와 AR은 여러 IoU 값들의 평균 값으로 구합니다. 특히, 0.5:0.05:0.95 의 10개의 IoU임계값을 사용합니다.

$$ AP^{IoU=.50}=single\ IoU\ of\ .50 $$

$$ mAP_{COCO}=\frac{mAP_{0.50}+mAP_{0.55}+...+mAP_{0.95}}{10} $$


AP는 모든 카테고리에 대해 평균한 값입니다. 전통적으로 이를 "mean average precision"(mAP)라고 부릅니다.

AP와 mAP를 구별하지 않고, 그 차이는 맥락 속에서 명확하게 알 수 있다고 가정합니다.

 

  • 일반적으로 평균은 다른 순서로 측정되며(최종 결과는 동일), COCO에서는 mAP를 AP라고도 합니다.

 

이제 COCO의 AP를 단계 별로 다음과 같이 구할 수 있습니다.

 

  • 1단계 : 각 클래스에 대해 서로 다른 IoU 임계값으로 AP를 계산하고 평균을 내어 해당 클래스의 AP를 얻습니다.

$$ AP[class]=\frac{1}{\#thresholds}\sum_{iou \in thresholds}AP[class,iou] $$

  • 2 단계 : 다른 클래스들에 대한 AP를 평균함으로서 최종 AP를 계산합니다.

 

사실상 AP는 평균, 평균, 평균 precision을 의미합니다.

 

결론

  • Pascal VOC 2007은 PR Curve의 11개 Recall Point를 이용합니다.
  • Pascal VOC 2010-2012는 PR Curve의 Area Under Curve(AUC), 즉 Recall의 모든 포인트 를 이용합니다
  • MS COCO는 서로 다른 IoU 임계값의 개수만큼 PR Curve의 101개의 Recall Point를 이용합니다.

 

참조 & 더많은 읽기 :

  1. COCO evaluation metrics
  2. VOC2007 metrics
  3. VOC2012 metrics
  4. Object detection metrics
  5. mAP (mean Average Precision) for Object Detection

'DeepLearning > ObjectDetection' 카테고리의 다른 글

Object Detection 성능 비교 테이블  (0) 2020.05.29