NMS(Non-Maximum Suppression)는 객체 탐지에서 쓰이는 후처리 방법이다. 모델이 같은 객체를 여러 개의 박스로 감지할 때 NMS는 가장 신뢰도 높은 박스를 남기고 나머지를 제거한다. 이를 통해 결과가 깔끔해지고 중복이 사라진다.
NMS는 다음과 같은 단계로 작동한다.
Bounding Box 정렬
모델이 예측한 모든 Bounding Box를 신뢰도(Confidence Score)에 따라 내림차순으로 정렬한다. 신뢰도는 해당 박스가 객체를 포함할 가능성을 나타낸다.
가장 높은 신뢰도 박스 선택
신뢰도가 가장 높은 박스를 선택해 최종 출력으로 추가한다.
IoU(Intersection over Union) 계산
선택된 박스와 나머지 박스 간의 IoU를 계산한다.
👉IoU란? 두 박스의 겹치는 영역과 합집합 영역의 비율이다(겹치는영역/합집합영역)
IoU 임계값 초과 박스 제거
IoU가 특정 임계값(예: 0.5)을 넘는 박스를 제거한다. 이 박스들은 동일한 객체로 간주된다.
반복
남은 박스에 대해 위 과정을 반복한다.
Confidence Score
Bounding Box가 객체를 포함할 확률로, 신뢰도가 높은 박스를 선택하는 기준이 된다.
IoU(Intersection over Union)
박스 간의 중복 정도를 측정하며, NMS가 박스를 제거할지 남길지 결정하는 핵심 요소이다.
IoU 임계값
두 박스가 같은 객체인지 판단하는 기준이다. 임계값이 낮을수록 더 많은 박스를 제거하고, 높을수록 더 많은 박스를 남긴다.
👉임계값 설정의 어려움
IoU 임계값을 너무 높게 설정하면 중복 박스가 많이 남고, 너무 낮게 설정하면 객체를 놓칠 수 있다.
👉겹치는 객체 처리
NMS는 겹쳐 있는 객체를 잘 구분하지 못한다. 겹쳐 있는 객체가 많을 경우 일부가 제거될 수 있다.
Soft-NMS
중복된 박스를 완전히 제거하지 않고, IoU에 따라 신뢰도를 점진적으로 낮추는 방법이다.
Cluster-NMS
비슷한 박스를 그룹화한 뒤, 그룹 내에서 가장 적합한 박스를 선택한다.
Adaptive NMS
박스가 밀집된 정도에 따라 IoU 임계값을 동적으로 조정하는 방식이다.
Class-Aware NMS
다른 클래스 박스끼리 IoU 비교를 하지 않는다.
DIoU-NMS (Distance-IoU NMS)
바운딩 박스의 중심거리를 추가로 고려한다.
NMS는 YOLO, Faster R-CNN 같은 객체 탐지 모델에서 필수적으로 사용된다. 모델이 예측한 결과를 간소화하고 중복을 제거해 최종 결과의 신뢰성을 높여준다.
NMS는 간단하지만 객체 탐지에서 꼭 필요한 기술이다. 동작 원리와 한계를 잘 이해하면 상황에 맞는 변형 기법을 적용하거나 새로운 개선안을 설계할 수 있다. NMS 덕분에 중복된 예측을 줄이고, 더 나은 탐지 결과를 얻을 수 있다.