Object Detection 모델의 출력 결과에 사용되는 NMS 방법에 대한 정리

NMS (Non Maximum Suppression)

개요

  • detection 모델이 object라고 예측한 bounding box들이 하나의 오브젝트에 대해 경계박스가 겹치는 경우, 그중에 가장 신뢰도가 높은 box를 선택하도록 하는 후처리 기법.
  • 대표적인 object detection 모델인 R-CNN, YOLO 계열에서 사용된다.
  • confidence socre threshold 가 높을 수록, IoU threshold가 낮을 수록 더 많은 box가 제거 된다.

과정

1. 추정된 객체 Bounding Box 정보

  • 모델은 추정된 각 객체 클래스에 대한 위치와 확률값을 반환한다.

2. 정렬 및 확률값 필터링

  • 각 객체 클래스에 대한 모든 추정된 box 정보를 확률값 를 기준으로 내림차순 정렬하고, confidence threshold 이하의 box는 모두 제거한다.
  • 일차적으로 confidence score가 일정 수준 이하인 box에 대해 필터링을 거치는 과정.

3. IoU 비교 및 필터링

  • 내림차순 정렬된 box 정보들 중 가장 score가 높은 box를 대상으로, 나머지 모든 box들과 IoU 값을 계산하여 IoU threshold 이상인 box들은 모두 제거함.
  • box들 끼리 많이 겹쳐질수록, 같은 물체를 검출하고 있다고 판단함.
  • 해당 과정을 남은 box들에 대해서, score가 높은 순서대로 반복함.

4. 1~3번 과정 반복

  • 모든 추정된 객체 클래스에 대하여 위 과정을 반복함.

일반적인 NMS의 단점

임계값 설정의 어려움

  • IoU threshold에 따라 결과가 민감하게 변함.
  • IoU threshold를 너무 높게 설정하면 중복 박스가 많이 남고, 너무 낮게 설정하면 객체를 놓칠 수 있다.

겹치는 객체 처리

  • 현실에서는 같은 클래스의 객체가 겹쳐 있는 경우가 매우 많으며, 일반적인 NMS의 방법은 IoU threshold 값이 높음에도 불구하고 일부가 제거될 수 있다.

NMS의 응용 기법

Soft-NMS

  • 중복된 박스(높은 IoU와 높은 confidence score)를 완전히 제거하지 않고, IoU에 따라 신뢰도(confidence)를 점진적으로 낮추는 방법.

Cluster-NMS

  • 비슷한 박스를 그룹화한 뒤, 그룹 내에서 가장 적합한 박스를 선택함.

Adaptive NMS

  • 박스가 밀집된 정도에 따라 IoU 임계값을 동적으로 조정함.

Class-Agnostic NMS

  • 클래스를 무시하고 모든 박스에 대해 NMS 수행.

Class-Aware NMS

  • 다른 클래스 박스끼리 IoU 비교를 하지 않는다. (가장 일반적임)

DIoU-NMS (Distance-IoU NMS)

  • 바운딩 박스의 중심거리를 추가로 고려한다.

YOLO 모델의 NMS 세팅

  • YOLO 모델의 버전별 프레임워크 및 NMS 세팅.
  • 대부분의 YOLO 버전은 기본적으로 class-aware NMS를 사용함.
  • YOLOv5 까지는 IoU threshold = 0.45, YOLOv8에서는 IoU threshold = 0.7로 상향됨.
  • YOLOv8에서는 기본적으로 max_det = 3000 으로 confidence score에 따라 max_det 만큼만 정렬됨.
YOLO 버전NMS 방식Confidence Threshold (conf)IoU Threshold (iou)
YOLOv3 (Darknet)Class-aware NMS0.250.45
YOLOv4 (Darknet, AlexeyAB)Class-aware NMS (옵션: DIoU-NMS, Soft-NMS)0.250.45
YOLOv5 (Ultralytics)Class-aware NMS (옵션: Class-agnostic)0.250.45
YOLOv6 (Meituan)Class-aware NMS0.250.45
YOLOv7 (WongKinYiu)Class-aware NMS (옵션: Soft-NMS)0.250.45
YOLOv8 (Ultralytics)Class-aware NMS (옵션: Class-agnostic)0.250.7변화됨

성능측정 시 NMS 세팅

  • 일반적으로 사용되는 객체 탐지 모델의 성능측정 지표인 mAP는 모든 가능한 confidence threshold에 대해 precision-racall curve를 계산함.
  • 따라서, 가능한 모든 예측을 고려해야 하므로 NMS의 confidence threshold를 0으로 설정하거나 아주 낮은 값(0.001)으로 설정함.
  • IoU threshold 값은 mAP@0.5, mAP@0.5~0.95 등 지표에 따라 설정함.

참고