小聲逼逼:博客園的markdown依然如此難用。。。
來源於騰訊優圖發表在ECCV20的一篇多目標跟蹤的文章。
1. 摘要
現有的多目標跟蹤方法一般都是基於檢測的跟蹤框架,在該框架中的方法一般又被划分為三個步驟:目標檢測、特征抽取和數據關聯。目前有一些跟蹤方法將其中兩個結合,比如檢測和特征抽取(AJDE),但這類方法提供的是部分的end-to-end解決方案。這篇文章宣稱首次提出了一種真正的融合三個子任務的end-to-end解決方案。其做法是以相鄰幀對為輸入樣本,經過一個網絡回歸相同目標在兩幀圖像中bbox,當然,其中還包括了分類分支和reid分支,作為attention map以希望提升回歸精度。跟蹤時,通過連續幀對之間共享幀中的前后樣本檢測的IOU進行配對以鉸鏈的方式形成長軌跡,這也是Chained的由來。該方法在MOT16和MOT17評測庫上都能實時獲得SOTA的性能。
文章已開源: github: pytorch
對該文章宣稱的貢獻存疑,並不能算真正的end-to-end解決方案。本質上來說還是生成兩幀的tracklet,然后利用基於IOU的數據關聯獲得長軌跡。我認為除非使用類似LSTM網絡處理時序信息外,短時的tracklet的處理都需要獨立的數據關聯,不能稱為端到端的解決方案。
2. 簡介
已有的MOT方法存在兩個較大的缺陷:
- 大多數方法都是基於檢測的跟蹤,該類方法一般分為三個獨立的子任務:檢測,特征抽取和數據關聯。往往很難獲得全局最優解。另外跟蹤結果非常依賴於檢測結果。
其實檢測是視覺任務的基礎,無論端到端合適多個子任務的形式,最終的跟蹤結果都會依賴於檢測性能。
- 為了獲得更好的MOT性能,目前的方法將ReID和attention模塊都引入到跟蹤中使得模型越來越復雜。
其實ReID模塊是處理多目標跟蹤任務中軌跡因長時間遮擋或者漏檢而丟失的找回任務的必須模塊。attention主要用來處理部分遮擋的問題。
這篇文章的跟蹤框架可以由下圖看出,不再贅述。
本文方法的網絡可以認為是從2幀圖像構成的視頻序列中檢測目標形成的通道,即看作是擴展到3D中的檢測任務(圖像我們這里認為是2D,不考慮通道)。
3. 方法
3.1 問題描述
給定視頻序列中的N幀連續圖像!$\{F_t\}_{t=1}^N$
, MOT的目標是在感興趣物體出現時能夠同時給出物體的bbox!$\{G_t\}_{t=1}^N$
和對應的label!$\{y_t^{GT}\}_{t=1}^N$
.
3.2 Chained-Tracker的流程圖
可以認為網絡干的活是:檢測當前幀中目標bbox,同時預測該目標在下一幀的bbox,在一幀時同樣操作,通過檢測結果和前一幀預測結果通過IOU關聯。
針對遮擋的魯棒性處理 為了增強模型對於嚴重遮擋以及短期消失的魯棒性,該模型對於跟蹤到的軌跡保持其id持續$\sigma$幀,其中通過勻速模型預測其位置,使用預測位置和檢測進行IOU的匹配。
這里可以發現,模型其實就是做了個兩幀預測的事情。對於間隔多幀的預測采用了勻速模型,准度必然不高。這里其實可以采用reid找回的,可能為了體現所謂的端到端而不用吧。
有效性和局限性 這里有效性說是在丟失軌跡重新出現后能夠創建新的tracklet,大多數MOT方法都有該能力。局限性這里說明了為什么采用Node與Node通過IOU關聯匹配的方式卻還稱為end-to-end的解決方案。
Since the regression model does the major work and there is no need to get feedback for it from the chaining operation, we still use the “end-to-end” property to describe CTracker. A pure end-to-end trainable model requires a differentiable replacement to the current IoU matching based chaining strategy
這里說純粹的end-to-end模型需要一個可差分的IoU匹配策略,其實即使有這樣的模塊還需要配備能夠傳遞歷史信息的功能模塊。
3.3 網絡結構
網絡的backbone采用的是ResNet50的FPN結構。輸出包含三個分支:分類分支、ID驗證分支和成對box回歸分支。
分類分支:這里的分類分支按文中介紹來看是對node中的第一幀的anchor進行前背景的分類。
ID驗證分支:用於判斷node中來源於兩幀圖像對應同一個anchor的gt是否具有相同label。
box對回歸分支:用於回歸每個positive的anchor對應兩幀圖像中的bboxes。
Joint Attention Module, 在box對回歸分支中,同時引入分類結果和ID驗證結果作為attention,與原始特征乘在一起再進行回歸。
思考:這里的分類分支有點類似於Faster-RCNN中的RPN模塊的作用。
3.4 生成Label和Loss
- label
對於分類分支,由於只看Node的第一幀的anchor是否是正樣本,所以其label也是針對於第一幀而言的。第一幀給定anchor $A_ti=(x_a{t,i}, y_a^{t,i}, w_a^{t,i}, h_a^{t,i})$, 類似SSD做法通過計算Gt與anchor的IOU來判斷是否是正anchor,公式1表示的是有一個gt與anchor的IOU大於閾值則認為該anchor是正樣本。
$$
c_{cls}^i =
\begin{cases}
1, 如果\sum_j M_{ij} =1,\
0, 否則。
\end{cases}
$$
其中 $M_{ij}=1$表示 第i個anchor與第j個gt的IOU大於閾值。
對於ID驗證分支,則是對應同一個正anchor的兩幀中的gt屬於同一個id,則其label為1,否則為0.
$$
c_{id}^i
\begin{cases}
1, 若c_{cls}^i=1且 \mathcal{I}[G_t^i] = \mathcal{I}[G_{t+1}^k],\
0, 否則
\end{cases}
$$
其中 $\mathcal{I}()$表示anchor對應gt的label
這里注意前提是保證一個anchor最多只能對應一個gt。anchor的選擇是類似SSD通過聚類方法得到的。
對於box對回歸分支,其和Faster-RCNN一樣對檢測和gt都采用正anchor進行編碼,然后采用smoothL1損失約束。此處不再贅述。
最終CTracker的損失是三種損失的加權和。
4. 實驗
數據集采用的是MOT16,MOT17, 評測系統采用的是CLEAR和IDF1.
需要注意的實驗細節:
- 數據進行了數據增廣,同一個node的兩幀圖像每一次增廣方式相同。
- 除了相鄰幀作為node,訓練中選擇間距3幀內的任意一對作為node。
- resnet50作為backbone,BN未參與訓練, Kaiming初始化, Adam優化器。初始學習率非常小 $5x10^{-5}$.
- anchor分類標簽時,采用的是 0.5和0.4, 而不是檢測常用的0.7和0.3
消融實驗得到的結論:
- 分類分支作為attention能夠使檢測更加准確(MOTP提升了0.6個點)
- 單獨的ID驗證分支並沒有帶來精度收益。
- ID驗證分支同時作為attention能夠進一步提升跟蹤效果
這時候表中數據表明MOTP並沒有提升,表明ID驗證分支提供的作用並不是bbox更准確,而是前背景分類更准確。個人分析認為是因為分類分支只限定了node的第一幀,ID驗證分支將node的第二幀也納入進來了。
時間分析:
這里作者將推理時間限定在chaining的范圍內,即排除了backbone的推理時間,然后宣稱跟蹤時間達到 34.4FPS,其實這也是MOT時間對比上一直存在的問題。既然是端到端的了,為什么不直接說整個end-to-end的時間? 整個一次end-to-end時間約148ms,也差不多7.5PFS,遠低於RetianTrack。
與SOTA方法的性能對比,能看出幾點問題:
- 無論MOT16還是MOT17,其IDS和IDF1都遠差於最優值,這估計是只用IOU進行鉸接的弊端。
- MOT的CLEAR評測體系里面,FN其實影響非常大,這本身就是CLEAR的不合理之處。從MOT16和MOT17表中其實可以發現MOTA的提升主要源於FN的大幅下降。文章沒有分析問什么FN會大幅度下降。
5. 總結
這篇文章可以理解成提出一種同時檢測和預測的網絡,然后以鉸鏈的方式由tracklet生成trajectory。
其整個思路我覺得沒有CVPR20上那片TubeTrack更加完善。