반응형

mean Average Precision(mAP) 계산하기

이전 글에서 mAP에서 객체 탐지 모델의 성능비교를 위해 사용한 mAP에 대해 좀 예제를 통해 알아보고자 한다.


1. Data

다음을 여러개의 객체가 존재하는 데이터에서 '개'와 '고양이'를 탐지한 결과라고 가정하고 진행해 보자.


위와 같이 데이터내 대상 객체는 총 20개이다.



2. 정확도, 정밀도, 재현률


Confusion matrix (contigency table or error matrix)
  • 정확도 - Accuracy

    얼마나 잘 맞췄는가?
    전체 데이터에 대한 올바른 결과의 비율

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


  • 정밀도 - Precison

    탐지된 결과가 얼마나 맞는가?

    전체 탐지된 결과 중 올바르게 탐지된 결과의 비율

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

    • $TP + FP$ : 추론의 Positive 개수, 즉 탐지된 전체 수

  • 재현률 - Recall

    얼마나 잘 탐지했는가?

    전체 탐지되어야 할 대상 중 실제 탐지된 대상의 비율

    $Recall = \frac{TP}{TP + FN}$

    • $TP + FN$ : 실측의 Positive 개수, 즉 탐지되어야 할 전체 수

샘플 데이터로 계산해 보면 아래와 같다.

  • (개)
    • $Accuracy = \frac{7 + 6}{7 + 4 + 3 + 6} = 0.65$
    • $Precision = \frac{7}{7 + 4} \approx 0.64$
    • $Recall = \frac{7}{7 + 3} = 0.7$
  • (고양이)
    • $Accuracy = \frac{6 + 7}{6 + 3 + 4 + 7} = 0.65$
    • $Precision = \frac{6}{6 + 3} \approx 0.67$
    • $Recall = \frac{6}{6 + 4} = 0.6$
구분 고양이
정확도(Accuracy) 0.65 0.65
정밀도(Precision) 0.64 0.67
재현률(Recall) 0.7 0.6

또한 일반적으로 분류 모델의 경우, 신뢰도(confidence)를 바탕으로 예측결과를 결정하기 되므로, 신뢰도의 임계치(threshold)를 조절하여 정밀도와 재현률을 서로 교환(tradeoff)할 수 있다.

즉, 샘플 데이터의 경우, 기준(threshold > 40)보다 낮은 임계치(threshold > 20)를 설정하면 재현률은 높아지지만 정밀도가 낮아진다.


임계치를 낮춘 경우
구분 고양이
정확도(Accuracy) 0.6 0.7
정밀도(Precision) 0.56 0.625
재현률(Recall) 1 1

반대로 기준보다 높은 임계치(threshold > 80)을 설정하면 재현률이 낮아지지만 정밀도가 높아진다.


임계치를 높힌 경우
구분 고양이
정확도(Accuracy) 0.7 0.7
정밀도(Precision) 1 1
재현률(Recall) 0.4 0.4

모델에 있어 정밀도 혹은 재현률은 해당 모델이 적용되어야 하는 상황에 따라 그 중요도가 결정된다. 예를 들면,

  • 정밀도가 높아아 햐는 경우
    : FP가 감소, 즉, 잘못 탐지한 케이스가 작아야 한다.


    예를 들면, 도둑을 감지하여 자동으로 테이져건을 발사하는 AI가 있다고 해보자. 이 AI의 경우, 확!실!하!게! 도둑일 때에만(높은 임계치) 테이져건을 발사해야만 한다.

  • 재현률이 높아야 하는 경우
    : FN이 감소, 즉, 탐지 못하는 케이스가 작아야 한다.


    예를 들면, 생물한 연구소에서 누출 탐지를 수행하는 AI가 있다고 해보자. 이 AI의 경우, 누출을 막기 위해 약간의 징후라도 보이면(낮은 임계치) 탐지해야 하는 것이 맞다.



3. 정밀도-재현률 곡선 (Precision-Recall Curve)

샘플데이터를 신뢰도를 기준으로 내림차순 정렬한 후, X축을 재현률/Y축을 정밀도로 하는 그래프를 그린다. 이것이 PR 곡선(정밀도-재현률 곡선)이다.


PR 곡선

고양이

PR 곡선
  • 참고로 F1 점수도 구해보자.

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

고양이
F1 0.66 0.64


4. mAP 계산

위에서 얻은 PR 곡선을 단계적으로 감소하는 방향으로 만든다.


PR 곡선

위 그래프에서 붉은색 굵은 점선과 같이 그래프를 계단식으로 만들고, 그래프가 만드는 각각의 사각형의 면적의 합(붉은색 면적 + 초록색 면적)이 AP가 된다.

'개'의 경우 AP는

$AP = 붉은면적 + 초록면적 = (0.6 - 0.1) \times 1 + (0.7 - 0.6) \times 0.636364 =0.5636364$



PR 곡선

'고양이'의 경우, 붉은색 점선이 맞는지 파란색 점선이 맞는지 정확히 모르겠다. (아시는 분 댓글좀 부탁드립니다. 여기서는 붉은 점선 기준으로 진행)

$AP = (0.6 - 0.1) \times 1 + (0.7 - 0.6) \times 0.666667 = 0.5666667$


mAP는 각각의 분류에 대한 AP의 평균을 구하면 된다.

$mAP = \frac{1}{2} \times (0.5636364 + 0.5666667) = 0.56515135 \approx 0.57 %$

반응형

+ Recent posts