대다수의 object detection algorithm은 object가 존재하는 위치 주변에 여러개의 score가 높은 bounding box를 만든다는 문제점이 있습니다. 이 중 하나의 bounding box만을 선택해야 하는데, 이때 적용하는 기법이 non-max suppression 입니다. 즉, Non-Maximum Suppression은 object detector가 예측한 bounding box 중에서 정확한 bounding box를 선택하도록 하는 기법입니다. optimal 한 solution일 수는 없고 local maxima를 찾는 방법이라고 볼 수 있습니다.

 

NMS의 과정

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

바로 object끼리 겹칠 때 다른 object에 대한 bounding box 까지 날라갈 수 있다는 것인데요. 현실에서는 object끼리 겹치는 경우가 매우 많습니다. 이를테면 아래와 같은 상황에서 그냥 NMS를 이용한다면, 자동차에 대해서 detection을 하면 트럭같은경우는 detection을 못하고 날라갈 수도 있겠죠?

 

이 문제를 해결하기 위해 나온 방법이 Anchor box입니다. Anchor box는 탐지하려는 객체의 모양을 정해놓고 객체가 탐지되었을 때 어떤 anchor box와 유사한지 판단해서 벡터값을 할당하는 방법입니다.

+ Recent posts