NMS(Non-maximum Suppression)

 


 문서의 내용은 가장 하단 참고문헌 및 사이트를 참고하여 필자가 보기 쉽도록 정리한 내용입니다.

☞  틀린 내용 및 저작권 관련 문의가 있는 경우 문의하시면 수정 및 삭제 조치하겠습니다.

 


NMS란?

일반적으로 Input image가 Object detection 알고리즘을 통과하면 Object에 bbox(Bounding box)가 그려지며 어떤 물체일 확률 값(Score)값을 가지게 된다. 이때 아래 그림 처럼 한 가지Object에 많은 bbox가 생긴다. 동일한 Object에 여러개의 bbox가 있다면, 가장 스코어가 높은 박스만 남기고 나머지를 제거하는 것이 NMS(Non-maximum Suppression)라 한다.

 


NMS 

Input

B - bbox list

S - bbox의 confidence scores

N - 중첩 임계값 

 

Output :

D - 필터링된 bbox list

 

Algorithm

  1. Confidence가 가장 높은 제안을 선택하고 B에서 제거한 다음 최종 제안 목록 D에 추가합니다.

  2. 이제 이 제안을 모든 제안과 비교한다. 이 제안의 IOU(Intersection over Union)를 다른 모든 제안과 함께 계산한다. IOU가 임계 값 N보다 큰 경우 B에서 해당 제안을 제거한다. 

  3. 다시 B의 나머지 제안에서 가장 Confidence가 높은 제안을 B에서 제거하고 D에 추가한다.

  4. 다시 한 번 B의 모든 제안으로 이 제안의 IOU를 계산하고 임계 값 보다 IOU가 높은 상자를 제거한다.

  5. 이 프로세스는 B에 더 이상 제안이 남지 않을 때까지 반복된다.

 


NMS 의사코드


Soft-NMS란

위의 알고리즘은 가장 높은 confidence를 가지는 bbox를 찾고, bbox들 중 겹치는 영역이 임계값 이상이며 제거해서 중복을 제거한다. 그러나 이 임계값을 설정하는 것은 매우 까다로우며 mAP가 낮아지는 문제가 있다. 예시로 아래 그림과 같은 상황이 있다. 아래 그림은 말들이 겹쳐져 있다. 이 때 confidence는 0.8 / 0.9 / 0.8 이다. 가장 높은 0.9의 말을 제외하고 0.8의 말은 사라진다. 

 

이런 문제점을 대처하는 방법은 Soft-NMS를 사용하는 것이다. 이 아이디어는 매우 간단하다. 일정 비율 이상으로 겹쳐진 bbox들의 confidence를 0으로 만들어 제거하는 것이 아닌 confidence를 줄여서 유지하는 것이다. 이 방법은 최종 mAP를 향상시킬 수 있다.

 


Soft-NMS

$S_{i}$: 제안 i의 점수

$b_{i}$ : 제안 i에 해당 하는 상자

$M$ : 최대 신뢰도에 해당하는 상자

$N _{t}$ : IOU임계값

 


Soft-NMS 알고리즘


참고 자료

 

Non-maximum Suppression (NMS)

A Technique to remove duplicates and false positives in object detection

towardsdatascience.com

 

 

[Object Detection] Soft NMS

Paper : https://arxiv.org/pdf/1704.04503.pdf 불러오는 중입니다... Soft NMS 기존 NMS 는 가장 높은 confidence 를 가지는 bbox 를 찾고, 같은 클래스 인 bbox 들 중 겹치는 영역이 일정 비율 이상인 (iou > th..

eehoeskrap.tistory.com