안녕하세요. 오늘은 본격적으로 Object Detection에 대해 공부하기 전에 IOU, NMS, mAP 개념에 대해 공부하려고 합니다.
IOU는 모델의 예측 Bounding Box가 GT(Ground Truth)와 비교했을 때 얼마나 겹쳐있냐를 알려주는 지표입니다.
Object Detection을 수행하면 예측 결과가 과연 어느정도 정확하게 맞췄는지 알려줄 지표가 필요합니다. 모델이 얼마나 Bounding Box 예측을 잘 했는지 말이지요.
우리는 IOU를 통해 모델의 성능을 예측할 수 있습니다.(정확히는 Bounding Box 위치에 대해서만 입니다.)
IOU는 GroundTruth와 Prediction 영역의 교집합과 합집합으로 계산합니다. 1에 가까울수록 좋은 수치를 나타냅니다.
공식은 다음과 같습니다.

IOU = 교차된 영역의 넓이/두 영역의 합집합 넓이
즉, 교차된 영역의 넓이가 클수록 IOU는 1에 근사합니다.
NMS란, Selective Search된 Bounding Box를 조건에 맞는 Bounding Box만 남겨주는 알고리즘입니다.
Selective Search는 슬라이딩 윈도우보다는 상대적으로 적은 수의 Bounding Box를 추정할 가능성이 크지만, 이중에서 불필요한 Box를 미리 쳐낼 수 있습니다.

NMS의 수행 로직은 다음과 같습니다.
Search된 Bounding Box중 Confidence Score > Confidence threshold인 경우를 택한다.
이제 이렇게 간추려진 Bounding Box를 Confidence Score가 큰 순서대로(내림차순)정렬해준다.
정렬된 Bounding Box를 살피면서 다른 겹쳐있는 Bounding Box의 IOU >= IOU threshold인 경우 제외시켜준다.
이를 반복한다.
남아있는 Bounding Box만 선택해준다.
실제 예시를 들어서 설명하겠습니다.

Image에 Bounding Box를 Selective Search해줍니다.
이때 Confidence threshold = 0.5, IOU threshold = 0.5로 했다고 가정하겠습니다.
이렇게 나온 Box를 Confidence Score가 높은 순서대로 정렬합니다.
즉, 빨간색 0.9, 파란색 0.9, 파란색 0.7, 빨간색 0.6 순서로 정렬합니다.
이때 다음처럼 IOU가 나온다고 가정하면 모두 IOU threshold보다 큰 값이므로 제거됩니다.

각각 빨간색 0.9, 파란색 0.9를 기준으로 겹쳐진 IOU가 IOU threshold보다 큰 경우를 나타낸 것입니다.
최종적으로는 다음과 같은 Bounding Box만 남게됩니다.

이렇게 NMS를 사용하면 모델이 학습하기 전에 불필요한 Bounding Box를 제거할 수 있습니다.
일반적으로 예시처럼 모든 것이 깔끔하게 정리되진 않지만, 모델 학습 시간을 줄이는데 효과를 줄 수 있습니다.
mAP란, 실제 Object가 Detected된 재현율(Recall)의 변화에 따른 정밀도(Presion)의 값을 평균한 성능 수치입니다.
한마디로 AP를 평균(mean)한 수치입니다.
Precision(정밀도)와 Recall(재현율)을 재현율의 변화에 따라 그래프에 나타낸 것을 PR curve라고 합니다.

그리고 이런 PR curve 그래프를 선으로 연결한 밑넓이를 AP라고 합니다.

즉, AP는 한 Object에 대해서 평가가 가능합니다.
한 Image에 대해 Object가 여러개인 경우 이런 AP를 각 Object마다 구해 평균을 낸 값이 mAP입니다.

"Recall/Precision값을 어떻게 변경시킬까?"
앞서 NMS에서 Confidence threshold값을 변경시켜가면서 각 object마다 recall, precision값을 계산할 수 있습니다. Confidence threshold값이 작을수록 recall이 커지고, Confidence threshold값이 커질수록 precision이 커지는게 일반적입니다.
Object Detection에서 맞았냐 틀렸냐를 결정하는 것은 "Bounding Box를 올바르게 찾았는가"와 "Bounding Box내에서 분류를 잘 했는가"입니다.
즉, IOU threshold가 고정되어 있다면 Confidence threshold와 모델의 성능이 precision, recall을 결정합니다. MS-COCO에서는 IOU threshold가 변하기 때문에 이런 경우에서는 IOU threshold도 precision, recall에 영향을 미칩니다.