Object detection 에서 사용되는 IoU (Intersection over Union) 구하는 함수, 좌표상에서 계산 과정 그림 설명
+ 이나스AI에는 인공지능 관련 다양한 강의가 있습니다.
- Object detection, Text To Speech, Reinforcement learning, OCR, Chatbot, Time series prediction,
- Meta learning, eXplainable AI, Transformer/BERT/GPT, Graph-based ML, etc
- 소스코드, 다이어그램 및 중간데이터에 기반하여 인공지능 알고리즘들의 작동원리와 구조를 이해하기 쉽고 정확하게 설명합니다.
+ 작업할 때 켜놓는 라이브 스트리밍 study with me 채널도 운영하고 있습니다.
Object detection 모델을 사용할 때는 정답 박스와 예측된 박스가 얼마나 일치하는지 평가하는 지표가 필요합니다.
이 때, IoU (Intersection over Union) 값이 사용될 수 있으며, 수식적으로 표현하면 아래와 같이 쓸 수 있습니다.
$$$IoU = \dfrac{\text{두 박스의 교집합 부분 넓이값}}{\text{두 박스의 합집합 부분 넓이값}}$$$
아래 함수는 두개의 박스를 입력으로 받아, 두 박스의 IoU 값을 계산 후 반환하는 함수입니다.
코드는 아래 Github 저장소에서 참고했습니다.
https://github.com/1297rohit/RCNN/blob/master/RCNN.ipynb
함수 아래에는 실제 좌표상에서 IoU 를 구하기 위해 사용된 연산들을 참고사항으로 설명한 그림을 첨부했습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | def get_iou(bb1, bb2): # 박스1, 박스2 를 입력으로 받음 assert bb1['x1'] < bb1['x2'] assert bb1['y1'] < bb1['y2'] assert bb2['x1'] < bb2['x2'] assert bb2['y1'] < bb2['y2'] # intersection (교집합) 박스의 {(x1=x_left,y1=y_top), (x2=x_right,y2=y_bottom)} 좌표 구하기 x_left = max(bb1['x1'], bb2['x1']) y_top = max(bb1['y1'], bb2['y1']) x_right = min(bb1['x2'], bb2['x2']) y_bottom = min(bb1['y2'], bb2['y2']) if x_right < x_left or y_bottom < y_top: return 0.0 # 교집합 박스의 넓이 intersection_area = (x_right - x_left) * (y_bottom - y_top) bb1_area = (bb1['x2'] - bb1['x1']) * (bb1['y2'] - bb1['y1']) bb2_area = (bb2['x2'] - bb2['x1']) * (bb2['y2'] - bb2['y1']) iou = intersection_area / float(bb1_area + bb2_area - intersection_area) assert iou >= 0.0 # iou 는 0보다 크거나 같아야함 (최악으로 못맞춘 경우) assert iou <= 1.0 # iou 는 1보다 작거나 같아야함 (최상으로 잘맞춘 경우) return iou # iou 값을 반환함 | cs |
+ 이나스AI에는 인공지능 관련 다양한 강의가 있습니다.
- Object detection, Text To Speech, Reinforcement learning, OCR, Chatbot, Time series prediction,
- Meta learning, eXplainable AI, Transformer/BERT/GPT, Graph-based ML, etc
- 소스코드, 다이어그램 및 중간데이터에 기반하여 인공지능 알고리즘들의 작동원리와 구조를 이해하기 쉽고 정확하게 설명합니다.
+ 작업할 때 켜놓는 라이브 스트리밍 study with me 채널도 운영하고 있습니다.
댓글
댓글 쓰기