반응형

원본 링크

What is Mean Average Precision (mAP) in Object Detection?

컴퓨터 비젼 커뮤니티는 object detection systems의 성능을 비교하기 위해 mAP 지표로 수렴되었다. 이 글에서는 mAP(mean Average Precision)이 어떻게 계산되고 왜 mAP가 객체 탐지 모델에서 선호되는 지표가 되었는지에 대해 알아본다.

[Link](https://www.youtube.com/embed/oqXDdxF_Wuw)

What is Object Detection?

mAP가 어떻게 계산되는지 고민하기 전에 우선 이것이 측정되는 작업을 명확하게 정의하자.

객체탐지 모델은 이미지에서 관련된 객체의 존재를 구별하고 이들 객체를 관련된 클래스로 구분하기 위해 탐색한다. 예를 들어, 의학 이미지의 혈액흐름에서 RBC(적혈구, Red Blood Cell), WBC(백혈구, White Blood Cell) 그리고 혈소판(platelet)의 수를 세고 싶을 수 있다. 이를 자동으로 수행하기 위해 각각을 인식하고 올바르게 분류하기 위한 객체 탐지 모델을 훈련해야 한다.(저자는 Colab notebook에서 이미지 탐지에 대한 최신 기술인 EfficientDet 과 YOLOv3를 비교했다.(여기)


EfficientDet(녹색)과 YOLOv3(노랑)의 출력 예

두 모델 모두 그림에서 세포를 감싸는 바운딩 박스를 예측한다. 그리고 각각의 바운딩 박스를 분류한다. 각 분류에 대해 네트워크는 예측에서 신뢰도를 모델링한다. 여기서 RBC, WBC, Platelet인 총 3가지 분류를 갖는것을 볼 수 있다.

어느 모델이 더 나은지 어떻게 결정할 수 있을까? 이미지를 보면 EfficientDet(녹색)이 약간 더 많은 RBC 박스를 그리고 이미지의 가장자리에서는 몇몇 셀은 놓친것 처럼 보인다. 이것은 명확하게 어떤것에 대한 시각에 기초하여 얼마나 느끼는가이다. - 하지만, 이미지와 직감을 믿을 수 있을까? 만약 그렇다면 얼마나 좋을까?(그렇지 않다.)

각 모델이 테스트셋의 전체 이미지, 전체 분류 그리고 다른 신뢰도 임계치(threshold)에서 어떻게 동작하는지를 직접 정량화할 수 있다면 좋을 것이다. 그럼 mAP에 대해 알아 보자.

mAP를 이해하기 위해서 PRC(정밀도-재현률 곡선, Precision-Recall Curve)에 대해 알아야 한다.

The Precision-Recall Curve

정밀도(Precision)은 _"모델이 추측할 때 얼마나 자주 올바른 예측을 하는가?"_에 대한 측정이고

재현률(Recall)은 _"모델이 추측해야 할 때마다 추측하는가?"_에 대한 측정이다.

10개의 적혈구(RBC)를 가진 이미지가 있을 때, 10개중 단 하나만을 찾지만, "RBC"로 올바르게 레이블링하는 모델은 완벽한 정밀도를 갖는다.(모든 추측-하나-이 올바르기 때문이다.) 하지만, 재현률은 불완전하다.(10개의 RBC 세포중 단 하나만을 찾았다.)

신뢰도(confidence)와 관련된 모델은 예측해야 하는 신뢰도의 수준을 조절하여 정밀도(precision)과 재현률(recall)을 교환(tradeoff)할 수 있다. 즉, FP(세포가 WBC지만 RBC로 예측하는 상태)가 FN을 피하는 것보다 더 중요한 상태일 때, 모델의 전체 보장범위(recall)를 더 낮게 하는 대신 높은 정밀도 예측만을 하도록 더 높은 신뢰도 임계점을 설정할 수 있다.

TP - True Positive : True인 것을 True로 예측 (결과 : True)

FP - False Positive : False인 것을 True로 예측 (결과 : False)

TN - True Negative : False인 것을 False로 예측 (결과 : True)

FN - False Negative : True인 것을 False로 예측 (결과 : False)

$TP + FP$ : All Detection

$TP + FN$ : All Ground Truths

모델 신뢰도 임계치의 함수로 모델 정밀도와 재현률을 그리는 과정이 PRC(Precision-Recall Curve)이다. 신뢰도가 감소하면 더 많은 예측이 되고(재현률을 올린다) 덜 정확한 예측이 된다.(정밀도를 낮춘다)

다음과 같이 생각해 보자.: 만약 "모든 종류의 상어 이름"이라고 말했다면, 아마도 확실한 하나로 시작할 것이다.(높은 정밀도) 그러나 이름을 부를 수 있는 모든 추가적인 상어의 종류에는 낮은 신뢰도가 될 것이다.(더 작은 정밀도로 전체 재현률에 접근)


정밀도, 재현률 그리고 (저자의) NLP 프로젝트중 하나에서 다른 모델에 대한 신뢰도

모델이 더 작은 신뢰도를 갖기 때문에 곡선은 아래쪽으로 경사진다. 만약 모델이 위쪽 경사인 정밀도와 재현률 곡선을 갖는다면 모델은 신뢰도 추정에 문제가 있을 수 있다.

AI 연구자는 지표(metrics)를 좋아하고 전체 PRC는 단일 지표로 캡쳐될 수 있다. 가장 먼저 그리고 가장 일반적인 것은 F1이다. 이는 정밀도와 재현률이 가장 높은 F1값을 만드는 최적의 신뢰도 임계치를 찾기 위해 정밀도와 재현률 측정을 합친 것이다. 다음은 PRC 아래에 있는 도포의 양을 통합하는 AUC(Area Under the Curve)가 있다.


정밀도-재현률 요약 지표에 대한 스케치

마지막 PRC 지표는 AP(Average Precision)으로 이글에서 다루는 것이다. AP는 가중치로 사용된 이전 임계치로 재현률에 있어서의 증가와 함께 각 임계치에서 달성된 정밀도에 가중치를 적용한 평균으로 계산된다.

$정밀도, Precision = \frac{TP}{TP + FP}$

$재현률, Recall = \frac{TP}{TP + FN}$

$F1 = 2 \times \frac{precision \times recall}{precision + recall}$

AUC와 AP 모두 PRC의 전체 모습을 캡쳐한다. 객체 탐지를 위해 한가지를 선택하는 것은 선택의 문제이고 연구 커뮤니티는 영상해석을 위해 AP를 사용한다.

IoU(Intersection over Union)을 통해 올바름 측정하기

객체 탐지 시스템은 바운딩 박스와 분류 레이블로 예측을 만든다.


객체 탐지 작업 스케치

실제로 X1, X2, Y1, Y2좌표에서 예측된 바운딩 박스는 실측 레이블에서 (약간이라도) 확실하게 떨어져 있다. 만약 잘못된 분류라면 틀림("incorrect")으로 바운딩 박스 예측을 카운투 해야 하는 것을 알지만 겹쳐진 바운딩 박스에서 선을 어디에 그려야 할까?

IoU(Intersection over Union)은 Grond Truth 바운딩 박스와 겹치는 예측된 바운딩 박스의 양을 이 둘 바운딩 박스의 전체 면적으로 나눈 값으로 이 경계를 설정하는 지표를 제공한다.


IoU 지표에 대한 그래픽 설명에 대한 스케치

IoU 지표에 대한 올바른 하나의 임계치를 선택하는 것은 임의적인 것 같아 보인다. 한 연구자는 60% 겹침을 판단할 것이고 다른 연구자는 75%가 더 타당하다고 할 것이다. 그렇다면 단일 지표에서 모든 임계값을 고려하지 않는 이유는 무엇일까?

Drawing mAP precision-recall curves

mAP를 계산하려면, 난이도(difficulty)의 다양한 레벨에서 설정하는 IoU 임계치로 일련의 PRC 를 그린다.


mAP precision-recall curve에 대한 스케치

스케치에서

  • 빨강 : IoU에 대한 가장 높은 요구 (90% 이상)
  • 오렌지 : IoU에 대한 가장 관대한 요구(10%)
    이다. 그래프 선의 수는 보통 문제에 의해 설정된다. 예를 들어 COCO는 0.5에서 시작하여 0.05의 단계로 0.95꺼지 증가하는 10개의 다른 IoU 임계치를 설정한다.

마지막으로 분류 타입으로 분할된 데이터셋에 대해 정밀도-재현률 곡선(PRC)을 그린다.


객체 분류에 의한 mAP 스케치

지표는 모든 IoU 임계치에서 개벌젹으로 각 클래스에 대해 AP(Average Precision)을 계산한다. 그러면 이 지표는 모든 클래스가 최종 추정치에 도달하는 것에 대해 mAP를 평균한다.

실제 mAP 사용하기

저자는 최근 comparing state of the art detection models, EfficientDet과 YOLOv3에 관한 글에서 mAP를 사용했다. 저자는 혈액흐름에서 세포 구분과 체스말을 구분하는 작업에서 어느 모델이 더 나은지를 보고 싶었다.

테스트셋에서 각이미지에 대한 추론을 한 후 calculate mAP in my Colab notebook로 파이썬 패키지를 임포트 했다. 다름은 그 결과이다.

Evaluation of EfficientDet on cell object detection:

  • 78.59% = Platelets AP
  • 77.87% = RBC AP
  • 96.47% = WBC AP
  • mAP = 84.31%

Evaluation of YOLOv3 on cell object detection:

  • 72.15% = Platelets AP
  • 74.41% = RBC AP
  • 95.54% = WBC AP
  • mAP = 80.70%

위에서 보이는 것과 같이 이 글의 시작에 있는 하나의 추론 그림과는 달리 EfficientDet이 세포 객체 탐지 모델링에 대해 더 나은 작업을 한다는 것으로 나타났다! 또한 지표가 객체 분류로 쪼겼다는 것을 알 수 있다. 이것은 WBC가 Platelet과 RBC보다 훨씬 쉽다는 것을 말한다. WBC가 훨씬 더 크고 다른 세포보다 뚜렷하기 때문에 타당하다.

mAP는 또한 자주 대/중/소 객체로 쪼개진다. 이것은 모델이 잘못 진행할 곳을 식별하는데 도움이 된다.

반응형

+ Recent posts