본문 바로가기
  • AI 개발자가 될래요
Deep Learning

Object Detection, Segmentation 분야에 자주 사용되는 MIoU에 대하여..

by 꿀개 2022. 12. 22.

MIoU (Mean Intersection over Union)

Object detection, Segmentation 분야에서 자주 사용되는 성능 평가 지표이다.

 

직역하면 IoU 값들에 대한 평균이며,

IoU 는 입력 값이 1개일 때 사용하고 MIoU는 2개 이상일 때 사용한다.

딥러닝 모델의 경우 mini-batch 사이즈에 따라 여러 개의 이미지를 평가하기 때문에 MIoU를 주로 사용한다.

1. IoU (Intersection over Union)

IoU를 수식으로 나타내면 아래와 같다.

교집합 : 합집합  즉, 합집합에 대한 교집합의 비 라고 이해할 수 있다.

 

IoU

 

Object Detection에서는 IoU 값이 1에 가까울 수록 좋은 성능을 가졌다고 평가한다.

IoU 값이 1이라는 의미는 분모와 분자가 같다. 즉 두 박스의 크기가 같다는 것을 의미한다.

 

2. MIoU (Mean Intersection over Union)

MIoU는 여러 개의 IoU 값들에 대한 평균이다.

 

2-1. MIoU 계산 방법

코드에서 MIoU를 계산하는 방법은 다음과 같다.

Ground Truth에 해당하는 Matrix A와 Segmentation Prediction에 해당하는 Matrix B가 있다고 가정해 보자.

 

 

매트릭스의 크기는 5x5 이고, 클래스는 0 ~ 4 총 5개 이다.

 

1. 각 클래스에 대한 히스토그램 생성

Ground Truth(이하 GT)와 Prediction(이하 P) 매트릭스에 대한 클래스 별 빈도수(히스토그램)을 구한다.

 

GT 에서 0의 개수는 2개, 1의 개수는 5개, ... , 4의 개수는 8개 이다.

P 에서 0의 개수는 4개, 1의 개수는 4개, ... , 4의 개수는 8개 이다.

 

따라서 GT와 P의 각 클래스에 별 빈도수는 아래와 같이 나타낼 수 있다.

 

클래스 별 빈도수

 

2. 2D 매트릭스를 1D 벡터로

GT와 P 매트릭스를 1D 벡터로 변환한다.

 

매트릭스의 벡터화

 

3. {(클래스 개수) *GT 값 + P 값} 빈도수 카테고리 매트릭스 생성

GT와 P 벡터의 원소를 1개 씩 탐색하면서 (GT 값, P 값) 쌍을 만들고,

이에 해당하는 (클래스 개수) *GT 값 + P 값 을 계산하여 매트릭스 C를 만든다.

 

예를 들면

  • GT = 0, P = 0 일 때 C = 5 * 0 + 0 = 0 이다.
  • GT = 1, P = 0 일 때 C = 5 * 1 + 0 = 5 이다.
  • GT = 1, P = 2 일 때 C = 5 * 1 + 2 = 7 이다.
  • GT = 2, P = 2 일 때 C = 5 * 2 + 2 = 12 이다.

{(클래스 개수) *GT 값 + P 값} 매트릭스 C

 

이후 매트릭스 C 원소 값의 빈도 수를 나타내는 카테고리 매트릭스를 생성한다.

 

매트릭스 C에서 0은 0번 나왔으므로 카테고리 매트릭스의 0번째 값은 0이다.

이와 동일한 방식으로 5는 2번 나왔으므로 2 이고,

24는 8번 나왔으므로 8이다.

 

카테고리 매트릭스

 

4. confusion matrix 생성

카테고리 매트릭스를 (클래스 개수) X (클래스 개수) 형태의

정사각 행렬로 변환하여 Confusion Matrix를 생성한다.

 

Confusion Matrix의 대각 행렬은 GT와 P가 일치하는 부분이다.

그 외는 불일치 부분이다.

 

Confusion Matrix

 

5. 클래스 별 IoU 계산

클래스 별 IoU를 계산하기 위해 대각 행렬 원소를 1개씩 탐색한다.

 

IoU의 의미는 위에서 다뤘듯이 합집합에 대한 교집합의 비 인데

 

여기에선 대각 행렬 원소를 포함하는 행과 열의 원소들을 모두 합한 것이 합집합이 되고,

대각 행렬 원소가 교집합이 된다.

 

아래 그림을 보면 쉽게 이해 가능하다.

 

클래스 별 IoU 계산

 

클래스 4의 IoU 값이 1인 의미는 클래스 4에 국한하여 모든 픽셀이 맞았다는 뜻이다.

 

이 때 한 번도 발생하지 않은 케이스의 경우 합집합 값이 0이 되어 무한대로 발한하는 문제가 발생한다.

이럴 경우에는 이 값을 Nan 으로 처리하고, 평균 계산 시 제외한다.

 

6. MIoU 계산

클래스 별 IoU 계산 결과의 평균이 MIoU이다.

 

위 예제를 기준으로 MIoU는 (0 + 2/7 + 3/8 + 3/5 + 1) / 5 =  약 0.4521 이다.