본문 바로가기
재밌게 인공지능을 공부해보자!

YOLO_OBJECT_DETECTION 객체 검출 [IoU 개념]

by 토끼여우 2022. 7. 9.
728x90
SMALL

YOLO 객체 검출에서의 중요한 IoU

 

IoU 는 Intersection of Union 의 줄임말

 

객체 검출은 객체의 주위에 정사각형으로 검출

 

그 정사각형을 Bounding Box 라고 한다

 

객체 검출을 예측하는 바운딩 박스와 실제 바운딩박스로 나뉜다

 

객체를 검출할떄 예측,실제 바운딩박스에 겹치는 부분을 union 이라고 한다

 

그리고 그리고 그 바깥부분들을 intersection 이라고 한다

 

우선 intersection 을 구해야한다

구하는 법은 간단하다

 

공통적인 바운딩박스의 너비에 4개의 점을 구해야한다

시계반대 방향으로 꼭짓점들이 a.b.c.d 라고하자

그러면 (b - a) * (d - a) 로 intersection을 구해낸다

그리고 intersection을 구했다면 Union을 구해야한다

Union을 구하기 위해서는

예측 바운딩박스 와 실제 바운딩 박스를 더하고 intersection의 너비로 나누어 주면 Union을 구할수있다

 

마지막으로 가장 큰 핵심

IoU 를 구하려면

intersection 에서 union을 나누어주면 구할수있다

 

파이썬 코드로 개념들을 차례로 구현하면 이렇다

import numpy as np
def compute_iou(pred_box, gt_box):
  x1 = np.maximum(pred_box[0],gt_box[0])
  y1 = np.maaxumum(pred_box[1], gt_box[1])
  x2 = np.maximum(pred_box[2],gt_box[2])
  y2 = np.maaxumum(pred_box[3], gt_box[3])

  intersection = np.maximum(x2-x1,0) * np.maximum(y2-y1,0)
  pred_box_area = (pred_box[2]-pred_box[0]) * (pred_box[3]-pred_box[1])
  gt_box_area = (gt_box[2]-gt_box[0]) * (gt_box[3]-gt_box[1])

  union = pred_box + gt_box - intersection_area
  iou = intersection / union
  return iou

https://driip.me/34deae03-7a40-44ee-849d-756e6e852f49

 

IoU(Intersection of Union), NMS(Non-Maximum Suppression)

Table of Contents

driip.me

전현성님의 정리를 참고하여 블로그로 작성했습니다

728x90
LIST