공돌이 공룡의 서재

[논문 리뷰] ByteTrack : Multi-Object Tracking by Associating Every Detection Box 본문

딥러닝/Tracking

[논문 리뷰] ByteTrack : Multi-Object Tracking by Associating Every Detection Box

구름위의공룡 2022. 4. 12. 00:43

Introduction

  • 기존의 SOTA MOT 방법들은 low confidence detection box를 제거하기 위해 detection box 로 인한 true positive / false positive 문제를 다뤘다.
    →threshold를 기준으로 detection box 를 제거하다보니 생기는 true positive / false positive 문제를 다뤄야만 했다.
    • FairMOT만 봐도, 0.5 가 넘는 box만 선택해서 사용한다.
  • 이 논문의 요지는 과연 기존 방식대로 low confidence detection box를 지우는 것은 옳은 접근일까? 에서 시작된다. 저자들은 그렇지 않다라는 입장에서 문제에 접근하고 있다.
    → low confidence detection box도 object의 existence를 나타낼 수 있기 때문이다. (occlusion이 일어난 object를 예로 들 수 있다.)
  • →이러한 object들을 filtering out하는 것은 MOT에 대해 irreversible error의 원인이 되며 detection 문제와 fragment trajectory 문제를 일으킬 수 있다고 본다.
  • 그렇다고 모든 detection box를 그냥 사용하자니 너무 많은 false positive 가 생기는 문제가 있다. 이런 문제를 다루는 논문들은 몇 없다고 소개하는데, 다음과 같다. (나중에 읽어보면 좋을 듯)
    • P. Tokmakov, J. Li, W. Burgard, and A. Gaidon. Learn-
      ing to track with object permanence.
    • T. Khurana, A. Dave, and D. Ramanan. Detecting invisible
      people
  • 이 논문에서는 trackelt의 유사도가 low score detetction box여도 object랑 background를 구분할 수 있는 강력한 단서가 된다고 한다.
    아래 사진과 같이 빨간색 box의 경우 score가 낮더라도, 프레임과 tracklet의 유사도가 높으면 tracking이 가능하다고 보는 것 같다.

  • BYTE : 모든 detection box를 잘 활용할 수 있도록 함.
  • BYTE + YOLOX = ByteTracker
  • Re-ID module이나 attention mechanism을 사용하지 않은 매우 단순한 motion model을 사용해서 높은 성능을 보여주었다. occlusion과 long-range association 의 motion cue의 가능성을 강조했다.

3. BYTE

threshold를 넘는 detection box만 사용하는 이전 연구들과 달리 high score와 low score로 box를 나눈다.

  1. high score detection box와 tracklet을 associate한다.
  2. occlusion, motion blur, size changing, 등이 있을 때는 matching이 안되는 tracklet들이 생긴다.
  3. unmatched tracklet들과 low score detection box들을 associate한다. (핵심)

아래의 pseudo code를 이해하는 것이 중요하다.

first association에서는 IOU distance를 기준으로 Hungarian algorithm을 사용했다. 여기서 matching이 안 된 detection 은 Dremain으로 가고, 남은 track은 Tremain으로 간다. 이 과정에서, DeepSORT와 같은 방법과 결합해서 사용할 수 있다.

second association이 이 방법의 핵심이다. score가 낮은 box와 Tremain을 IOU distance를 사용해서 매칭한다. 여기서도 남게 되는 track은 re-remain으로 간다. ByteTracker의 요지는 score가 낮은 detection은 motion blur나 occlusion때문에 score가 낮아진 것이므로 낮은 것이고, 실제 track에서의 위치를 고려해주는 것이 옳다는 것이다. Tre-remain에 없는 track들은 지운다. (unmatched track으로 고려)

그러고 matching이 안되어 남은 Dbox는 특정 score를 기준으로 버리거나 새로운 tracklet을 생성하는데 쓰인다. 알고리즘에는 안 나와 있지만 SORT 나 DeepSORT에서 사용하듯이, matching이 안 되고 남은 tracklet을 일정 기간(코드에서는 보통 이를 age라고 표현한다) 갖고 있다가 다음 프레임에서 다시 사용하기는 한다. (Detection이 구간 전체적으로 잘 되는데 가운데 특정 시점에서 안 될 때 갑자기 tracklet이 사라지는 경우를 방지할 수 있다.)

4. ByteTrack

YOLOX를 detector로 사용했다. YOLOX는 YOLO 시리즈 모델을 anchor free로 바꾼 모델이고, 추가적인 방법을 사용한 모델이다. mosaic, mixup, simOTA 같은 강한 data augmentation이나 decoupled head들을 사용했다. (이 점은 YOLOX의 contribution이기도 하다. 자세한건 YOLOX 리뷰에서 다뤄보자.)



simOTA label assignment :

ground truth annotation 에 대한 cost를 따라서 positive sample들을 자동으로 고른다. 여기서 cost란 classification cost와 box location cost의 가중합으로 계산된다. 그 다음에 동적으로 top-k를 고른다. 이러한 방식은 detection performance를 크게 늘릴 수 있다.

5. Experiment

  • SORT나 DeepSORT에 비해 ID switch가 현저히 줄어듦을 확인할 수 있다.

  • BYTE 알고리즘을 다른 model들에 적용해봤을 때, 더 좋은 성능을 얻을 수 있었다. MOTA 기준으로 1 ~ 2 Point정도 값이 높아졌다.

Opinion

실제로 써봤다. 학습이 잘 된 YOLOv5 에 ByteTrack 을 적용해 보았다.

Detection box들의 confidence 가 웬만하면 0.7 ~ 0.8 은 가볍게 넘는다. (엄청 잘 찾는다.) 그래서 ByteTrack 로 인해서 DeepSORT 에 비해 개선되는 점을 잘 못 느꼈다.

YOLOX 도 워낙 SOTA 모델이기도 하고, simOTA 같은 다른 튜닝 방법들을 많이 적용해서 사용했다 보니 성능이 높게 나오지 않았을까 하는 생각이 든다. 만약 다른 논문들도 Detector 자체를 더 Tuning 하는 방식을 택했다면, 비슷하거나 더 좋은 성능이 나왔을 것 같다.

정리하면 개인적으로 SOTA 임에도 불구하고 알고리즘 자체에 대해서는 매우 획기적이라는 생각이 잘 안 드는 것 같다.

'딥러닝 > Tracking' 카테고리의 다른 글

[Overview] Multiple Object Tracking 이란 (2)  (0) 2022.04.10
[Overview] Multipe Object Tracking 이란 (1)  (0) 2022.04.04
Comments