做者: ShijieSun, Naveed Akhtar, HuanShengSong, Ajmal Mian, Mubarak Shahgit
來源: arXiv:1810.11780v1github
項目:https://github.com/shijieS/SST.git算法
MOT方法通常包含兩個步驟:目標檢測和數據關聯。 目標檢測這兩年隨着深度學習的發展而迅速發展,可是數據關聯絕大多數仍是採用hand crafted的方式將表觀特徵,運動信息,空間關係,group關係等進行結合。 這篇文章則是利用深度網絡實現端到端的表觀特徵抽取和數據關聯。 Deep Affinity Network(DAN)還實現了軌跡的初始化和終止等操做。在MOT15和MOT17,以及UA-DETRAC數據集上驗證了有效性。網絡
Deep Affinity Network (DAN)app
如圖1所示, DAN包含了兩部分:特徵抽取模塊(feature extractor)和類似度估計模塊(Affinity estimator), 總體的訓練是end-to-end方式的。ide
DAN的輸入是兩幅圖像$I_t, I_{t-n}$以及每幅圖像中對應目標的中心點座標$\mathcal{C}t, \mathcal{C}{t-n}$, 這裏不要求兩幅圖像連續, 時間間隔$N\in\mathbb{N}^{rand}\sim [1, N_V]$.性能
DAN的輸出應該是兩幅圖像中目標的關聯矩陣$L_{t-n, t}$學習
Data Preparationthis
以0.3的機率按上述方法擴展樣本對。而後圖像固定大小$H\times W\times 3$, 圖像水平翻轉的機率$0.5$code
MOT中每一幀存活的軌跡個數不是固定的,給網絡的訓練帶來難度。所以文章給出了一個軌跡個數的上限值$N_m=80$ , Fig.2 給出了關聯矩陣的構建示意圖。這裏爲了清晰演示,取$N_m=5$. 第1幀和第30幀圖像各檢測到4個目標, 總共有$5$我的。 Fig.2c展現了包含dummy row和column的中間矩陣$L_{1, 30}'$的構建, dummy row或者column用來表示dummy bounding box,從而讓關聯矩陣大小一致,不隨目標個數變化而變化。 Fig.2d中關聯矩陣進一步augmented引入新的row和column,表示新出現的目標和終止的軌跡。最終使用Fig.2d的矩陣做爲訓練目標。最後一行或者列中包含多個1則表示多個目標終止或出現。
Feature extractor
在VGG16上進行了修改, 將VGG16後面的全鏈接層和softmax層都換成了卷積層,這麼作主要是卷積層可以更好地encoding目標的空間特徵。另外這裏的輸入數據也更大$3\times 900 \times 900$, 從而修改後的VGG16最後一層的輸出還有$56\times 56$大小。
VGG16最後輸出的$56\times 56$的feature map採用表2上半部分的結構進一步縮小到$3\times 3$
而後根據Table 3,選擇9個feature maps,利用目標的中心座標$\mathcal{C}_t$在channel上選擇特徵,降維採用的$1\times 1$的卷積核, 特徵進行concatenate。最終每個目標造成$520$維的特徵向量。對於那些dummy的目標,其特徵表示爲全零向量。
Affinity estimator
feature extractor以後每幅圖像抽取的特徵$F_t\in R^{N_m\times 520}$,而後將兩幅圖像目標的特徵任意的組合就造成了tensor $\Psi\in R^{N_m\times N_m\times(520\times 2)}$, 而後在利用5層卷積核爲$1\times 1$的卷積層壓縮維度造成類似度矩陣$M\in R^{N_m\times N_m}$,壓縮網絡的模型如Table 2的下半部分所示。
這裏的M對應於真實的Label,即兩個目標是否關聯。可是沒有解釋新出現的軌跡和離開的軌跡。所以文章對類似度矩陣$M$進行了擴充。爲了讓模型更好訓練以及loss更好定義,這裏$M$分開進行行列擴充,擴充的向量$\textbf{v}=\gamma \textbf{1}$ , $\gamma$是超參。
Network Loss
$M_1\in R^{N_m\times(N_m+1)}$列擴展矩陣每一行表示第$m$個目標關聯狀況或者是否結束。 $M_2\in R^{(N_m+1)\times N_m}$行擴展矩陣對應了反向匹配時第二幅圖像中目標的關聯狀況或者是不是新出現的軌跡。對行,列擴展矩陣$M_1, M_2$分別進行行,列softmax獲得$A_1, A_2$表示的是機率。
所以DAN網絡損失包含4部分:前向損失,後向損失,一致性損失和組合損失
$$
\begin{aligned}
\mathcal{L}_f(L_1, A_1) &= \frac{\sum(L_1\odot(-\log A_1))}{\sum L_1}\
\mathcal{L}b(L_2, A_2) &= \frac{\sum(L_2\odot(-\log A_2))}{\sum L_2}\
\mathcal{L_c}(\widehat{A_1}, \widehat{A_2}) &= \Vert\widehat{A_1}-\widehat{A_2} \Vert_1\
\mathcal{L_a}(L_3, \widehat{A_1}, \widehat{A_2}) &= \frac{\sum (L_3\odot (-\log(max(\widehat{A_1}, \widehat{A_2}))))}{\sum (L_3)}\
\mathcal{L} &= \frac{\mathcal{L_f}+\mathcal{L_b}+\mathcal{L_a}+\mathcal{L_c}}{4}
\end{aligned}
$$
其中$L_1, L_2$都是與$M_1, M_2$對應的$L{t-n, t}$的trimmed 版本, $\widehat{A_1}, \widehat{A_2}$是trimmed成$N_m\times N_m$的版本, $L_3$則是同時去掉了最後一行和最後一列。
關於四種loss的關係闡述
We compute the final loss $L$ as the mean value of the four sub-losses. The overall cost function of our network is defined as the Expected value of the training data loss. The afore-mentioned four sub-losses are carefully designed for our problem. In the Forward and Backward losses, instead of forcing $A_q$, where $q \in{ 1, 2}$1; to approximate corresponding Lq by using a distance metric, we maximize the probabilities encoded by the relevant coefficients of $A_q$. We argue that this trategy is more sensible than minimizing a distance between a binary matrix ($L_q$) and a probability matrix ($A_q$). Similarly, given the difference between $\widehat{A_1}$ and $\widehat{A_2}$ is expected to be small, we employ $l_1$-distance instead of more commonly used $l_2$-distance for the Consistency loss. Once the DAN is trained, we use it to compute the affinity matrix for an input frame pair as $A \in R^{N_m\times (N_m+1)} = \mathcal{A}(max(\widehat{A_1},\widehat{ A_2}))$ , where $\mathcal{A}(.)$ appends the ($N_m + 1$)th column of $A_1$ to the matrix in its argument. The max operation used in our definition of the affinity matrix $A$ also justifies the maximization performed to compute the Assemble loss. Thus, the four sub-losses
defined above are complementary that result in a systematic approximation of the ground truth data association.
DAN deployment
由於feature extractor部分是參數共享的,而在計算類似度矩陣的時候只是後面的affinity estimator牽涉到兩兩相互操做,所以,每張圖片其實只進行一次feature extractor的操做,後面的affinity estimator是進行匹配。
Deep track association
這部分很關鍵。爲了匹配當前幀中的目標, 將每一幀的特徵矩陣$F$和對應的時間戳保存起來,而後能夠計算曆史frames與當前frame之間的類似度矩陣。
關聯過程: 首先根據第1幀圖像中的目標個數初始化軌跡集合$\Tau_0$,軌跡中每個元素是一個二元組(時間戳, 軌跡編號),使用hungrain algorithm對accumulator matrix $\Lambda$分解去grow對應的軌跡, $\Lambda$是當前幀目標與多個歷史幀目標的類似度矩陣的累積求和,注意這裏累積求和是相同軌跡編號進行求和。
注意這裏有個問題,匈牙利算法是一對一約束,但類似度矩陣中添加的最後一行一列不知足這個要求,因而匈牙利算法只是對去除最後一行和列的矩陣進行分解,而後再把最後的行列加進來。
實驗部分仍是很充分的,在MOT15和MOT17上進行了行人跟蹤的實驗, 在UA-DETRAC上進行了車輛的跟蹤。
實驗沒有給出在MOT16上DPM檢測器下的跟蹤性能,我跑了下代碼發現性能不好。在MOT17庫上性能好是由於MOT17庫上的檢測相對準確。也就是說該方法其實對於檢測的精度仍是很是依賴的。由於網絡的輸入是目標的中心點座標,而且在抽取特徵階段是利用中心點位置channel 做爲特徵,檢測偏差一定致使特徵的不許確,從而影響性能。