IOU /NMS/mAP

2020. 12. 23. 14:18Computer vision ღ'ᴗ'ღ

728x90

※ 본 글은 <딥러닝 컴퓨터비전 완벽가이드> 강의 및 여러 자료를 참고하여 쓰여진 글입니다. ※

github: github.com/chaeyeongyoon/ComputerVision_Study

 

chaeyeongyoon/ComputerVision_Study

Contribute to chaeyeongyoon/ComputerVision_Study development by creating an account on GitHub.

github.com

IOU

IOU(Intersection over Union)는 모델이 예측한 결과와 실측 (Ground Truth) box가 얼마나 정확하게 겹치는 가를 나타냅니다. object detection 성능평가 지표 중 하나입니다.

Object Detection에선 개별 Object대한 검출 성공 여부를 IOU로 결정합니다. 일반적으로 0.5이상이면 예측 성공으로 인정합니다(PASCAL VOC Challenge 기준)

 

간단히 IOU시각화 코드를 짜보겠습니다. 자세한 코드는 글 상단의 제 깃허브에서 보실 수 있습니다.

 

import numpy as np

def compute_iou(cand_box, gt_box): # each box's [left, top, right, bottom]
    # Calculate intersection areas
    x1 = np.maximum(cand_box[0], gt_box[0])
    y1 = np.maximum(cand_box[1], gt_box[1])
    x2 = np.minimum(cand_box[2], gt_box[2])
    y2 = np.minimum(cand_box[3], gt_box[3])
    
    intersection = np.maximum(x2-x1, 0) * np.maximum(y2-y1, 0)
    
    cand_box_area = (cand_box[2]-cand_box[0]) * (cand_box[3]-cand_box[1])
    gt_box_area = (gt_box[2]-gt_box[0]) * (gt_box[3]-gt_box[1])
    
    union = cand_box_area + gt_box_area - intersection
    
    iou = intersection / union
    
    return iou
    

NMS

NMS는 Detected된 object의 Bounding box 중 비슷한 위치의 box를 제거하고 가장 적합한 box를 선택하는 기법입니다.

Object Detection은 object를 놓치면 안되기 때문에 object가 있을만한 위치에 많은 detection을 수행하는 경향이 강하기 때문에

이렇게 비슷한 위치에 여러 box가 생길 수 있기 때문입니다.

 

 

 

 

-수행로직

1. detected bounding box별로 특적 confidence Threshold 이해 bounding box 제거 ( 보통 confidence < 0.5 )

2. 가장 높은 confidence score가진 box순으로 내림차순 정렬한 후 

높은 confidence score 갖는 box와 겹치는 다른 box를 모두 조사해 IOU가 특정 threshold( 보통 IOU Threshold > 0.4 ) 이상인 box를 모두 제거하는 과정을 모든 box에 순차적으로 적용합니다.

3. 남아있는 box만 선택합니다.

confidence score은 높고 IOU Threshold는 낮을수록 많은 Box가 제거됩니다.

 

※ confidence(신뢰구간)

: 모수가 실제로 포함될 것으로 예측되는 범위입니다. (최소~최대)

confidence level = 신뢰수준으로, 신뢰구간에 모집단 실제 평균값이 포함될 확률입니다. 보통 95%로 사용됩니다.

https://bioinformaticsandme.tistory.com/256

mAP(mean Average Precision)

object detection 성능평가 지표 중 하나로, 실제 Object 가 detected된 Recall변화에 따른 Precision값을 평균한 성능 수치 입니다.

왼쪽의 그래프를 보면 YOLO가 mAP로 판단했을 때 성능은 좀 낮을지라도 속도가 아주 빠르고, RetinaNet은 성능은 아주 높지만 상대적으로 속도가 느립니다.

 

AP(Average Precision)계산

 

그림과 같이 Recall-Precision그래프를 연결해 그 밑 영역의 너비가 AP입니다.

개별(여기선 11개) Recall포인트 별 최대 Precision의 평균값을 구하는 것입니다.

 

 

 

 

AP는 한 오브젝트 대한 성능수치이고, 

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

 

 

 

 

 

 

 

recall, precision도 성능평가에 사용됩니다. 이 두 지표에 대해서는 머신러닝 완벽가이드 카테고리에서 작성하였습니다.

 

confidence 임계값과 recall, precision은 관련이 있습니다.

confidence가 낮아지면 더 많은 예측 bounding box를 만들게 되어 precision은 낮아지고, recall은 높아집니다

confidence가 높아지면 더 신중하게 예측 bounding box를 만들게 되어 precision은 높아지고, recall은 낮아집니다

 

728x90

'Computer vision ღ'ᴗ'ღ' 카테고리의 다른 글

R-CNN(Regions with CNN)  (0) 2021.01.03
COCO dataset 다루기  (0) 2020.12.26
주요 dataset 및 파이썬 이미지 라이브러리  (0) 2020.12.23
Localization / Detection / Segmentation  (0) 2020.12.23
Object Detection 개요  (0) 2020.12.23