與單目標跟蹤不同,多目標跟蹤是會產生新目標進入與舊目標消失昆著。在單目標跟蹤中瘟斜,我們往往會使用給定的初始框缸夹,在后續(xù)視頻幀中對初始框內的物體進行位置預測。而多目標跟蹤算法螺句,大部分都是不考慮初始框的虽惭。
在多目標跟蹤領域,常用的跟蹤策略是TBD(Tracking-by-Detection蛇尚,主流)和DFT(Detection-Free Tracking)芽唇。TBD,也可叫DBT(Detection-Based-Tracking)取劫。即在每一幀進行目標檢測匆笤,再利用目標檢測的結果來進行目標跟蹤,這一步我們一般稱之為數據關聯(lián)(Data Assoiation)谱邪。
跟蹤也可分為Online和offliine炮捧。在Online跟蹤中,我們只能使用當前幀及之前幀的信息來進行當前幀的跟蹤惦银。而在Offline跟蹤中則沒有了這個限制咆课,我們對每一幀的預測,都可以使用整個視頻的信息扯俱,這樣更容易獲得一個全局最優(yōu)解书蚪。
多目標跟蹤中常見名詞
- Trajectory(軌跡):一條軌跡對應這一個目標在一個時間段內的位置序列
- Tracklet(軌跡段):形成Trajectory過程中的軌跡片段。完整的Trajectory是由屬于同一物理目標的Tracklets構成的蘸吓。
- ID switch(ID切換):又稱ID sw.善炫。對于同一個目標,由于跟蹤算法誤判库继,導致其ID發(fā)生切換的次數稱為ID sw.箩艺。跟蹤算法中理想的ID switch應該為0窜醉。
多目標跟蹤數據標簽格式
<frame>, <id>, <bb_left>, <bb_top>, <bb_width>, <bb_height>, <conf>, <x>, <y>, <z>
其中二維情況下,x,y,z設為-1艺谆,表示忽略榨惰;三維情況下,bbox忽略静汤。
SORT
目標狀態(tài).
在進行目標跟蹤時僅僅使用了檢測框的位置和大小進行目標的運動估計和數據關聯(lián),沒有使用任何被跟蹤目標的外觀特征或者任何的重識別的算法,所以當目標跟丟時虫给,就找不回來藤抡,只能通過檢測去重新更新ID。
為了解決動作預測和數據關聯(lián)抹估,使用了兩個十分高效的算法卡爾曼濾波和匈牙利算法缠黍。
- 卡爾曼濾波:將預測值和測量值進行結合,對系統(tǒng)狀態(tài)進行最優(yōu)估計的算法药蜻。
- 匈牙利算法(KM算法):假設有N個人和N個任務瓷式,每個任務可以任意分配給不同的人,已知每個人完成每個任務要花費的代價不盡相同语泽,合理分配使得總的代價最小贸典。代價矩陣用預測和檢測的框之間的IOU。
流程:檢測器得到detecions踱卵,卡爾曼濾波預測→ 計算代價矩陣→ 使用匈牙利算法將預測后的tracks和當前幀中的detecions進行IOU匹配 → 卡爾曼濾波更新廊驼。
軌跡創(chuàng)建:檢測的目標與其他軌跡的IOU都低于閾值。
軌跡刪除:幀沒檢測出颊埃,則刪除蔬充。
deepSORT:
目標狀態(tài), 即bounding box的位置和大小,以及對應的速度信息班利。
基于外觀信息和馬氏距離的代價矩陣
馬氏距離,表示第j個detection和第i條軌跡之間的運動匹配度榨呆,表示由卡爾曼計算的協(xié)方差矩陣罗标。
外觀信息,表示特征描述子积蜻,.存放了第i個軌跡的100個特征描述子闯割。計算第j個detection和第i條軌跡之間的最小余弦距離。
級聯(lián)匹配
表示在最近的n幀沒有與檢測結果匹配上竿拆。由小到大對消失時間相同的軌跡進行匹配宙拉,保證了對最近出現的軌跡賦予最大的優(yōu)先權。
最后丙笋,使用之前SORT算法中的IOU關聯(lián)去匹配n=1的unconfirmed(在連續(xù)若干幀(論文中是3幀)中是否連續(xù)匹配成功谢澈,是的話則認為是新軌跡產生煌贴,標注為'confirmed')和unmatched的軌跡。
參考論文:
SORT:https://arxiv.org/pdf/1602.00763.pdf
deepSORT:https://arxiv.org/pdf/1703.07402.pdf
參考文章:
https://zhuanlan.zhihu.com/p/97449724?from_voters_page=true
https://zhuanlan.zhihu.com/p/59148865
https://blog.csdn.net/cdknight_happy/article/details/79731981
參考代碼:
https://github.com/abewley/sort
https://github.com/nwojke/deep_sort