最近在研究MOT (multi-object tracking)的方法,比較有名的大概就是deep sort之類的2階段模型,先進行object detection再reID。
而FairMOT的研究重點在於把object detection和reID算法合併在同一個網路,以提升推論效能。作者提出這類作法之所以訓練成效不佳的3大問題點:
- anchor會導致目標物體的歧異性(ambiguity),應改用anchor-free的方法。
以下圖為例,左圖anchor-based的方法中,黃色、紅色兩個框都是用來估計藍色衣服的跑者,anchor方法通常是布在比較粗的框線中,所以anchor萃取到的center (紅、黃星)附近的特徵,會與藍色跑者正確的center附近的特徵有差異。
2. reID相較於object detection網路,需要更多層次的特徵融合。
reID因為更關心個體的資訊,所以需要更低階的特徵,才能正確分類每個物體是誰。下圖是用t-SNE繪製資料集中每個人的reID特徵,同種顏色代表同一個人。可以發現右邊兩張anchor-free (heatmap)的方法,不同人特徵分比較開,才能更好的為個體做分類。
3. reID特徵維度不宜太高,因為MOT資料集通常很小。
FairMOT中使用的reID維度是128。來看看MOT資料集,以MOT16為例,訓練集只有7個影片,每一個frame都標記,每個影片長度也不超過35秒,track代表ID數量,真的不多。
基於改進上述3個問題點,FairMOT的架構如下:
Backbone
使用ResNet-34,搭配Deep Layer Aggregation (DLA)來融合各層次的特徵,並且加入更多skip connection連結低階與高階特徵。
Object Detection Branch
- Heatmap head:用來定位物體center。位於物體center時,該座標機率越高,越偏離center時機率指數遞減。
- Box size head:用來估計bbox高、寬,只與object detection有關。
- Center offset head:用來更準確定位物體center。雖然對object detection影像不大,但是對於reID結果的影響很大。
Identity Embedding Branch
對於每個點(x, y)都有128維度的特徵,來區分不同個體。每個個體為一類,分類每個bbox是誰。
Loss
- Heatmap Loss:先去計算每一點(x, y)是物體center的機率所組成的heatmap,再計算pixel-wise的focal loss。
2. Bbox Loss:由Offset和Size組成的L1 loss。
3. Identity Embedding Loss:將128為度的identity特徵計算softmax loss。p(k)是使用GT heatmap center的identity特徵E(x,y),計算其屬於每一類的機率:
Performance
在MOTA、IDF1的效果都很不錯,少數雖然不是第一名,但也與第一名方法結果差不多。而且速度上有很好的提升。
參考文獻
MOT16 Challenge: https://motchallenge.net/data/MOT16/
FairMOT paper: https://arxiv.org/pdf/2004.01888.pdf
FairMOT GitHub: https://github.com/ifzhang/FairMOT