Intersection over Union (IoU)
교집합 대비 합집합(IoU)이 객체 검출 정확도를 측정하는 방법을 알아봅니다. Ultralytics YOLO26 평가 및 공간 정밀도 최적화에서 IoU의 역할을 살펴봅니다.
교집합 대비 합집합 (IoU)은 두 경계 간의 겹침을 측정하여 객체 검출기의 정확도를 정량화하는 컴퓨터 비전의 기본 지표입니다. 기술적으로는 Jaccard 지수라고도 하는 IoU는 예측된 바운딩 박스가 정답 박스, 즉 사람 어노테이터가 라벨링한 객체의 실제 위치와 얼마나 잘 일치하는지 평가합니다. 점수 범위는 0에서 1까지이며, 0은 겹침이 전혀 없음을, 1은 픽셀 단위로 완벽하게 일치함을 나타냅니다. 이 지표는 YOLO26과 같은 모델의 공간적 정밀도를 평가하는 데 필수적이며, 단순한 분류를 넘어 시스템이 객체의 위치를 정확히 파악하도록 합니다.
겹침 측정의 원리#
IoU의 기본 개념은 직관적입니다. 두 박스가 교차하는 영역의 면적을 두 박스가 합쳐서 차지하는 전체 면적(합집합)으로 나눈 비율을 계산합니다. 이 계산은 객체의 전체 크기로 겹침을 정규화하므로 IoU는 크기에 불변인 지표로 활용됩니다. 즉, 컴퓨터 비전 모델이 거대한 화물선을 검출하든 작은 곤충을 검출하든 성능을 공정하게 평가할 수 있습니다.
표준 객체 검출 워크플로에서 IoU는 예측을 "참 양성" 또는 "거짓 양성"으로 판정하는 주요 필터입니다. 평가 과정에서 엔지니어는 일반적으로 0.50 또는 0.75와 같은 특정 임계값을 설정합니다. 겹침 점수가 이 값보다 높으면 해당 검출은 올바른 것으로 집계됩니다. 이러한 임계값 설정 과정은 다양한 클래스와 난이도 수준에서 모델의 정확도를 요약하는 평균 정밀도 평균 (mAP)과 같은 종합 성능 지표를 계산하기 위한 전제 조건입니다.
실제 적용 사례#
모호한 근사치가 실패나 안전 위험으로 이어질 수 있는 산업에서는 높은 공간적 정밀도가 중요합니다. IoU는 AI 시스템이 물리적 세계를 정확하게 인식하도록 보장합니다.
- 자율주행: 자동차 분야의 AI에서 자율주행 자동차는 보행자가 존재한다는 사실만 감지해서는 안 되며, 차선에 대한 보행자의 정확한 위치를 파악해야 합니다. 테스트 중 높은 IoU 점수는 자율주행 차량의 인식 스택이 장애물의 경계를 정확하게 구분할 수 있음을 검증하며, 이를 통해 안전한 경로 계획과 충돌 회피가 가능해집니다.
- 정밀 의료: 헬스케어 분야의 AI에서 IoU는 MRI 스캔의 종양 분할과 같은 작업에 필수적입니다. 영상의학 전문의는 의료 영상 분석을 통해 병변의 성장 또는 축소를 측정합니다. IoU가 높은 모델은 예측된 경계가 실제 종양 가장자리를 가깝게 따르도록 하며, 이는 방사선 치료의 선량을 결정하고 건강한 조직을 보존하는 데 매우 중요합니다.
Python으로 IoU 계산하기#
개념은 기하학적이지만 구현은 수학적입니다. ultralytics 패키지는 IoU를 효율적으로 계산할 수 있는 최적화된 유틸리티를 제공하므로, 모델 동작을 검증하거나 예측을 필터링하는 데 유용합니다.
import torch
from ultralytics.utils.metrics import box_iou
# Define ground truth and prediction boxes: [x1, y1, x2, y2]
ground_truth = torch.tensor([[100, 100, 200, 200]])
predicted = torch.tensor([[110, 110, 210, 210]])
# Calculate the Intersection over Union score
iou_score = box_iou(ground_truth, predicted)
print(f"IoU Score: {iou_score.item():.4f}")
# Output: IoU Score: 0.6806모델 학습 및 최적화에서의 IoU#
IoU는 단순한 평가 지표를 넘어 딥러닝 네트워크 학습에 직접 사용되는 구성 요소입니다.
- 손실 함수의 발전: 평균 제곱 오차 (MSE)와 같은 기존 거리 지표는 바운딩 박스의 기하학적 특성을 포착하지 못하는 경우가 많습니다. 최신 검출기는 일반화된 IoU (GIoU)와 완전한 IoU (CIoU) 같은 IoU 기반 손실 함수를 사용합니다. 이러한 고급 함수는 종횡비와 중심점 간 거리를 고려하여 신경망이 더 빠르게 수렴하도록 유도합니다.
- 중복 제거: 추론 중에 모델이 약간씩 다른 박스로 동일한 객체를 여러 번 식별할 수 있습니다. 비최대 억제 (NMS)라는 기법은 IoU를 사용하여 이러한 중복 검출을 식별합니다. 가장 높은 신뢰도 점수를 가진 박스를 유지하고, 해당 박스와 IoU가 높은 주변 박스를 억제하여 최종 출력을 깔끔하게 만듭니다.
IoU와 관련 지표의 구분#
머신러닝 모델을 효과적으로 평가하려면 IoU를 다른 유사도 지표와 구분하는 것이 중요합니다.
- IoU와 정확도 비교: 정확도는 모델이 올바른 클래스를 얼마나 자주 예측하는지(예: "개"와 "고양이") 측정하지만 위치는 고려하지 않습니다. 이미지의 잘못된 모서리에 박스를 그리더라도 모델의 분류 정확도는 100%이고 IoU는 0%일 수 있습니다. IoU는 위치 추정 품질을 직접 평가합니다.
- IoU와 Dice 계수 비교: 두 지표 모두 집합 유사도를 측정하지만, Dice 계수(픽셀 겹침의 F1 점수)는 교집합에 더 큰 가중치를 부여합니다. Dice는 불규칙한 형태를 다루는 시맨틱 분할 작업에서 더 일반적인 표준인 반면, IoU는 직사각형 바운딩 박스 검출의 표준입니다.
높은 IoU 점수를 얻으려면 모델에 정밀한 학습 데이터가 필요합니다. Ultralytics Platform과 같은 도구는 고품질 데이터 어노테이션 생성을 지원하므로, 팀이 학습을 시작하기 전에 정답 박스를 시각화하고 객체에 정확히 맞는지 확인할 수 있습니다.









