多目標跟蹤的幀間數據關聯可以分爲online(frame-by-frame)和offline(batch-by-batch)兩類。前者講究追求real-time tracking,跟蹤結果的給出無時延,理論上講可以拼Real-time(可惜往往沒戲嘻嘻。。);後者講究利用前後幀更多的信息,即在一個time window中一次性實現多幀的關聯,用精度換速度換時效性。不可避免地帶了了輸出的遲滯,而且關聯的問題也由online的二部圖匹配提升到多部圖匹配,且匹配的解空間隨batch的增大而指數增長。
用Network flow(NF)解多目標跟蹤中的幀間數據關聯基本屬於標準操作,隸屬於上述的第二類batch-mode。此類用NF方法解detections或者tracklets之間關聯的業界標杆是USC Nevatia大師的CVPR08佳作《Global Data Association for Multi-Object Tracking Using Network FLows》以及ECCV08《Robust Object Tracking by Hierarchical Association of Detection Responses》。當然,我的帶教導師UCF Dr.Shah也在此方面多有建樹。但是Shah大師更傾向於用multi-clique的方法來formulate多目標關聯的問題,詳情請搜GMCP tracker~~~
下接正文:
核心上說,Bipartite Matching是逐幀關聯,是一種online method;Network Flow是一種batch-mode,offline多幀關聯。不論是BM還是NF,都可以化作一個Linear Programming的優化問題求解。而且,Bipartite matching(乃至多步圖匹配問題)也可以化作network flow的問題。而在這個優化問題中,最關鍵的是cost function。
Cost function和affinity metric是分不開的。作爲衡量pair-wise cost而言,鏈各個entities之間的affinity往往是影響cost的重要依據。而這種pair-wise affinity的來源,一般有detector confidence,motion & appearance similarities,i.e. temporal & spatial distances。
本文是分步走的DA,先DR2DR生成TLs(沒有用Detector,DR是直接用數據庫給出的DR),再由TLs生成Traj。DR2DR DA用的是overlapping temporal window做的batch-wise network flow minimization bi-level optimization;而TL2TL用的是HA做二部圖匹配,affinity用的是兩個TL之間重合的DR數目。
在DR2DR用network flow解多步圖匹配階段establish E2E learning。學什麼?學cost,準確說是學cost function中的參數。把多步圖匹配求解的問題轉化爲一個bi-level minimization,其中的cost term是參數化的,學就學cost裏面的參數。當然,因爲是E2E,所以gradient BP回前段計算appearance affinity時的CNN feature extractor too。所謂參數化cost,就是省去原來hand-crafted cost function時1.對function的選擇,2. Grid search優化調參。可學習的cost function就是一些MLP把輸入feature轉化爲一個scalar value output。
- 如何把一個多幀DA的多步圖匹配轉化爲一個Network Flow問題(即構建一個NF graph,在這個graph裏面找出minimum flow):
- 如圖所示是一個三幀的三步圖匹配;分別有3,3,2個目標;
- 每個DR在NF graph裏轉化爲一對兒nodes;
- NF graph中有一個源節點和一個終點(S and T);
- NF graph中一共有兩類4種edge,每個edge有一個indicator x和一個cost c:
Unary edge:
- Xidet,Cidet :一個DR的一對兒Node之間的edge,(cost通常來自detector confidence);紅色
- Xiin,Ciin :一個DR中的前一個node與源節點的edge;黑色
- Xiout,Ciout :一個DR中的後一個node與終節點的edge;黑
Pairwise edge:
Xi,jlink,Ci,jlink:前面幀DR的後一個節點與後面幀DR的前一個節點的edge(cost通常是連個DR的affinity)。注意,這裏面前後DR可以跨幀連接,這樣可以客服occlusion和missed DR帶來的fragmentation;藍色
在這個NF graph中,求最優association就是求最優的一組edge x*能夠有最優的minimum over all全graph源點到終點的flow(圖中粗線就是最優解,可見有些藍色的pairwise edge沒有在解中):要滿足flow conservation constraint所以就不會出現最優解是0 flow,因爲in-edge是正無窮的weight,而所有edge上的cost都是負值,相當於在還債。Affinity越大,confidence越大,越負,就能換越多的債,就越會出現在解中。
本文要E2E學的,就是上式子中的cost term c。傳統方法中c是hand-made,固定的公式。這裏,我們讓c變成一個parameterized cost function,這樣整個E2E train的loss minimization優化問題就變成了一個Bi-level的雙優化問題,同時優化整個訓練的loss,以及minimum flow as a constraint:
其中c = c(f,θ),θ就是要train要學的參數。
- 訓練:
- 製作gt數據:
GT數據就是一組xgt indicators (0或1),指定那些edge是activated,就說明這條edge上相關的node的相關的DR在traj上。
在多目標跟蹤庫上有兩組bbox:一組是由ID的人工畫出來的bbox是GT,一組是沒有ID的但是有detector confidence score的detector檢測結果bbox是DRs。因爲網絡的輸入時raw DR,所以做GT就是把同樣這些DR給上標籤的過程。做GT就是把和某個GT box IoU超過0.5的confidence最大的DR box assign給這個GT traj,即這個DR在NF graph中的xdet是1,且跨幀連接路徑中有這個DR,它與上下幀中同樣assign給這個GT traj的DR們之間的Xlink是1,若沒有上下幀同樣ID的DR,則這個DR的xin或者xout是1。
- Loss function:weighted L2 loss w.r.t. unary and pairwise edge,weight來reason不同的FP-TP-FN-TN連接的情況。
- 跟蹤邏輯:
- 用密集overlapp的temporal滑窗得到一段一段幀的DRs,然後解決每個小窗裏的基於NF的多步圖匹配問題,得到TLs;
- Tl和TL之間的關聯用基於overlapping DR numer爲affinity的HA來做二部圖匹配。
- cost function:
- hand-crafted:
上述式子中的hyper-parameters包括α,β,C,通過grid search來不斷嘗試最大化MOTA同時maintain Recall來確定。這個調參的過程是exponential的隨着超參數的數量增長,然而這也正是使用hand-crafted cost的最大弊端。
- Learned with NF:
Unary cost與上述hand-crafted一樣,而pairwise cost選用1 layer MLP with 64 neurons,or two layers MLP with 32 neurons each。就是用全連接層來,輸入feature,轉換產生scalar value cost,這樣就省去了對β調參的過程。
- Features used to compute cost(affinity)with:
在Bipartite matching的場景下是最大化overall affinity,而在mini-network flow場景下就是最小化cost,而cost往往是affinity取倒數。
Motion-wise,用的是bbox IoU,ALFD;
Appearance-wise,用的是raw image with ResNet feature extractor,or Siamese CNN直接compute pairwise score。