結構性約束事件聚合下的在線多目標跟蹤方法
讀‘J.H. Yoon, C.R. LEE, et.al., Online Multi-Object Tracking via Structural Constraint Event Aggregation [C], CVPR2016’筆記。
對我而言,這篇文章的主要貢獻點在於提出一種結構性約束事件聚合的方法用於data association和mis-detection 的recovery。
Structural Constraint
object的狀態表示:分別表示t幀中第i個目標的location,velocity,size。這里表示速度的符號和我們常用的不大一樣,為了更好的理解全文,我們沿用文中的符號。 那么t幀中所有的目標狀態集為
,
,
是目標的個數。
任意兩個目標之間的結構信息使用相對位置和相對速度來表示
損失函數
關聯矩陣,
分別表示目標和檢測的個數,t時刻檢測量的狀態表示為
,
表示所有的檢測量,那么數據關聯問題可形式化如下:

顯然約束的第一項保證每一個觀測量最多只對應一個object,第二項保證任一個目標要么對應唯一一個觀測量,要么mis-detected,最后一項顯然最差情況下目標都被漏檢。
為了適應相機發生較大移動的情形,文中認為在連續幀圖像中目標之間的相互結構關系不會發生太大變化,於是就將結構信息加入到了數據關聯的損失函數中了,希望assignment能夠保持結構信息。在assignment過程中,先匹配一對目標與觀測量,稱為錨點,錨點對齊之后利用結構信息匹配剩余的目標和觀測量,這樣最終計算出損失。使損失最小的assignment就是得到的關聯矩陣了。

這個式子我覺得理解的有問題,我認為應該是一個集合,是所有可能的assignment的loss的集合,然后尋找最小loss對應的assignment。所以不應該有前面的求和符號吧,而應該補充
式子中第一項表示對應的錨點
,其相異性
分別表示size和appearance上的相異性

計算size相異性,分別對應目標和observation的高和寬,計算表觀的非相似性時使用的是巴氏距離,根號里面表示直方圖分布。
表示錨點
匹配后,
之間的相異性。

上面下的第三項就是添加結構約束下位置的相異性

上面是將
和
間的相對關系轉移到以
對齊
的空間上,然后計算
和待匹配的
之間的非相似性,相似性使用的是overlap ratio。
是指box bounding。
Event Aggregation
使用上面的loss function能夠找到最終的assignment,但是需要注意的是對於同一個assignment,如果選擇不同的錨點對,那么得到的損失值也是不相同的。比如目標(a,b,c)和觀測(1,2,3),對於同一個匹配(a,1),(b,2),(c,3),我們在對齊(a,1)時不能保證后兩對對齊,同樣的對其其他對時也不能保證剩余的對對齊。為了更加客觀公正的評價assignment,文中將屬於同一個assignment的不同錨點對條件下的損失聚合起來,然后使用均值后的損失評價該assignment的損失
對於某個Assignment,

注意這個式子和(2)是不一樣,前面求和下有的約束表示該assignment對齊

這里使用匹配的點對數計算均值,以方便進行對比。
上面兩個過程可以通過下圖來理解

看到前面的時候我就疑惑,遍歷所有的assignments應該是NP-hard問題吧,不可能實現啊?!所以文章中給出了一種簡單有效的event initialization and reduction方法。
首先采用門限策略,限制能夠匹配的點對

不符合條件的點對保持,這樣就會剔除好多assignments。
進一步對點進行划分成較小區域,使得區域之間不可能存在關聯,那么只需要遍歷小區域內的assignments,找到最優的assignments之后在組合起來形成大的assignment,當然在partition的過程中,structural constraint也被划分。文中將每一個划分中目標的個數限制在5以內,那么最多的assignments應該是5!(不考慮mis-detected),划分的方法可以采用基於距離的Kmeans方法。
initialization and reduction過程如下圖所示

Event Aggregate算法如下

Two-Step Online MOT
假設: Since the structural constraints of objects tracked in the previous frame have been also updated with their corresponding detections, their constraints are more robust robust than mis-detected objects. 所以使用structural constraints 能夠在一定程度上緩解mis-detected的誤差。
所以文中方法將MOT分為兩個步驟:數據關聯和恢復mis-detected objects。其過程見算法2

數據關聯使用的是前面提到的event aggregate的方法,現在來說說漏檢的目標怎么恢復的。
什么叫做漏檢目標恢復?如果有一個目標在t-1時刻檢測到了,t時刻沒有檢測到,而t+1時刻又檢測到了,我們稱該目標t時刻漏檢,t+1時刻恢復。這么看來,對於之前檢測到的目標,而當前沒有檢測到的目標都應該保存其狀態,以備下次恢復,這就會導致大量內存的占用,所以文中限定了漏檢幀的幀數,超過一定閾值就認為對應軌跡終止,后面會講到。這里先來看如何恢復漏檢目標。
在前一幀中檢測到的目標記為,沒有找到對應匹配的目標集
,
中對應的structural constraint表示為
,匹配的目標集和未匹配樣本的structural constraint記為
,當前的檢測集為
.
首先可以使用前面提到的structural constraint event aggregate(SCEA)對和
進行關聯,記錄下關聯的點,更新目標狀態
,(我覺得size同樣應該保存)。那些沒有關聯的觀測量以及虛點
的集合記為
.mis-detected objects的恢復就是指通過結構約束和已經匹配的點
找到
和
中的匹配關系。
理一理時序關系:是t-1時刻的量,
是t時刻的量,
是t+1時刻的量。所以
在t-1時刻漏檢了。

其中分別對應
的基數

發現(12)式和(3)式的不同點在於(12)式沒有指定錨點,這是因為匹配misdetected objects是在已經獲得一定量的關聯點條件下進行的,所以所謂的錨點存在於和
中。
前兩項分別是size和appearance的相異性,不贅述了。看看structural constraint怎么嵌入進去的

這個式子我們能夠看到其實是和
相對變化最小的以匹配成功的目標,以
為錨點的情形下計算
的相異性。
對C的可以使用匈牙利算法求解
其中
分別對應匹配點的相異性和漏檢的相異性。
綜上,當前時刻的關聯關系為. 得到匹配后的點之后,為了軌跡的光滑,可以使用kalman filter對每一個軌跡進行濾波操作。
同樣的此時可以使用kalman 濾波對當前objects 的structural constraint進行濾波,以備下一幀使用。
軌跡的起始和終止,任何一個MOT方法都應該能夠處理新軌跡的誕生和軌跡的終止。在本文方法中:
軌跡誕生:如果當前未匹配的detections和過去幾幀中的所有未匹配點的距離(size和appearance)都大於一個閾值,就認為這個detection是新出現的點,為其分配存儲位置以及對應的structural constraint
軌跡終止:如果一個目標連續兩幀沒有關聯到detections,就認為其代表的軌跡終止
Experiments

AR: average rank
TC_ODAL: Robust online multi-object tracking based on tracklet confidence and online discriminative appearance learning, CVPR2014
RMOT: Bayesian multi-object tracking using motion context from multiple objects, WACV2015
NOMT-HM: Near-online multi-target tracking with aggregated local flow descriptor, ICCV2015
ODAMOT: Online Domain Adaptation for multi-object tracking, BMVC2015.
MDP: Learning to track: Online multi-object tracking by decision making, ICCV2015
代碼正在獲取中。。。