1. 程式人生 > 其它 >多目標跟蹤演算法——DeepSORT

多目標跟蹤演算法——DeepSORT

1 簡介

DeepSORT在SORT的基礎上做了一些改進,其中最重大的改進是在做資料(track和detection)關聯時利用了行人的外觀特徵(feature embedding)。通過加入外觀特徵,可以處理更長時間遮擋下的跟蹤[經過更長時間的遮擋,運動模型可能完全失效,無法關聯上detection,但是如果有外觀特徵提供的資訊,還有可能關聯上],以及減少ID切換
什麼是ID switch呢,加入我們跟蹤到了張三,並且把張三標記為ID1,張三經過一片廣告牌或一個小人群時被遮擋住了一段時間(無ID1對應的bbox),當張三(檢測bbox)再次出現時,它被賦予了一個新ID(關聯上的是別的track)。但我們希望,即使張三有一段時間被遮擋了,當他再次出現,仍能保持他上次出現的ID(bbox仍然和原track關聯上)。
我們可以再細緻地分析一下ID Switch發生的情況:
1)被遮擋的幀數小於\(T_{max}\)

,但張三重新出現時,它的bbox被其它track匹配上了或者未被任何track匹配上(反正就沒被track A匹配上);
2)被遮擋的幀數大於\(T_{max}\),track A直接被登出了。
通過加入外觀特徵,可以減少情況1的發生概率。

2 演算法介紹

《多目標跟蹤演算法——SORT》的基礎上,DeepSORT有如下變化。

2.1 運動估計

SORT的狀態定義為\([u, v, s, r, \dot{u}, \dot{v}, \dot{s}]^T\),前4個值分別表示物體中心座標、bbox面積和縱寬比。DeepSORT的狀態定義為\((u, v, \gamma, h, \dot{x}, \dot{y}, \dot{\gamma}, \dot{h})\)

,前4個值分別表示物體中心座標、縱寬比和高度。

2.3 資料關聯

2.3.1 基於運動資訊的關聯

計算第\(j\)個檢測目標和第\(i\)個track的馬氏距離: \(\boldsymbol{d}_{j}\)是檢測結果\((u, v, \gamma, h)\)\(\boldsymbol{y}_{i}\)\({\boldsymbol{s}_{i}}\)是Kalman預測得到的均值和協方差。
\(d^{(1)}(i, j)=\left(\boldsymbol{d}_{j}-\boldsymbol{y}_{i}\right)^{\mathrm{T}} \boldsymbol{S}_{i}^{-1}\left(\boldsymbol{d}_{j}-\boldsymbol{y}_{i}\right)\)


\(b_{i, j}^{(1)}=\mathbb{1}\left[d^{(1)}(i, j) \leq t^{(1)}\right]\)

2.3.2 基於外觀特徵的關聯

計算第\(j\)個檢測目標和第\(i\)個track的外觀距離:這裡使用的特徵(人體ReID特徵)都是經過歸一化的,計算track最近的100個特徵來和檢測特徵的距離,選擇其中的最小距離值。
\(d^{(2)}(i, j)=\min \left\{1-\boldsymbol{r}_{j}{ }^{\mathrm{T}} \boldsymbol{r}_{k}^{(i)} \mid \boldsymbol{r}_{k}^{(i)} \in \mathcal{R}_{i}\right\}\)
\(b_{i, j}^{(2)}=\mathbb{1}\left[d^{(2)}(i, j) \leq t^{(2)}\right]\)

2.3.3 結合運動資訊和外觀特徵

\(c_{i, j}=\lambda d^{(1)}(i, j)+(1-\lambda) d^{(2)}(i, j)\)
\(b_{i, j}=\prod_{m=1}^{2} b_{i, j}^{(m)}\)

2.3.3 Matching Cascade

核心想法就是讓age更小的track優先進行匹配。age = the number of frames since last successful measurement association. (只要track關聯上了detection,age就reset為0)如果某個被遮擋的物體,它被遮擋的幀數小於\(A_{max}\)(大於\(A_{max}\)該track就要被銷燬了),當它重新出現時,會優先(相比於失聯更久的track)為它匹配檢測結果。

如果不區分優先順序,所有的tracks一起進來用匈牙利演算法匹配,會出現什麼問題呢?答案是如果有兩個tracks競爭地匹配同一個檢測結果,馬氏距離傾向於不確定性較大(遮擋時間較長)的track。
參考機器學習筆記-距離度量與相似度(二)馬氏距離,用下面這張圖來說明。雖然點A距分佈1的中心為4,距分佈2的中心為6,從歐式距離上看,應該選擇分佈1對應的track。但是A點在分佈2的\(3\sigma\)內,在分佈1的\(3\sigma\)外,從概率上看,應該選擇分佈2對應的track。在馬氏距離下,我們傾向於選擇分佈2對應的track,這意味著當我們的bbox面臨兩個track,如果一個track被遮擋了更久,我們的分配演算法會偏向將檢測結果分配給它。但是這一偏向並不合理,可能會導致跟蹤軌跡的碎片化和不穩定性。

後面還會繼續關注一些多目標跟蹤(MOT)演算法。