본문 바로가기

Object Tracking 공부

MOTR: End-to-End Multiple-Object Trackingwith Transformer 논문 공부

이 논문은 ECCV'22에 publish된 논문으로 2023.12.01 기준 264회의 citation을 보유하고 있다. 😮

Concurrent Transformer-based MOT 논문들 TrackFormer (22년 509), TransTrack (20년 388) 에 비하면 낮은 인용수이지만, 여전히 높은 인용수이고 중요한 의미를 가진 논문인 듯 하다.

논문은 https://www.ecva.net/papers/eccv_2022/papers_ECCV/papers/136870648.pdf 에서 찾아볼 수 있고, 코드는 https://github.com/megvii-research/MOTR 에서 찾아볼 수 있다.

😁 논문 이해를 위해 이수아님의 블로그에서 많은 도움을 받았다, 굉장히 잘 쓰셨다. 👉 (링크)

Introduction

이 논문 MOTR은 다른 여타 Transformer-based tracker처럼 기존의 Tracking-by-detection paradigm에서 사용되는 여러 heuristics와 post-processing (NMS, association via Hungarian method 등) 을 전부 Transformer로 대체하려한다. 

MOTR은 기본적으로 DETR을 기반으로 만들어졌고, DETR (detection) 👉 MOTR (tracking)의 확장을 위해서 다음 두 가지 문제를 해결해야했다고 한다.

(1) Track one object by one track query

👉 DETR은 anchor 기반의 prediction을 하지 않고, transformer를 통해 GT와 동일한 개수의 prediction을 생성하는 것을 목표로 한다. 이를 위해 Hungarian method를 통해 instance 사이 (i.e., prediction와 GT) one-to-one matching을 수행하고 loss를 줬었다. MOTR는 tracking을 다루기 때문에, prediction을 올바른 ID를 가진 GT에 연결하는게 중요하다. 

(2) Deal with newborn and terminated objects

👉 갑자기 생기거나 사라지는 track을 처리해야하는데, MOTR은 그냥 confidence score 가지고 결정한다. 

(3) Temporal information 활용하기

👉 이전 frames으로부터 여러 정보를 얻을 수 있기 때문에 적절한 temporal modeling이 필요하다. MOTR은 CAL (collective average loss)와 TAN (temporal aggregation network)을 제안하여 temporal 정보를 야무지게 사용했다.

(a) DETR 은 한 frame 안에서의 detection만 하지만, (b) MOTR은 autoregressive 한 방식으로 여러 frame에 걸쳐 track을 예측

 

MOTR의 contributions은 크게 다음과 같다.

(1) appearance와 motion을 동시에 학습가능한 end-to-end (no heuristics) MOT framework을 제안

(2) Transformer를 활용하여 반복적으로 이전 정보를 활용하여 hidden state를 iteratively update하는 방법을 제안

(3) tracklet-aware label assignment를 통해 track과 detection 사이 one-to-one matching을 가능케함

(4) CAL, TAN 등을 제안하여 temporal modeling을 향상시킴

Method

Object Query and Track Query. Object query는 detection에 사용되는 query이며 track query와 다르다. Object query learnable query라고 하는데 DETR 처럼 고정된 정해진 길이의 position-encoded feature를 사용하는 것으로 추정된다. object query는 new-born track을 찾는데에만 사용되고, 다음 timestep의 transformer로 전달되지 않는다는 점을 유의하자.  Track query는 하나의 ID에 대응되는 고유한 query로써, 다음 frames의 transformer에 Key/Value로 사용되어 temporal information을 활용할 수 있도록 한다. 매 frame마다 등장하는 instance의 개수가 다를 수 있기 때문에, frame 마다 track queries의 개수는 계속 바뀐다. 👉 하지만 Transformer의 특성 덕분에 유연하게 대처할 수 있다. 아래 figure를 보면 Object query와 track query의 차이점을 좀더 잘 이해할 수 있다. 

TALA : Update process of object queries and track queries

 

Tracklet-Aware Label Assignment (TALA).  DETR 스타일의 detector에서 loss를 주려면 각 prediction (detection) 과 target (detection) 을 one-to-one match 시켜야한다. 이미 ID가 부여된 Track query는 그냥 해당 ID를 가지는 target에 match 시켜버리면 되지만, 새롭게 생성되는 track (detection)은 적절한 target에 match시키는게 필요하다. 👉 MOTR은 DETR 에서 사용되던 Hungarian method 방식의 one-to-one matching을 그대로 사용했다고 한다. 

 

MOTR Architecture.  아래 Figure를 보면서 차례차례 이해해보자.

(1) 이미지가 CNN과 (deformable DETR의) transformer encoder를 통과하여 feature가 된다.

(2) (1)의 featurelearnable object query이전 frame의 track query를 (deformable DETR)의 transformer decoder에 통과시켜 prediction (classification & regression) 다음 frame에 전달할 track query (후보!)를 생성한다.

(3) Decoder output을 QIM에 통과시켜 new-born / exiting query을 판별하고, 살아남은 query들을 TAN에 통과시켜 최종적으로 다음 frame에 전달할 track query를 생성한다. 💪(중요!)🤜, 새롭게 생성되지 않은 (이전 frames에서부터 이어지던) query들은 TAN을 통과시켜 temporal relation을 강화시키는데, TAN에서 current frame의 track query와 memory bank안에 저장된 이전 frames의 query들과 Multi-Head Attention (via Transformer) 등을 수행한다. 

The overall architecture of MOTR

 

Query Interaction Module. 크게 object entrace/exit 과 Temporal Aggregation Network (TAN) 으로 구성된다.

Object Entrance and Exit : 아래 figure에서와 같이 new-born query는 confidence score이 threshold 보다 높은 것만 남기고, existing query 중 confidence score가 threshold 가 threshold 보다 낮은걸 filter out 한다.

Temporal Aggregation Network (TAN)  : 아래 figure에서와 같이 memory bank안에 들어있는 track query들과 scaled dot-product attention을 계산하고 이후 이런저런 layer를 통과시켜서 최종적인 track query를 생성한다.

The structure of Query Interaction Module (QIM)

 

Collective Average Loss. 일반적인 MOT training은 두개의 연속적인 frames 사이에서 loss를 발생시키는 경우가 많았다. 하지만 MOTR은 여러 frame 에 걸쳐서 loss를 계산하는 CAL (Collective Average Loss)를 제안한다. 별 내용은 아니고 여러 frame 에서 loss를 수집한다음 평균낸 값을 training objective로 활용하는 것이다. 여기서 frame 별 loss $L(\hat{Y}_i|_{w_i},Y_i)$는 focal loss + L1 loss + generalized IoU loss 이다..!

 

CAL is the overall loss of the whole video sequence, normalized by the number of objects: