[딥러닝] IoU(Intersection over Union)란?
Computer Vision

[딥러닝] IoU(Intersection over Union)란?

반응형

 

엊그제 주간업무회의 도중에 A가 B에게 말했습니다.

 

 

"이건 mAP가 아니라 IoU 아닌가요? 제대로 적은거 맞나요?!"

 

 

저는 뭔지 몰라서 조용히 있었습니다...

(변명하자면,, 제 파트가 아니였어요ㅠ_ㅠ)

 

 

이제는.. IoU, mAP관련 이야기가 나오면

"그 수치는 mAP가 아니라 IoU죠!"

라고 말하는 멋쟁이가 되기 위해 공부했습니다.

 

 

여러분에게 쉽게 설명드릴테니

우리 같이 멋쟁이가 되어 봅시다!!  : )

 

 

목차 :

  1. Why IoU?
    • 왜, IoU를 사용하는지?
  2. What IoU?
    • 그래서, IoU가 뭔데?
  3. Where IoU?
    • 알겠어, 어디에 쓰는데?

 

 

 

1. Why IoU?


IoU의 개념과 정의를 알아보기 전에,

우선, IoU를 왜?! 사용하는지 짚고 넘어가볼께요.

 

 

IoU는 쉽게 말해서 "도구"예요.

우리가 객체를 검출할 때 보통 사각형으로 Box를 그려서 예측하잖아요?

Box를 얼마나 정답과 가깝게 그렸느냐?수치화하는데 사용하는 도구 이름이 바로 IoU입니다.

 

 

https://pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/

자, 위 사진은

녹색 Box가 실제 정답이고,

분홍색 Box가 예측한 결과예요.

 

 

여러분은 잘 예측했다고 보시나요? 아니면 조금 부족하다고 보시나요?

저는 긴가민가합니다. 잘한 것 같기도하고 못한 것 같기도 해요.

저 처럼 긴가민가하거나 명확히 말하기가 어려운 경우들이 많은데요.

 

 

이렇게 주관적인 감각에 의존하면 근거가 없는 것이랑 동일하잖아요?!

 

 

그래서,

박스를 정답과 유사하게 잘 예측했다.

혹은, 못 예측했다를 판단하는 기준으로써

IoU가 존재한다고 생각하시면 되겠습니다.

 

 

 

 

 

 

 

 

 

 

2. What IoU?


자, 그럼 IoU가 뭔지 한번 맛 볼까요?

 

 

IoU 란 쉽게 말해서

"2개 영역이 얼마나 겹쳐져 있는가?"를 0과 1사이의 숫자로 나타낸 값이예요.

"아, 몇 IoU면 이 정도 겹치는 구나!"를 느껴보세요!

위 사진을 보면서

'1에 가까울수록 예측을 잘했고,  0에 가까울수록 예측을 못했다.'

라고 판단할 수 있겠군요.

 

 

추가로, 

다른 여러 곳에서 일반적으로 IoU threshold 값을 0.5로 사용합니다.

위 사진을 기준으로 생각 해보았을 때,

0.5 정도면 합리적인 것 같아 보이기도 합니다.

 

0.5로 고정되어 있는게 아닌 0.7 등등 다양하게 설정 할 수 있습니다.

더보기

* IoU threshold에 관한 다른 의견

https://hasty.ai/docs/mp-wiki/metrics/iou-intersection-over-union

ai에 대해 자신감 넘치는 회사들은 IoU threshold에 관해 위 처럼 구분한다고 합니다.

IoU > 0.7 정도를 좋은 점수라고 생각하네요.

참고하시면 좋을 듯 합니다!

 

 

 

* 사례

모 대회에서 IoU를 0.8 기준으로 채점한다고 하였으나 번복하고 0.65로 낮춘 사례가 있다고 합니다.

지나가다 본 글이 생각나서 알려드립니다.

조금 더 아시는 분은 댓글로 알려주시면 감사하겠습니다. :D

 

 

 

이제, IoU의 개념은 알았으니 수식을 바라봅시다.

IoU의 수식을

한마디로 쉽게 말하자면,

IoU = 영역의 교집합 / 영역의 합집합

입니다.

 

 

IoU에서

I 에 해당하는 Intersection은 두 영역의 교집합이 되고,

U 에 해당하는 Union은 두 영역의 합집합이 된다고 생각하시면 편합니다.

이해를 돕기 위해 이를 그림으로 나타내면,

위와 같이 표현이 가능합니다.

 

 

추가적으로,

두 영역에 대한 정보를 이용하여 Intersection(영역의 교집합)을 먼저 구하고,

 

 

 

 

 

3. Where IoU?


IoU에 대해서 이해를 했으니, 어디에서 주로 사용되는지 궁금하시죠..?!

IoU는 Object Detection의 평가 지표로서 많은 곳에 사용됩니다.

일일이 나열하는게 어려울 정도로요,,

 

 

하나 예시를 들자면,

아래 표처럼 종종 사용하곤 해요.

FD Yolov5n Yolov5n(2yolo layer)
AP@IoU 0.5 95.9% 95.7&

 

 

위 표를 해석해 보자면,

FD(Face Detection) 분야의 Yolov5n과 Yolov5n(2yolo layer) 모델에 대한 성능 평가 시,
IoU threshold 값을 0.5 이상일 때 True로 기준을 잡았을 경우,
각각 95.9%, 95.7% AP를 나타내고 있습니다.

라고 읽을 수 있어야 해요. (AP 란? (클릭))

 

 

 

즉, IoU의 기준을 0.5로 잡고, 0.5 이상이면 제대로 검출(TP)되었다고 판단한다는 것이죠.

엇,, 제대로 검출(TP)란 무엇일까요?

우리 조금만 더 깊게 들어가봅시다.

 

 

 

 

 

Confusion Matrix

 

제대로된 검출(TP)의 뜻을 알기 위해서는

Confusion Matrix라는 아래 표만 알면 쉽게 이해할 수 있습니다.

 

아래 표 정말 중요한 기본 개념이니 천천히 읽으시면 이해하기 수월하실꺼예요. : )

\ Prediction
(예측 결과)
Positive Negative
Ground Truth
(실제 정답)
Positive TP
(True Positive)
예측 : 검출O
정답 : 검출O
FN
(False Negative)
예측 : 검출X
정답 : 검출O
Negative FP
(False Positive)
예측 : 검출O
정답 : 검출X
TN
(Ture Negative)
예측 : 검출X
정답 : 검출X

 

 

 

예시를 들어 먼저 설명해볼께요.

자, 상상해봅시다.

만약 우리가  "트럭"을 검출하는 인공지능 모델을 가지고 있으며,

고속도로 영상에서 트럭을 검출해내는 상황이라고요.

(트럭 외에 다른 학습 데이터(버스, 승용차 등)는 사용하지 않았다고 가정)

 

 

그 인공지능 모델이 실제 정답(GT) 트럭을 정확하게 검출한다면 "TP"입니다.

 

 

하지만, 그 인공지능 모델은 버스를 보고도 트럭이라고 검출할 수 있겠죠.

이 경우를 "FP"라고 합니다.

검출을 해내긴 했지만, 정답이 아닌걸 검출한 것이지요.

 

 

자, 그럼 "FN"은 무엇일까요?

고속도로 영상에서 우리의 인공지능 모델은 트럭을 찾지 못했지만, 실제로는 트럭이 있는 경우죠.

철조망이나 다른 차량에 가려져서 제대로 인식하지 못한 경우일 거예요.

 

 

그렇다면 마지막, "TN"

고속도로 영상에서 트럭은 없었고,

우리가 가진 인공지능 모델 또한 트럭을 검출하지 않은 것을 의미합니다.

 

 

 

 

자, 우리는 Confusion Matrix를 이해할 수 있게 되었어요.

TP, TN, FP, FN에 대해서도 이해해서 자신있게 말할 수 있을 정도로요.

 

 

이상으로,

Confusion matrix 관련 이야기는 다음 포스팅 "mAP"에서 더 깊게 들어가보도록 할게요.

마지막까지 읽으신 여러분, 감사합니다.  지식+1!!

 

 

 

 

 

 

참고자료
질문1. 사각형의 box가 아니라 다각형의 box일 경우 IoU는 어떻게 계산하나요?
답변1. https://gaussian37.github.io/math-algorithm-iou/

질문2. IoU말고도 GIoU, DIoU 등 여러가지가 있던데 그건 뭔가요?
답변2. https://silhyeonha-git.tistory.com/3

 

 

 

반응형