최근 많은 Multi-Object Tracker (MOT)가 나오고 있는데 그 중에 속도와 성능이 좋은 tracker 3 가지를 소개하려고 한다!
- Bytetrack
- OC-Sort
- Boosttrack
다음과 같은 순서대로 진행해보려고 한다.
bytetrack은 딥러닝을 사용한 것이 아니라 비교적 심플한 후처리 알고리즘으로 tracking 성능을 향상시킨 방법이다. 높은 confidence score를 갖는 detection box만 사용하는 것이 아니라 대부분의 detection box 결과값(low confidence detection box + high confidence detection box = byte = 2가지 스텝)을 Kalman filter가 예측하는 추정값과 연관시킨다. confindence가 낮은 box도 한번 더 tracking 후보로 기회를 주어 성능을 올리면서도 알고리즘 기반이기 때문에 딥러닝 베이스인 tracker들 보다 속도가 빠르다는 장점이 있다. 논문에 기재되어 있는 가시적인 성능은 다음과 같다.
- MOT17 테스트 세트에서 80.3 MOTA, 77.3 IDF1, 63.1 HOTA를 달성함.
- V100 GPU 단일 장치에서 30FPS 속도로 동작함.
- 또한 MOT20에서도 최첨단 성능을 달성함.
Methodology
사실 bytetrack 은 알고리즘이 전부인 모델이라 어떻게 동작하는지 컨셉만 알면 끝이다!
먼저, 다음과 같이 3개의 연속된 frame t1, t2, t3가 있다고 한다. frame t1에서는 confidence score가 첫번째 threshold (e.g.0.5)보다 높은 세 개의 트랙릿(tracklet)을 초기화한다. 그러나 t2 및 t3 프레임에서 객체가 가려지는(occlusion) 상황이 발생하면, 해당 객체의 confidence score가 감소한다.
- t1 → t2: 신뢰도 점수가 0.8에서 0.4로 감소
- t2 → t3: 신뢰도 점수가 0.4에서 0.1로 감소
그림(a)에서 보면 기존 tracking 방법에서는 신뢰도 점수가 낮은 검출 박스가 첫번째 threshold(e.g. 0.5) 기준에 의해 제거되며, 이로 인해 빨간색 x 된 객체들 처럼 tracking 대상에서 제거된다.
Bytetrack 알고리즘은 그림(c)에서 보면 첫번째 단계에서 통과하지 못한 낮은 confidence 검출 박스를 두번째 threshold (e.g. 0.4)기준에 의해 한번 더 검증한다. 이 때 두번째 검출 박스의 threshold는 구제 가능한 낮은 confidence 를 가진 객체를 후보로 올리기 위해 첫번째보다 낮게 설정한다. 이 후, 운동 모델(Motion Model)의 예측 박스와 매칭을 하고, 겹치는 영역이 크다면 tracking 해야하는 객체로 인식하고 올바르게 복원시킨다. 한편, 배경에 해당하는 박스는 기존 트랙릿과 매칭되지 않아 제거된다.
구체적인 매칭 과정은 다음과 같다.
- 1차 매칭:
- 신뢰도가 높은 검출 박스를 기존 트랙릿과 매칭.
- 운동 유사성(Motion Similarity) 또는 외형 유사성(Appearance Similarity)을 기준으로 매칭.
- SORT 알고리즘과 유사하게 Kalman 필터를 사용하여 다음 프레임에서 트랙릿의 위치를 예측.
- Kalman 필터가 예측한 박스와 검출 박스 간의 IoU를 이용해 유사도를 계산. (Re-ID 특징 거리(Feature Distance) 사용 가능)
- 2차 매칭:
- 1차 매칭에서 남은 미매칭된 트랙릿(unmatched tracklet) (빨간색 박스)과 낮은 신뢰도의 검출 박스를 다시 매칭.
- 동일한 운동 유사성(Motion Similarity)을 사용하여 매칭 수행.
이러한 BYTE 방법을 통하여 confidence 점수가 높은 박스부터 낮은 박스까지 모두 활용하여 더 정교한 다중 객체 추적(MOT)을 가능하게 한다. 이를 통해, 기존 방법에서 발생하던 객체 누락 문제를 해결하면서도 거짓 양성(False Positive)을 최소화하는 효과를 얻을 수 있다.
Conclusion
아래 표1에서 Bytetrack은 MOT17 test에선 30 fps로 제일 빠른 속도와 MOTA 80으로 가장 높은 성능을 보여준다. 또한, MOT20에서도 17.5 fps 속도와 MOTA 77.8 의 성능을 보여준다. 이는 SOTA 모델들 중에 속도와 성능 측면에서 모두 뛰어난 알고리즘을 확인할 수 있다.
My OPINION
bytetrack은 다른 tracker 알고리즘과 다르게 후처리 알고리즘이기 때문에 비교적 구현이 심플하고, 직관적으로 되어 있다. 그렇기 때문에 다른 알고리즘들과 결합하기에 용이하고 빠르다는 장점이 있다. 장점이 확실한 알고리즘이지만, low confidence를 second association에서 사용한다는 점에서 문제점도 존재한다. 예를 들면, 두 객체가 완전히 겹친다고 생각해보자. 이 때 측정하는 매칭(association) 방법은 두 객체의 IOU (겹친 영역이 얼마나 되는가?) 를 본다. 때문에 두 객체의 kalman filter가 예측한 영역과 bbox의 영역이 비슷하다면 id가 바뀔 수 있는 문제가 생길 수 있는 것이다.
그러므로 완전히 bytetrack의 방법만을 신뢰할 수는 없다. 이러한 문제를 해결하기 위한 논문들이 나왔을 거라 예상하는데 한번 찾아보고 스스로도 이를 해결할 수 있는 방법을 고안해봐야겠다.
Reference
다음은 비선형 모션에 강인한 OC-SORT 알고리즘에 대해 설명하고자 한다.
'Artificial Intelligence > Research Paper 리뷰 📖' 카테고리의 다른 글
Action speaks louder than words. 하루 하루의 기록을 습관화 합니다 📖
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!