안 쓰던 블로그

Object Detection_4. NMS 및 성능 평가 Metric - mAP 본문

머신러닝/머신러닝

Object Detection_4. NMS 및 성능 평가 Metric - mAP

proqk 2021. 1. 17. 15:42
반응형

NMS(Non Max Suppression)

 

Object Detection 알고리즘은 Object가 있을 만한 위치에 많은 Detection을 수행한다

그래서 저번 글에서도 보았듯이 중복값이 많이 나올 수 있다. 오브젝트가 있는 곳을 놓쳐서는 안 되기 때문

그렇지만 결과 도출을 위해서는 그런 많은 박스 중에서도 딱 하나의 박스를 선택을 해야만 한다

->NMS는 Detected된 Object의 Bounding box중에 비슷한 위치에 있는 box를 제거하고 가장 적합한 box를 선택한다

 

NMS 수행 로직

1. Detected된 Object의 Bounding box중 confidence score가 일정 이하인 값(오브젝트가 맞는지 긴가민가한, 정확도가 떨어지는 값)을 제거한다

2. 가장 높은 confidence score를 가진 box순으로 내림차순 정렬하고 모든 box에 순차적으로 아래 로직 적용

    -높은 confidence score를 가진 box와 겹치는 다른 box를 모두 조사하여 IOU가 특정 threshold 이상인 box를 모두 제거(예: IOU Threshold>0.4)

 

해당 박스와 겹치는 다른 box들을 보면서 각각의 IOU를 계산, IOU가 높을 수록 제거 ->즉, 중복을 제거하는 과정이다

3. 남아 있는 box만 선택한다

 

Confidence score가 높을 수록, IOU Threshold가 낮을 수록 많은 Box가 제거된다

 

그러면 굳이 이렇게 하지 않고 가장 높은 값만 가져오면 되지 않나? 싶지만, 이런 방법을 쓰면 단지 중복 제거 뿐만 아니라 그 오브젝트와 관련된 최소한의 박스를 남길 수 있기 때문에 더 정확도를 높힐 수 있다

 


성능 평가 Metric - mAP

실제 Object가 Detected된 재현율(Recall)의 변화에 따른 정밀도(Presion)의 값을 평균한 성능 수치

 

정밀도(Precision)와 재현율(Recall)

-정밀도: 예측을 Positive로 한 대상 중에 예측과 실제 값이 Positive로 일치한 데이터의 비율. Object Detection에서는 검출 알고리즘이 검출 예측한 결과가 실제 Object들과 얼마나 일치하는지를 나타내는 지표이다

-재현율: 실제 값이 Positive인 대상 중에 예측과 실제 값이 Positive로 일치한 데이터의 비율. Object Detection에서는 검출 알고리즘이 실제 Object들을 빠뜨리지 않고 얼마나 정확히 검출 예측하는지를 나타내는 지표이다

 

예를 들어 새 두 마리가 있는 이미지에서 새 하나를 정확하게 잡았다면, 한 마리에 대해 검출 예측을 정확히 Bird로 했으므로 정밀도는100%, 두 마리가 아니라 한 마리만 잡았으므로 재현율은 50%이다. 두 값이 치우치지 않고 적절하게 되어야 좋다. 주로 이진 분류에서 사용되는 성능 지표이다

 

오차 행렬(Confusion Matrix)

이진 분류의 예측 오류가 얼마인지와 더불어 어떠한 유형의 예측 오류가 발생하고 있는지를 함께 나타내는 지표

TN: 실제 Negative인데 예측도 Negative(지표로 쓰지 않음)

FN: 실제 Negative인데 예측은 Positive(실제 값이 있는데도 예측을 안 한 경우)

FP: 실제를 Positive로 했는데 예측을 Negative(틀린 경우-잘못 예측, IOU가 너무 낮음, 실제와 위치가 틀림)

TP: 실제를 Positive로 하고 예측도 Positive(예측과 실제가 맞은 경우)

 

 

정밀도 = TP / (FP + TP)

    예측을 다 하긴 함(FP, TP) 예측에는 맞기도, 틀리기도 했고, 그 중에서 맞은 것

    정밀도가 좋으려면 FP가 작아야 한다

재현율 = TP / (FN + TP)

    맞은 것과 아예 잡지 못 한 것 전체 중에서 맞는 것

    재현율이 좋으려면 FN이 작아야 한다

 

업무에 따른 재현율과 정밀도의 상대적 중요도와 맹점

재현율이 상대적으로 더 중요한 지표인 경우는 실제 Positive 양성인 데이터 예측을 Negative로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우 : 암 진단, 금융사기 판별(틀리면 문제가 큰 분야)

정밀도가 상대적으로 더 중요한 지표인 경우는 실제 Negative 음성인 데이터 예측을 Positive 양성으 로 잘못 판단하게 되면 업무상 큰 영향이 발생하는 경우: 스팸 메일(스팸이 아닌 메일을 스팸이라고 하면 문제)

 

그렇다고 해서 정밀도를 100%, 재현율을 100%로 만들면 또 문제가 생긴다

정밀도를 100%으로 만드는 법: 확실한 기준이 되는 경우만 Positive로 예측, 나머지는 모두 Negative로 예측한다(누가봐도 암인 너무 정확한 사람만 암이라고 진단)

재현율을 100%으로 만드는 법: 모든 환자를 Positive로 예측한다(전체 환자를 암이라고 해 버림)

 

Confidence 임계값에 따른 정밀도-재현율 변화

Confidence 임계값이 낮을 수록 더 많은 예측 bounding box(bbox)를 만들어 낸다(난사)->정밀도는 낮아지고 재현율은 높아짐

Confidence 임계값이 높을 수록 예측 bbox를 만드는데 매우 신중하게 된다->정밀도는 높아지고 재현율은 낮아짐

 

정밀도 재현율 트레이드 오프: Confidence 임계값(Threshold)를 조정하면 정밀도, 재현율의 수치를 높힐 수 있다. 그런데 정밀도와 재현율은 상호 보완적인 평가 지표라서 어느 한 쪽이 높아지면 다른 쪽은 떨어지기 쉽다

 

정밀도 재현율 곡선: Recall 값의 변화에 따른(Confidence값을 조정하면서 얻어진) Precision 값을 나타낸 곡선. Precision 값의 평균을 AP라고 하며, 일반적으로 정밀도 재현율 곡선의 면적 값으로 계산한다

 

 

AP 계산 방법

1. Confidence에 따른 정밀도와 재현율의 변화 표를 만든다

2. 각 값을 찍어서 정밀도-재현율 그래프를 만든다

3. 그래프에서 오른쪽 최대 정밀도의 값들을 연결하여 하나의 선을 그린다. 그것의 너비가 AP

4. 재현율 포인트별로 최대 정밀도의 평균값을 구한다. 예를 들어 재현율 0.0~1.0까지 11개가 있으면 각 재현율의 정밀도값 전체 합을 11로 나눈 평균값이 AP이다

 

mAP(mean Average Precision)

AP는 한 개 오브젝트에 대한 성능 수치

mAP는 여러 오브젝트들의 AP를 평균한 값

 

 

 

 

 

 

참고: 딥러닝 컴퓨터 비전 완벽가이드

반응형
Comments