Deep Learning

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

꿀개 2022. 12. 22. 14:00

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 이다.