Intersection over Union ?
Intersection over Union (IoU)는 object detection에서 사용되는 도구다. 성능 지표는 아니고, 객체 인식 모델의 성능 평가를 하는 과정에서 사용되는 도구로 생각하면 된다. 정의는 아래와 같다.
IoU = 교집합 영역 넓이 / 합집합 영역 넓이
두 box의 크기가 동일하다 가정하면, 두 개의 box가 적어도 2/3는 겹쳐줘야 0.5의 값이 나오기 때문에 여러 곳에서 IoU의 threshold 값을 0.5로 잡아서 사용하는 듯 하다.
모델의 성능을 높여보고자 IoU threshold 값을 올려서 모델링을 해도 되기는 하는데, 객체 인식 모델의 성능이라는 게 feature extractor, classifier, regressor, IoU, NMS 등등의 것들과 복합적으로 얽혀있는터라 단순히 IoU threshold 값을 올려준다해서 무조건 성능이 올라가는 현상을 기대해서는 안 된다.
( 뭐.. IoU threshold를 낮게 잡은 다음 mAP를 구하면 성능이 올라가기야 하겠다만.. 다른 연구들이 택한 IoU threshold 값을 잡는 게 합리적이면서 태클을 피할 수 있는 방법이다. )
조금만 더 깊게 알아봅시다.
IoU는 object detection model 훈련 과정, 예측 과정 등 여러 곳에서 유용하게 쓰인다. R-CNN 모델에서는 pretrained CNN에 proposed region을 넣어서 뽑아낸 feature map을 SVM으로 분류하기 위해 SVM을 학습 시키는 과정에 사용된다.
이게 무슨 말이냐고?? 보다 나은 이해를 위해 예로 들어 조금 더 설명하고 넘어가도록 하자.
먼저 R-CNN의 학습 & 예측 흐름을 알아보자.
- Selective Search 알고리즘으로 한 개의 이미지에서 약 2,000개의 이미지를 잘라낸다.
그리고 이 이미지들을 사람들은 proposed region 이라고 부른다. - 잘라낸 2,000개의 이미지들을 객체 후보군으로 가정한 상태로 훈련을 진행한다.
다시 말하면,
R-CNN은 object detection task를 위해
객체의 종류 분류를 위해서는 일반적인 classification과 같은 방법을 사용하고,
객체의 위치 추적을 위해서는 region proposal (=selective search)을 사용한다는 말이다. - 아직 무슨 말인지 헷갈린다. 더 나은 이해를 위해 2,000개의 proposed region들 중 한 개로 범위를 좁혀보자.
갈색이 ground-truth이고 불투명 회색 배경의 보라색이 proposed region들 중 하나에 해당된다.
이 놈을 pretrained CNN에 넣어 feature map을 뽑아내고,
이 feature map으로 두 개의 모델을 학습시킨다.
하나는 proposed region가 배경인지 아니면 어떤 객체인지 분류하는 SVM classifier를 학습시키는 것이고,
다른 하나는 proposed region에 객체가 포함되어 있을 경우 (즉, 배경이 아닐 경우)
proposed region의 좌표가 실제 ground-truth 좌표와 같아질 수 있도록 regressor를 학습시키는 것이다. - 예측 과정에서는 ground-truth 없이 오로지 학습된 가중치 값들만으로 예측을 진행한다.
(1) selective search -> proposed regions
(2) proposed regions -> pretrained CNN -> feature map
(3-1) feature map을 SVM classifier가 배경이 아닌 객체로 분류하면,
(3-2) 같은 feature map을 regressor에 넣어 예상되는 객체의 좌표 정보를 얻는다.
지금까지 R-CNN 학습 과정에 대해 알아보았는데 이 학습 과정에서 애매한 점이 있다. 바로 proposed region에 대한 label은 어떤 것이냐하는 점이다. 제공되는 데이터셋에는 객체에 대한 ground truth만 달려있을 뿐 proposed regions에 대한 label이 따로 존재하지 않는다. 위의 예시에서만 봐도 그렇다. 잘려진 이미지를 SVM classifier과 regressor에 넣어 학습시켜야 하는데 학습의 기준이 되는 label이 존재하질 않는다.
그래서 사용하는 게 바로 IoU이다.
R-CNN에서는 ground-truth와 proposed-region 사이의 IoU 값이 thr보다 높은 경우,
해당 region을 객체로 바라보고 ground-truth와 같은 class로 labelling한다.
이 정보를 모델 학습에 이용하게 된다.
따라서 "R-CNN에서는 IoU가 labelling 과정에서 핵심적인 역할을 한다"고 말할 수 있을 것 같다.
광고 보면서 잠깐 머리를 식히자...ㅎㅎ
Non-Maximum Suppression(NMS)에서도 IoU 사용된다. NMS는...
object detection 예측 결과가 위와 같이 겹치는 형태로 나타났을 때, 이들 중에서 score가 가장 높은 bounding box 한 개만 남도록 후처리 과정이다. 이때 겹치는 것을 확인하는 과정에 IoU가 사용된다.
지금까지 IoU와 IoU가 사용되는 곳에 대해 정리해보았다. 틀린 설명도 있겠지만.. 아직 블로그가 유명한 것도 아니니 큰 문제는 없을 것 같다ㅎㅎㅎ 그래도 혹시라도 틀린 부분을 발견하신 분이 계시다면 댓글로 정정 부탁드립니다.
< 참고 사이트 >
https://blog.naver.com/PostView.nhn?blogId=ambidext&logNo=221367245430&categoryNo=0&parentCategoryNo=0&viewDate=¤tPage=1&postListTopCurrentPage=1&from=postView
http://ronny.rest/tutorials/module/localization_001/iou/
https://blog.naver.com/sogangori/220993971883
https://gist.github.com/aisolab/46f73657c7fcbec91004708e01a67ba0
http://tanukee.blogspot.com/2018/07/r-cnn_30.html
https://man-about-town.tistory.com/51
'Deep Learning > 인공지능 개념 정리' 카테고리의 다른 글
Probability Calibration 개념 정리 (0) | 2021.12.16 |
---|---|
0 ~ 255의 픽셀 값을 왜 0 ~ 1로 rescale하는 걸까? (1) | 2021.09.03 |
CNN에서 커널 사이즈는 왜 3x3을 주로 쓸까? (0) | 2020.01.15 |
CNN이 이미지에 더 효율적인 이유 (0) | 2020.01.14 |
joint training, alternate training (0) | 2019.08.07 |