Logical Scribbles

[객체 탐지] NMS (Non-Maximum Suppression) 본문

딥러닝/딥러닝 이론

[객체 탐지] NMS (Non-Maximum Suppression)

KimJake 2023. 11. 21. 20:52

이번 포스팅에서는 객체 탐지에서 수많은 bounding box(BB)를 컨트롤 하는 방법들을 알아보자. 객체 탐지 과정 중에는 객체가 존재하는 위치 주변에 높은 스코어를 가진 여러개의 BB가 생성이 되는데, 이 중 정말 객체가 있을만한 하나만의 BB를 선택하고 싶은 것이다. 이때 적용하는 기법이 NMS(Non-Maximum Suppression)이다.

 

NMS 수행 전/후

 

1. NMS

 

 

※NMS의 과정

  1. 모든 Bounding box는 자신이 해당 객체를 얼마나 잘 잡아내지 나타내는 confidence score를 가진다.(보통 IoU 값 혹은 IoU값 * softmax 결과값) NMS는 모든 BB에 대하여 threshold 이하의 confidence score를 가지는 BB는 제거한다. 즉, Confidence score가 일정 수준 이하인 BB들에 대해 일차적으로 필터링을 거치는 과정이다.
  2. 남은 BB들을 Confidence score 기준 모두 내림차순 정렬한다.
  3. 맨 앞에 있는BB 하나 (Confidence score가 가장 높은 BB)를 기준으로 잡고, 다른 BB와 IoU 값을 구한다. 이후 IoU가 threshold 이상인 BB들은 제거한다. BB끼리 IoU가 높을수록, 즉 많이 겹쳐질수록 같은 물체를 검출하고 있다고 판단하기 때문이다.
  4. 해당 과정을 순차적으로 시행하여 모든 Bounding box를 비교하고 제거한다.
  5. Confidense threshold가 높을수록, IoU threshold가 낮을수록 더 많은 BB가 제거된다.

 

이러한 NMS에도 문제점이 존재한다. 서로 다른 객체끼리 겹칠 때, 다른 객체의 BB가 삭제될 수도 있다는 것이다.

현실 세계의 이미지에는 객체끼리 겹쳐져 있는 사진이 매우 많기 때문에, NMS를 사용하였을 때 여러 객체에 대해 적당한 BB를 남길 수 있을지 의문이다.

 

 

 

이 문제(Overlapping Object)를 해결하기 위해 나온 것이 Anchor Box이다.

 

Anchor Box에 대해서는 조만간 공부하여 작성해보도록 하겠다.

 

 

 

끝!