多目标跟踪MOT入门
?摘自:一線算法工程師整理!超實用的3大多目標跟蹤算法
一線算法工程師整理!超實用的3大多目標跟蹤算法https://mp.weixin.qq.com/s/LkfFY5PXzek-KRblo2gKGA
?另推薦參考
多目標研究入門-從SORT到FairMOT
多目標研究入門-從SORT到FairMOT - 知乎目標跟蹤分為單目標跟蹤(SOT)和多目標跟蹤(MOT)。SOT一般在首幀給出目標,跟蹤器(tracker)需要在后續幀定位出目標位置,可以看成目標重定位問題。MOT一般需要檢測器(detector)先檢測出目標,跟蹤器對屬于同一目標…https://zhuanlan.zhihu.com/p/260292966
多行人追蹤至落地部署項目,Deepsort、JDE、Fair-MOT三種算法簡介及其核心卡爾曼濾波器與匈牙利算法簡介_錦鯉AI幸運的博客-CSDN博客
Sort和Deepsort原理解析及在JDE和Fairmot中的應用_藏暉的博客-CSDN博客
1、理論基礎
目標跟蹤分為單目標跟蹤(SOT)和多目標跟蹤(MOT)。SOT一般在首幀給出目標,跟蹤器(tracker)需要在后續幀定位出目標位置,可以看成目標重定位問題。MOT一般需要檢測器(detector)先檢測出目標,跟蹤器對屬于同一目標的框進行關聯,可以看作目標匹配問題。
MOT算法的通常工作流程:(1)給定視頻的原始幀;(2)運行對象檢測器以獲得對象的邊界框;(3)對于每個檢測到的物體,計算出不同的特征,通常是視覺和運動特征;(4)之后,相似度計算步驟計算兩個對象屬于同一目標的概率;(5)最后,關聯步驟為每個對象分配數字ID。
MOT的分類
1)TBD(Tracking-by-Detection)與DFT(Detection-Free Tracking)也即基于檢測的多目標跟蹤與基于目標外形的先驗知識無需檢測器的多目標跟蹤。TBD是目前學界業界研究的主流。
2) 傳統的跟蹤方式有在線跟蹤(Online)與離線跟蹤(Offline)兩種。在線跟蹤算法中,只能使用當前幀及之前幀的信息來進行當前幀的跟蹤。而在離線跟蹤算法中則沒有了這個限制,對每一幀的預測,都可以使用整個視頻的信息,這樣更容易獲得一個全局最優解。兩種方式各有優劣,一般視應用場合而定,離線跟蹤算法的效果一般會優于在線跟蹤算法。而介于這兩者之間,還有一種稱之為接近在線的多目標跟蹤算法(NOMT),即可以部分利用未來幀的信息。
在跟蹤結果可修改性方面,在線跟蹤是不允許修改以往的跟蹤結果的。因為一旦修改,算法自然就不再符合在線跟蹤原則,從而不能利用未來幀,進而變成了Near-Online或者Offline的跟蹤方式。
需要特別注意,在線跟蹤不等于Real-Time實時跟蹤,實時跟蹤一定屬于在線跟蹤的,但絕大部分在線跟蹤算法速度還太慢,不足以支持實時處理的要求. 尤其是應用了深度學習的算法,往往需要大量運算,對實時處理有較大壓力。
MOT常用評價標準
表1.?常用評價指標
此外,還有兩種評價方式CLEAR MOT Metrics與ID Scores,這里不做詳細介紹。
MOT的難點
MOT最常用的類別是Tracking-By-Detection與Online,對應的算法處理步驟:
圖1 MOT算法處理步驟
其中,有兩個難點:
1)遮擋,這也是ID交換和軌跡分段的主要原因;
2)兩個軌跡非常靠近,ID容易匹配不準,出現錯位或丟失。
目前所有目標追逐算法都圍繞著這兩大難點進行優化,優化的方向圍繞著這四個步驟,如:運用Private Dataset,挑選合適檢測模型,提升檢測精度;特征提取不局限于一般的CNN,還有Siamese Network等網絡;特征間的相似度,不再是簡單的Distance Metric,也開始運用CNN、RNN、LSTM等;數據關聯匹配除了傳統經典的Hungarian Algorithm,也可以當作圖優化的問題處理。
常用的效果較好的有以下幾種:
-
Sort(Simple nline and real time tracking)
-
Deep Sort(Deep simple online and realtime tracking)
-
FairMot(A simple baseline for multi-object tracking)
-
Graphnn Multi-object Trachking。(后面簡寫為Graphnn-mot)
2、典型的追蹤算法介紹
1. Sort和Deep Sort
Sort和Deep Sort[9]是經典的追蹤算法之一,算法原理流程圖如下:
圖2.?Deep Sort算法的簡單流程圖
如上圖,算法模塊,根據目前MOT常用的算法步驟:a.檢測, b.特征提取、軌跡預測, c.計算相似度,d.數據匹配,Deep Sort算法就這四個步驟,按序簡介涉及到的核心知識點五個:Setection、ReID model、Kalman Filter、iou與余弦/馬氏距離、Hungarian Algorithm。
Detection:常用的檢測網絡,如Faster Rcnn、Yolov4、SSD等,可根據實際項目對精度或時間的要求挑選。本文復現時,上面的幾種網絡都有嘗試,源代碼使用了商湯的mmdetection框架下的cascade-rcnn,但項目考慮時間和精度,最終使用了Yolov4[3]作為檢測來源。
ReID model:源代碼使用了多重粒度網絡(Mutiple Granularity Network),是以Resnet50作為backbone,以Softmax_2048分支作為id特征。考慮到2048維特征過大,數據關聯時,時間會比較長,所以一般項目上會采用MobileNetv2[4]作為主干網絡,id特征維度可以下降到751,減少運算量。
Kalman Filter:卡爾曼濾波,預測confirmed id在下一幀的中心點位置以及box的size。
iou與余弦距離:用于計算數據匹配的代價矩陣。1-iou的值作為box間的距離值,余弦距離函數值作為id特征值間的距離。
Hungarian Algorithm:匈牙利匹配算法用于目標預測與目標檢測的關聯匹配,確定目標的軌跡。
相比之下,Sort算法比起Deep sort算法少了ReID model與余弦距離判斷,所以ID切換的過于頻繁,精度要低很多。速度幾乎只取決于Detection模型的預測速度。如果對速度要求很高的,可以考慮用sort算法。
2.?FairMot
FairMot追蹤算法[10],算法處理流程圖如下:
圖3.?FairMot算法的簡單流程圖
FairMot算法重點突破:
a. 比起之前兩步(先檢測后Re-ID)的追蹤算法,FairMot完成檢測與Re-ID共享網絡參數,減少算法推理時間,速度大幅度提升。
b. 比起之前單步的追蹤算法JDE[12],存在的一些不足,如:一個物體可能被多個anchor負責并進行檢測,或實際物體的中心可能與負責對該物體進行檢測的anchor中心有偏差,都會導致id頻繁變換。Fairmot針對這些不足,不用anchor-based的檢測方式,以anchor-free目標檢測范式代替。
涉及到的核心知識點:一個有效簡潔的網絡結構DLA34、Kalman Filter、iou與余弦距離、Hungarian Algorithm。下面詳細介紹DLA34網絡,至于Kalman,Distance Metrixes, Hungarian Algorithm同Deep Sort的內容一致,這里不多做解釋。
FairMot旨在將檢測與Re-ID揉在一個網絡結構里,且需要是anchor-free的目標檢測方式,所以DLA34網絡結構必需要預估目標中心點的位置和對應目標的features。FairMot的網絡結構圖如下:
圖4.?FairMot網絡結構及檢測示意圖
DLA34的backbone是Resnet34[5],Resnet網絡結構是里程碑似的出現,比起一般的plain network, Resnet直接使用stride=2的down sample并且用global average pool層替換全連接層,保持了網絡的復雜度,并有效解決了深度網絡的退化問題。
DLA34[6]是對Resnet34加強,除了Down Sample,還有Up Sample,有點類似FPN[7]的網絡結構,跨層添加features,使得多層融合,跨層stride=4。
heatmap head:用于預估目標中心位置,使用了與focal loss類似的損失函數,詳情推導見源文。
box offset head:目的是使得預估的目標位置更精準,輔助目標中心位置的預估。box size head:對每個預估了的目標中心,預估其對應的box的長和寬。offset與size兩個頭加入在一個l1 loss函數里面。
Re-ID branch:一個分類任務,旨在對每個預估出的目標中心產生64維的features,通過features用于后續計算前后幀的目標的相似度。使用了通用的softmax損失函數。
3.?Graphnn-mot
Graphnn-mot算法[11],簡單流程圖如下:
圖5.?Graphnn-mot算法的處理流程
Graphnn-mot是基于圖神經網絡[8]的離線MOT,利用圖結構同時執行特征提取和數據關聯匹配,提出了時間感知信息傳遞網絡對節點和連接邊信息的更新。
涉及到的核心知識點:圖構造、特征編碼、信息傳遞、軌跡預測。
圖構造:對需檢測的所有圖片(圖片之間要有時間關聯,最好是視頻),進行目標檢測。構建圖,其中節點對應檢測目標,邊對應檢測目標之間的連接。對圖中的每條邊引入了一個二元變量,如果某些邊連接了屬于同一條跟蹤軌跡且在同一條跟蹤軌跡上是時間連續的節點,那么其標簽為1,否則為0。一個節點不會屬于超過一個跟蹤軌跡。論文提出直接學習預測圖中的哪條邊被激活,即邊上的二元變量的最終值,為此將這個任務視為邊上的二分類任務,標簽就是二元變量值y。
特征編碼:在邊界框圖像上應用一個卷積神經網絡,初始化節點的外觀特征嵌入。對于每一條邊也就是不同幀的每一對檢測,我們計算一個具有編碼了他們的邊界框之間的相對大小,位置以及時間差的特征的向量。然后將其輸入到一個多層感知器中得到邊的幾何嵌入。
信息傳遞:我們在整個圖上執行了一系列的信息傳遞步驟。對于每一輪的信息傳遞,節點會與他們的連接邊分享外觀信息,邊會與他們的伴隨節點分享幾何信息。最后,能夠獲得節點和邊的更新嵌入信息,其包含了依賴于整個圖結構的高階信息。
軌跡預測:根據最后的所有邊嵌入預測的連續的二元結果,獲得最終的跟蹤軌跡。
3、實際算法測試分析
本文對Deep Sort、FairMot、Graphnn-mot算法進行橫向測試,并使用追蹤經典指標評估(見表1),基于MOTChallenge數據集實際測試進行評估,評估結果如下表(測試環境詳見附錄1):
表2.?追蹤算法實際測試的時間和精度(精度含義見表1)
如表所示,無論時間還是精度,Farimot更有優勢。影響精度的原因主要是兩個:
1. 檢測目標聚集,被遮擋,ID switches頻率太高。三種追蹤算法都有出現這類情況,嚴重程度graphnn mot >deep sort>fairmot,可見下面擁擠場景例圖:
組圖1:擁擠場景中的graphnn mot追蹤算法
組圖2:擁擠場景中的deep sort追蹤算法
組圖3:擁擠場景中的farimot追蹤算法
如上圖紅上衣人為例,graphnn mot對應的id號為:無->15->20,id號連續變換;deep sort對應的id號:32->32->48,id號部分變換,只在最聚集的地方變換了id號;fairmot對應的id號:30->30->30,id號一直很穩定。
2. 目標檢測精度不高,漏檢與誤檢。主要是graphnn mot算法有明顯漏檢,可見下面例圖:
組圖4:graphnn追蹤算法目標檢測漏檢示例圖
對于目前最常使用的追蹤算法,都是tracking-by detection,所以目標檢測的精度直接影響追蹤的精度。
4、總結
對于跟蹤模塊,目前來說更好的解決方案,比如使用MOTDT[13],此算法在DeepSort的基礎上加入了軌跡評分的機制,目前像FairMOT、JDE使用的跟蹤模塊都是MOTDT,從精度和速度上此算法表現都是較優的。
圖神經網絡在追蹤上的運用,還處于剛起步階段。屬于離線跟蹤算法之一,而且目標檢測與ReID檢測結果沒有進行融合,所以速度方面,沒有太大優勢。
對于實際項目來說,對綜合目標跟蹤效果影響最大的因素是目標檢測的精確度,相對于公共數據集,當使用實際項目的數據集時,使用的目標檢測精度提升后,實際跟蹤效果能達到比較理想的水平。?????
??目前以上追蹤算法用于滴普的某養殖企業養殖場豬計數項目和某地產企業施工地段安全帽的檢測預警項目中,已取得較好效果,并能為企業持續創造新價值。
參考文獻
[1]?Multiple Object Tracking: A Literature Review. https://arxiv.org/abs/1409.7618
[2]?Deep Learning in Video Multi-Object Tracking: a Survey. https://arxiv.org/pdf/1907.12740.pdf
[3]?YOLOv4: Optimal Speed and Accuracy of Object Detection. https://arxiv.org/pdf/2004.10934v1.pdf
[4]?MobileNetV2: Inverted Residuals and Linear Bottlenecks. https://arxiv.org/abs/1704.04861
[5]?Deep Residual Learning for Image Recognition. https://arxiv.org/abs/1512.03385
[6] Deep Layer Aggregate. https://arxiv.org/pdf/1707.06484.pdf
[7]?Feature Pyramid Networks for Object Detection. https://arxiv.org/pdf/1612.03144.pdf
[8]?A Comprehensive Survey on Graph Neural Networks.?https://arxiv.org/abs/1901.00596
[9] Simple Online and Realtime Tracking with a Deep Association Metric.?https://arxiv.org/pdf/1703.07402.pdf
[10] FairMOT: On the Fairness of Detection and Re-Identification in Multiple Object Tracking.?https://arxiv.org/pdf/2004.01888.pdf
[11] Learning a Neural Solver for Multiple Object Tracking.?https://arxiv.org/pdf/1912.07515.pdf
[12] Towards Real-Time Multi-object tracking. ?https://arxiv.org/pdf/1909.12605v1.pdf
[13] Real-Time Multi People Tracking with Deeply Learned Candidate Selection and Person Re-Identification. ?https://arxiv.org/abs/1809.04427?
[14]?http://www.deepexi.com/
附錄
1. 測試條件與環境
環境配置:
ubuntu 20.04.4LTS 單卡GTX1060 CUDA Version 10.1.
python=3.8.3 opencv-python=4.3.0.36 pytorch=1.4 torchvision cudatoolkit=10.1.243
數據集:
public dataset: MOT2017-MOT2020 crowdhuman 用于detection模型訓練和測試
CUHK03 Market1501 DukeMTMC-reID MSMT17用于reID模型訓練??
總結
以上是生活随笔為你收集整理的多目标跟踪MOT入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 集成微透镜阵列的CMOS传感器分析
- 下一篇: 万向节死锁_万向节死锁产生的原因