0. Intro

NMS란? Non-maximum Suppression의 약자로써, 비최대 억제 알고리즘으로 생각하면 된다. 말 그대로, 최대가 아닌 박스들(=Bounding Box)을 삭제하는 알고리즘이다.

Object Detection Task에서 객체에 대한 최종 Bounding Box를 결정지을 때 사용한다.


1. Principle

작동 방식은 다음과 같다.

  1. Prediction할 이미지를 Network에 Forward 시킨다.출력 가능한 모든 박스를 구한다. (NMS 이전이므로, 수십~수백개의 박스 정보가 나온다.)
  2. 해당 박스 정보들을 Confidence Score 순으로 정렬한다.
  3. 박스 정보들의 Confidence Score와, 각 박스 간의 IoU를 바탕으로 하여 NMS를 적용한다.
  4. NMS 적용 후에는, 알맞는 박스라고 여겨지는 값들만 출력된다.

핵심 키워드를 뽑자면, Confidence ScoreIoU라고 생각한다. (이 두 단어로 구현이 가능함.)

1-1. Confidence-Score?

여기서 **Confidence Score(신뢰도, 신뢰 점수)**라고 하는 것은 네트워크가 정답을 도출해냈을 때, 그 정답에 대해 n%의 확신도를 갖는다는 의미이다.

예를 들어, A 박스에 대한 Confidence Score가 0.75라면, 네트워크가 생각했을 때 "아, 이 박스를 내가 도출하긴 했는데, 이 박스가 정답일 확률은 75% 정도야." 라는 의미이다.

1-2. IoU?

IoU는 Intersection Over Union 의 약자이다.

(Object Detection 을 다뤄본 개발자라면 많이 접해봤을 듯한 그림.)