AI/컴퓨터 비전

IOU : 모델이 예측한 결과와 실측 Box가 얼마나 정확하게 겹치는 가를 나타내는 지표

HHB 2022. 12. 4. 01:51

IOU : 모델이 예측한 결과와 실측 Box가 얼마나 정확하게 겹치는 가를 나타내는 지표

Detection 데이터 셋별로 IOU 임계값이 다르다.

Pascal voc는 0.5, MS COCO는 0.5 ~ 0.95 의 여러가지 경우를 두고 제출하도록 한다.

위 그림은 예시이다.

만약 Pascal voc 데이터 셋에서 왼쪽 2가지 경우만 Detecte 성공이고 나머지 3가지 경우는 실패이다.

import numpy as np 

def compute_iou(cand_box, gt_box):

    # 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])
		#여기서 x, y의 크기 비교는 x는 오른쪽으로 갈수록 크고, y는 아래로 갈수록 크다.
    
    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

IOU의 threshold 값을 높게 잡으면 detection 성능이 올라갈 것이다.

하지만 detection 성능 평가에는 여러가지가 복합적으로 존재하기 때문에 적절한 값(0.5)을 사용한다.

 

728x90
반응형
LIST