이 논문은 CVPR'21에 publish된 논문으로 2023.11.27 기준 114회의 citation을 보유하고 있다.
논문은 https://openaccess.thecvf.com/content/CVPR2021/html/Shuai_SiamMOT_Siamese_Multi-Object_Tracking_CVPR_2021_paper.html 에서 찾아볼 수 있고, 코드 https://github.com/amazon-science/siam-mot 에서 찾아볼 수 있다.
Introduction
이 논문은 Siemese-based tracker를 사용하여 online tracker를 학습시키는 논문이다 (여기서 online MOT란 future frame에 대한 정보를 사용할 수 없는 tracker를 뜻한다). 이 논문은 Siamese Multi-Object Tracking network (SiamMOT)를 제안하였고, SiamMOT는 detection network인 Faster-RCNN에 기반을 두고 있는데, 정말 high-level로 말하자면 아래 RPN output에다가 proposed motion model (IMM or EMM)을 연결해서 object의 motion 정보 (offset, width/height change)를 예측한다.
이 논문 이전에는 Tracking-by-Detection 을 기반으로한 tracker가 많다고 하였는데, 이 녀석들은 expensive cues (optical flow, re-identification) 등을 생성하는데 비용이 많이 드는 단점이 있다고 한다. 하지만 SiamMOT는 Siamese-based tracker이기 때문에 비교적 계산 비용이 저렴하고, 또 특히 instance-level motion 정보를 직접적으로 고려함으로써 큰 성능 향상을 보였다고 한다. (🤔 motion 정보를 직접적으로 고려한다는 것이 정확히 무엇을 말하는 것인지는 모르겠지만,,,, instance 별로 motion 정보를 예측하도록 하는 architecture 그 자체를 의미하는 것 같다. (근데 이건 다른 work도 한거 아닌가? 🤔)
SiamMOT: Siamese Multi-Object Tracking
SiamMOT는 FasterRCNN의 RPN output을 가지고 작동한다 (아래 이미지와 같이 backbone에 RPN으로 ROI align 적용한 RPN feature를 사용). 기본적으로 Siamese tracker 이다보니, 아래처럼 "template - search" pair를 가지고 학습이 되는데 두 pair 사이의 correlation을 proposed motion model 에 feed하여 motion 정보를 예측하게 하고, 이를 detector (Faster-RCNN)의 ouptut과 결합하여 최종적인 tracking prediction을 생성하는 방식이다.
Motion modeling with Siamese tracker. Siemese tracker는 기본적으로 "template ($R_t$) - search ($S_t$)" pair 를 input으로 받고, target instance $i$의 confidence score $v_i$와 detection $\tilde{R_i}$ 를 예측하게 된다. template ($R_t$) 는 예전 frame에서 감지됐던 instance, search ($S_t$) 는 RPN이 예측한 region이다. 또, 여기서 confidence score $v_i$는 (x,y)가 bounding box 안에 존재한다면 1, 아니면 0이 되야한다 (center에 가까울 수록 continuously 하게 높아지는게 아니다. 근데 왜 이렇게 안했지? 🤔). 여기서 $\mathcal{T}$는 learnable Siamese Tracker이고 이 논문에서 제안된 IMM or EMM에 해당된다. 여러 Pair 를 동시에 처리할 수 있어서 scalability가 좋다고 한다. 😁
Explicit motion model (EMM). 논문에서 제안된 IMM은 EMM과 orthogonal하게 사용될 수도 없고, EMM보다 성능도 낮아서 여기선 EMM만 다루도록 하겠다. EMM의 explicit이라는 keyword는 pixel-wise cross-correlationi과 instance-wise motion predictiion에서 유래했다. EMM의 구조는 아래 figure는와 같으며 이는 위 figure의 빨간 box에 해당된다.
Siamese tracker이다보니 두 pair간의 similarity를 계산하는 과정이 존재하는데, 구체적으로 template과 search 사이 channel-wise cross correlation (SiamRPN++에 잘 나와있다) 을 계산하여 response map $r_i$를 구한다. 이 response map이 Fully convolutional network (FCN)을 통과해서 confidence score ($v_i$)와 location offset ($p_i$)가 예측된다.
$v_i$ : 0~1 사이 값, p 에 대해 attention으로도 사용되고, 나중에 NMS 등등에 unconfident pred를 exclude 하는데 사용.
$p_i$: 4-dim offset (x,y,w,h) 비스무리한 무언가를 예측
여기서 $eta_i$ 는 penalty map인데 center로부터 멀리 떨어질수록 더 높은 penalty를 부여한다. 자세한건 아래 참고
(1) confidence score $v_i$ * penalty map $eta_i$ 에 argmax를 거쳐 최적의 center 위치 ($x^*,y^*$)를 예측
(2) 최적의 center 위치 ($x^*,y^*$) 에 대응되는 confidence $v$, offset $p$ 를 추출해서 사용한다.
EMM을 훈련하는데 필요한 loss는 다음과 같다.
여기서 $L_{focal}$은 focal loss, $L_{reg}$는 IoU loss를 의미하고, 각 bounding box의 크기에 상관없이 비슷한 range의 loss를 생성하기 위해 coefficient $w(x,y)$를 곱해준다. 여기서 $v^*$은 model prediction이 아니고 binary ground truth이다.
Training. SiamMOT는 end-to-end training이 가능한 모델이고 Backbone, Detector, Tracker (motion model)이 다같이 한번에 학습된다. 이때 사용되는 loss는 $\mathit{l = l_{rpn} + l_{detect} + l_{motion}}$ 과 같고 여기서 $l_{rpn}, l_{detect}$은 Faster-RCNN의 loss와 동일하고, $l_{motion}$이 위에 EMM의 loss $L$과 동일하다.
Inference. Faster-RCNN의 prediction (detection) $R$ 과 Motion model (EMM)의 prediction $\tilde{R}$ 은 동시에 사용한다.
(1) 우선 $R$ 과 $\tilde{R}$의 IoU가 0.5 가 넘지 않는 모든 instance를 exclude한다.
(2) confidence가 $\alpha$ 보다 낮은 instance도 exclude한다.
(3) confidence가 $\beta$ 보다 높은 새로운 instance는 새로운 trajectory로 고려한다.
(4) confdience가 연속된 $\tau$ frames 동안 $\alpha$ 보다 낮은 trajectory만 kill한다. (occlusion 에 대비하기 위함이다)
Experimental Results