原論文標題為 Tracking Objects as Points,把物件視為一個點來追蹤,屬於 anchor free 的方法,用 CenterNet 改進的方式,預測物件的位移來做物件追蹤
CVPR 2020
Introduction
作者利用 CenterNet ,把每個物件都視為一個點,透過與前一幀圖片 heatmap 的 correaltion,得到兩張圖片同物件上有著高度關聯
另一點比較特別的是 CenterTrack 訓練時用大量的 augmentation,讓模型足以在靜態的圖片上學習跟蹤目標,而不用輸入真正的影片
Related work
Tracking-by-detection
很多追蹤模型都是靠先檢測出物件,然後再去把物件在每一幀的關連做出來,缺點是要靠兩個模型,速度慢,運算成本也高
然後本篇論文的模型有個特別之處,就是物件的關聯是跟著物件檢測一起學習出來的,關聯學習幾乎不耗費任何運算,並且輸入時除了當前幀之外還會把前一幀一同輸入,從這個線索中找尋被遮擋或是消失的對象
Joint detection and tracking
因為 tracking-by-detection 存在上述缺點,近年來越來越多追蹤器結合這兩項任務,並且套用 mask R-CNN 框架來實現,mask R-CNN 的方法很仰賴同一個物件在兩幀之中位置不會相差太多,這樣裡頭的 region proposals 才能從鄰近區域抓到物件,但如果在低幀率的影片中,同一個物件在兩幀的位置就會差很多,導致 mask R-CNN 不管用
而本篇論文的方法,將動作預測和 heatmap 都輸入到網路中,即使兩個物件在兩幀上離很遠也抓得出來
Motion prediction
運動預測在追蹤器中扮演重要腳色,以往的論文使用 Kalman Filter,來預估物件下一幀的位置大概會坐落在哪裡,而本篇論文的運動預測包含在網路中和檢測一同學習,不需要特別監督
Heatmap-conditioned keypoint estimation
生成 heatmap 不只用當前的 frame,也會參考前一個 frame,因為前一幀的資訊已經算好了,參考他的結果並不會減慢速度,在尋找被遮擋的物件時,更可以保留先前的資訊
3D object detection and tracking
物件檢測可用 3D 物件偵測來取代
Tracking objects as points
當物件被遮擋時,幾幀後再次出現,就會被賦予新的 ID,這是追蹤常遇到的問題,作者認為,我們應該把這個問題歸咎於 ID 在連續幀上的保持,而不是獨立看到每一幀的物件間進行連結
在時間 t 時,現在的輸入是
跟上個 frame t-1
上個 frame 的物件
給個物件存放
- p 是中心點座標
- s 是長寬
- ω is detection confidence
- id 指他被賦予的 ID
我們的任務是把這個 frame 和上個 frame 相同的物件給予相同的 ID,這會面臨到兩個挑戰
- 要找到每個 frame 上的每個物件,包括被遮擋的
- 透過時間連結這些物件
Tracking-conditioned detection
CenterTrack 一次輸入兩的 frame,分別是現在 t 時間的 frame 以及上一個 frame t - 1,因為有些物件在 t 時間被遮擋住,在 t - 1 的時後卻還在,這樣能幫助他辨認
除了輸入前一幀的圖片外,還又額外輸入前一幀的 heatmap 結果,只要前一幀那個物件的 heatmap confidence 大於 τ (threshold),就傳入當前幀
Association through offsets
有了前一幀的heat map,模型會額外輸出一個 2D 的偏移預測(displacement)
上圖的偏移在 groundtruth 上的算法是,物件在當前 t 的中心點減去 t - 1 時的中心點,下圖的 p 是中心點座標
Loss 的計算如下
下圖在說明 CenterTrack 的輸入和輸出
輸入:
- 現在的圖片,上一幀的圖片,上一幀的 heatmap
輸出
- Detection,Size,offset(displacement)
之後用 greedy match 把相近的物件當成是同一個物件,greedy match 就是先把離最近的連起來,通常這樣做的 cost 也接近於最佳解。此時設定一個距離 κ ,如果這個物件在距離 κ 以內都沒有人可以與他相連,就把他設為新出現的物件
p 是現在的位子 D 是預測出來的偏移量,所以 p - D 的結果是回到前一個位置的意思,回到前一個位置的新座標,就可以跟上一幀物件的座標匹配
Training on video data
從 CenterNet 到 CenterTrack 的架構變化很少,僅僅多了 4 個 input channel 和 2 個 output channel,也可以用 CenterNet 的 pre-trained weight fine-tune 就好了
訓練 CenterTrack 時,最主要的挑戰源自於如何生成一張真實的 heap map,為了讓模型更強健,作者使用了三種 augmenttation
- 在前一幀每個物件 hear map 中心點加上 Gaussian noise
- 在 groundtruth 中心點附近隨機加入一些假的 peak,假裝那裏有物件
- 以一定的機率刪除醫些檢測結果,模擬中間漏掉檢測的狀況
而輸入 t - 1 幀也不用真的是當前輸入的同一幀,只要是同一支影片中的 frame 即可,避免在 frame rate 上 overfitting
Training on static image data
CenterTrack 可以在只有偵測的 groundtruth 上訓練,至於前一幀要怎麼來,作者說可以利用隨機縮放和平移當前幀來模擬前一幀
End-to-end 3D object tracking
3D 物件偵測上還有多一些資訊,像是深度和旋轉那些的,從 2D 變成 3D 的中心點也會不太一樣,要多預測一個中心點偏移
Experiments
Datasets
- MOT17
- KITTI
- nuScenes
Evaluation metrics
- MOT 常見的指標,MOTA、IDS 那些
Table 1 : MOT17 的結果,+D代表偵測時間
Table 2 : KITTI 測試結果
Table 3 : nuScenes 測試結果
Table 4 : ablation study,
- detection only 的意思是只有 CenterNet 和單純用中心點位子把物件做關聯
- without offset 把 displacement 的偏移都設為零,然後依樣輸入前一幀的 heat map
- without heat map 不把上一幀的 heat map 輸入當前幀
雖然沒有 offset 的結果沒有差很多,但是如果輸入 frame rate 比較低的影片,物件移動的幅度較大,offset 還是能提供較好的幫助
Table 5 : 是一些額外實驗,
- w.o. noisy hm 沒有加入擾動 heat map 這像 augmentation
- Static image 使用圖片訓練,而不是用影片
- w. Hungarian 匹配時不用 greedy 演算法,改用 Hungarian algorithm
- w. rebirth 過幾幀沒有被匹配到,就給新的 ID (設定32幀,MOT 才需要)
Table 6 : 更換運動模型
- no motion 就是把 offset 設為零,跟上面有一個實驗一樣
- Kalman filter 可以稍微預測下一幀軌跡
- optical flow 光流法,有興趣可以去查一下
- ours 就是上面介紹的 offset 方法
我們可以看到現有的方法沒有一個是在 3 種不同 dataset 中都有好成績,除了作者提出的預測 offset 這個方法,這其實仰賴了大量的 data augmentation,才能把 offset 訓練好
下面為圖像化的結果
Conclusion
CenterTrack 的概念其實滿簡單的,先用 CenterNet 找出物件,然後用預測未移的方式 (offset) 來跟前一幀的物件匹配,匹配的方式也是最簡單快速的 greedy 演算法 (距離最短就直接匹配在一起)
最令我感到意外的是,如果沒訓練時沒有加入 heat map noise,準確度竟然會從 66.1 大幅下降到 34.4,讓我意識到有時後要突破極限,靠的不一定是模型有多優秀,訓練的方式也很重要
他們也提出 Static image 的方式來訓練,這樣就不需要影片,只要用有 detection 的圖片訓練,畢竟訓練資料標記物件 ID 是一件很麻煩的事情,我發現現在大家都在想不用影片的訓練方式,FairMOT 就提出 self-supervise,把偵測到的物件做 data augmentation 來訓練 re-ID branch,也就是說用少了 ID 訊息訓練模型也是個好方法