ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 세그멘테이션 성능 평가의 핵심: IoU, mIoU, Boundary IoU
    AI 2026. 2. 19. 10:02

    컴퓨터 비전 모델, 특히 객체 검출(Object Detection)과 세그멘테이션(Segmentation) 모델의 성능을 평가할 때 가장 먼저 마주하게 되는 지표들이 있습니다. 오늘은 IoU의 기본 개념부터 실무에서 가장 많이 쓰이는 mIoU, 그리고 정밀도를 높인 Boundary IoU까지 한 번에 정리해 보겠습니다

     

    IoU (Intersection over Union)

    IoU는 두 영역이 얼마나 겹치는지를 나타내는 가장 직관적인 지표입니다. 모델이 예측한 영역(Prediction)과 실제 정답 영역(Ground Truth)의 중첩 정도를 측정합니다.

    💡 원리 및 공식

    "전체 합집합 영역 중 교집합 영역이 차지하는 비율"을 계산합니다.

    $$IoU = \frac{\text{Area of Overlap}}{\text{Area of Union}} = \frac{|A \cap B|}{|A \cup B|}$$
    • 0: 두 영역이 전혀 겹치지 않음
    • 1: 두 영역이 완벽하게 일치함
    • Confusion Matrix 표현: $IoU = \frac{TP}{TP + FP + FN}$

    🧐 왜 정확도(Accuracy) 대신 IoU를 쓸까요?

    픽셀 단위의 단순 정확도를 사용하면, 배경이 90%이고 물체가 10%인 이미지에서 모델이 "전부 배경이다"라고만 예측해도 90%의 정확도가 나옵니다. IoU는 물체가 있는 '영역' 자체의 일치성을 보기 때문에 이런 데이터 불균형 문제를 극복하고 훨씬 객관적인 성능 지표가 됩니다

     

    세그멘테이션에서의 IoU 계산 (Confusion Matrix 활용)

    세그멘테이션에서는 각 픽셀이 어떤 클래스에 속하는지 분류합니다. 이때 IoU를 **오차 행렬(Confusion Matrix)**의 요소인 TP, FP, FN으로 표현할 수 있습니다.

    • TP (True Positive): 모델이 물체라고 예측했고, 실제로도 물체인 영역 (교집합)
    • FP (False Positive): 모델은 물체라고 했지만, 실제로는 배경인 영역 (잘못된 예측)
    • FN (False Negative): 실제로는 물체인데, 모델이 배경이라고 예측한 영역 (놓친 부분)

    이를 수식으로 나타내면 다음과 같습니다.

    $$IoU = \frac{TP}{TP + FP + FN}$$

    참고: 분모인 $TP + FP + FN$은 결국 두 영역을 합친 전체 면적(합집합)과 같습니다.

     

    mIoU (mean Intersection over Union)

    실제 딥러닝 모델은 '사람', '차', '나무' 등 여러 클래스를 동시에 분류합니다. mIoU는 모든 클래스에 대한 IoU 값의 평균을 의미하며, 세그멘테이션 모델의 전체 성능을 나타내는 표준 지표입니다.

    💡 원리 및 공식

    각 클래스별로 IoU를 구한 뒤, 이를 모두 더해 클래스의 개수로 나눕니다.

    $$mIoU = \frac{1}{n} \sum_{i=1}^{n} IoU_i$$
    • 의의: 면적이 넓은 클래스(예: 배경)뿐만 아니라 면적이 좁은 클래스(예: 보행자)의 예측 성능까지 공평하게 반영합니다.

    🌟 mIoU가 중요한 이유

    특정 클래스(예: 배경)의 면적이 압도적으로 넓더라도, 모든 클래스의 IoU를 공평하게 평균 내기 때문에 희소한 클래스(예: 작은 표지판)를 모델이 얼마나 잘 잡아내는지까지 종합적으로 평가할 수 있습니다. 그래서 시맨틱 세그멘테이션(Semantic Segmentation) 분야에서 가장 표준적인 평가지표로 활용됩니다.

     

    Boundary IoU (BIoU)

    기존의 Mask IoU(우리가 흔히 아는 일반 IoU)는 객체의 크기(Size)에 따라 평가 점수가 왜곡되는 치명적인 약점이 있습니다.

    • 큰 객체의 문제: 큰 자동차나 건물 마스크의 경우, 내부는 꽉 차 있고 테두리(경계)가 조금 삐져나가거나 엉성해도 전체 면적 대비 교집합 비율이 높아서 점수가 0.9 이상으로 매우 높게 나옵니다.
    • 작은 객체의 문제: 반면 작은 물체는 1~2픽셀만 어긋나도 점수가 확 깎입니다.

    Boundary IoU는 "내부 픽셀은 신경 쓰지 말고, 실제 물체의 윤곽선(Boundary)이 얼마나 일치하는가만 보자"는 아이디어에서 출발했습니다.

     

    BIoU는 전체 마스크를 다 쓰지 않고, 경계선으로부터 일정 거리 $d$ 이내에 있는 '띠(Ribbon)' 영역만 추출하여 IoU를 계산합니다.

    🛠️ 계산 단계

    1. 경계 추출: 실제 정답($G$)과 예측값($P$)에서 각각 외곽선(Boundary)을 추출합니다.
    2. 거리 임계값 $d$ 설정: 경계선으로부터 안쪽으로 $d$ 픽셀만큼의 영역을 지정합니다. (보통 이미지 대각선 길이의 2% 정도로 설정)
    3. 마스크 생성:
      • $G_d$: 실제 정답의 경계로부터 거리 $d$ 이내에 있는 픽셀 집합
      • $P_d$: 예측값의 경계로부터 거리 $d$ 이내에 있는 픽셀 집합
    4. IoU 계산: 이 얇은 '띠' 영역들 사이의 교집합과 합집합을 구합니다.
    $$BIoU(G, P) = \frac{|(G_d \cap G) \cap (P_d \cap P)|}{|(G_d \cap G) \cup (P_d \cap P)|}$$

    쉽게 말하면?

    도넛 모양(혹은 테두리 띠)을 만들어서, 그 띠가 얼마나 겹치는지를 보는 것입니다.

     

     

    한눈에 비교하기

    지표 평가 대상 주요 특징
    IoU 단일 객체/클래스 두 영역의 단순 중첩도 측정
    mIoU 모델 전체 성능 모든 클래스별 IoU의 산술 평균 (가장 대중적)
    Boundary IoU 객체의 테두리(Edge) 큰 객체의 점수 왜곡 방지, 경계 정밀도 강조

     


    Mask IoU의 정의

    Mask IoU는 모델이 예측한 픽셀 단위의 형태(Mask)와 실제 정답(Ground Truth)의 픽셀 영역이 얼마나 일치하는지를 측정하는 지표입니다.

    • Box IoU: 물체를 감싸는 '사각형(Bounding Box)'이 얼마나 겹치는지 측정
    • Mask IoU: 물체의 실제 '실루엣(Mask)'이 얼마나 겹치는지 측정

    왜 'Mask'라는 이름이 붙었을까?

    객체 검출(Object Detection) 모델인 YOLOFaster R-CNN은 사각형 박스만 찾으면 되기 때문에 Box IoU를 씁니다. 하지만 Mask R-CNN 같은 인스턴스 세그멘테이션 모델은 사각형 안에서 물체의 정확한 모양(Mask)까지 찾아내야 합니다. 이때 이 모양이 얼마나 정확한지 평가하기 위해 Mask IoU라는 용어를 명시적으로 사용하게 되었습니다.

    원리 및 공식

    계산 원리는 일반적인 IoU와 동일하지만, 계산의 단위가 픽셀(Pixel)입니다.

    $$Mask\ IoU = \frac{\text{Area of overlap pixels (교집합 픽셀 수)}}{\text{Area of union pixels (합집합 픽셀 수)}}$$
    1. 교집합(Intersection): 모델이 물체라고 예측한 픽셀과 실제 물체 픽셀이 겹치는 개수
    2. 합집합(Union): 모델이 물체라고 예측했거나, 실제 물체인 모든 픽셀의 개수

     

    Mask IoU vs mIoU (헷갈리지 마세요!)

    많은 분이 이 둘을 헷갈려 하시는데, 역할이 전혀 다릅니다.

    • Mask IoU (방법): "우리는 박스가 아니라 픽셀 모양으로 IoU를 잴 거야!" (측정 방식)
    • mIoU (평균): "그렇게 클래스별로 구한 Mask IoU들을 다 더해서 평균 낼 거야!" (통계 방식)

    정리하자면: 세그멘테이션 모델의 최종 성능 지표인 mIoU는 사실 '여러 클래스의 Mask IoU를 평균 낸 값'을 의미합니다.

Designed by Tistory.