NMS(Non-Maximum Suppression)는 객체 탐지나 키포인트 탐지에서 겹치는 후보들 중 가장 확신이 높은 하나만 선택하기 위해 사용하는 후처리 기법입니다.
문제 상황
딥러닝 모델은 종종 여러 위치에 대해 비슷한 예측을 동시에 내놓습니다. 예를 들어:
- 이미지 속 하나의 사람 얼굴에 대해 여러 박스를 예측
- 3D 포인트 클라우드에서 하나의 키포인트 위치를 둘러싼 여러 히트맵 피크가 생김
이 경우, 이 중 가장 유망한 것 하나만 남기고 나머지를 제거해야 합니다.
NMS 동작 방식
- 모든 후보 영역(또는 포인트)을 확률(또는 점수) 기준으로 내림차순 정렬
- 가장 점수가 높은 것 선택
- 이 선택된 것과 겹치는 정도(IoU 또는 거리)가 높은 다른 후보들을 제거
- 남은 것들 중에서 다음으로 높은 점수를 가진 것 선택
- 반복
NMS 예시 (2D 객체 탐지)
- 예측 박스 A: 확률 0.9
- 예측 박스 B: 확률 0.85 (A와 80% 겹침)
- 예측 박스 C: 확률 0.6 (A와 거의 안 겹침)
→ A 선택, B 제거 (A와 많이 겹치므로), C 유지
3D 키포인트 탐지에서의 NMS
3D에서는 점 위치나 히트맵에서 가장 높은 값을 가진 지점을 중심으로, 반경 내 다른 점들을 제거하는 식으로 적용됩니다.
한계
- NMS는 하이퍼파라미터(예: IoU 임계값, 거리 임계값)에 민감합니다.
- 디텍션 간 의미적 관계를 고려하지 못함 → 딥러닝의 end-to-end 학습과는 분리되어 있음
→ 그래서 최신 방법들은 NMS 없이 학습단계에서 직접 중복 없이 예측하도록 설계합니다.