導(dǎo)讀 多目標(biāo)跟蹤是計(jì)算機(jī)視覺領(lǐng)域中的一個(gè)重要任務(wù),它旨在從視頻或圖像序列中準(zhǔn)確地檢測(cè)和跟蹤多個(gè)移動(dòng)目標(biāo)。不過在落地部署時(shí),有一些關(guān)鍵點(diǎn)需要解決。本文從快速應(yīng)用部署的角度,和大家講解多目標(biāo)跟蹤的實(shí)現(xiàn)方式,希望對(duì)大家有幫助。 實(shí)際應(yīng)用中,做工程落地所遵從的原則是能夠在保證實(shí)現(xiàn)功能的情況下,以最快的速度實(shí)現(xiàn),先出一版,后期再不斷迭代優(yōu)化。所以定方案是最重要的,前期的調(diào)研工作做的好,對(duì)于后續(xù)的部署會(huì)極為方便,否則會(huì)走很多彎路。
回到本文的內(nèi)容中來,目標(biāo)檢測(cè)已產(chǎn)生出很多優(yōu)秀的算法(這里提的都是基于神經(jīng)網(wǎng)絡(luò)的算法,傳統(tǒng)的CV檢測(cè)算法不在考慮范圍內(nèi)),類似的綜述性文章很多,無論單階段式的(ssd/yolo),還是兩階段式的(faster rcnn)在實(shí)際工程中都有被應(yīng)用,哪種框架用的熟練就用哪種框架,目標(biāo)檢測(cè)這一塊就不過多討論; 多目標(biāo)追蹤顧名思義就是跟蹤視頻畫面中的多個(gè)目標(biāo),得到這些目標(biāo)的運(yùn)動(dòng)軌跡;核心在于目標(biāo)檢測(cè)和數(shù)據(jù)關(guān)聯(lián),即在每一幀進(jìn)行目標(biāo)檢測(cè),再利用目標(biāo)檢測(cè)的結(jié)果來進(jìn)行目標(biāo)跟蹤,后面一步一般稱之為數(shù)據(jù)關(guān)聯(lián),數(shù)據(jù)關(guān)聯(lián)更多依賴于手工特征提取(外觀特征、運(yùn)動(dòng)特征、形狀特征)。下面就多目標(biāo)跟蹤算法總結(jié)歸納為以下幾類:
一、以卡爾曼濾波和匈牙利、KM匹配的后端追蹤優(yōu)化算法(代表性的應(yīng)用有SORT、DEEP-SORT)
這類算法特點(diǎn)在于能達(dá)到實(shí)時(shí)性,但依賴于檢測(cè)算法效果要好,特征區(qū)分要好(有點(diǎn)互相甩鍋的味道,輸出最終結(jié)果的好壞依賴于較強(qiáng)的檢測(cè)算法,而基于卡爾曼加匈牙利匹配的追蹤算法作用在于能夠輸出檢測(cè)目標(biāo)的id,其次能保證追蹤算法的實(shí)時(shí)性),這樣追蹤效果會(huì)好,id切換少。相關(guān)論文和代碼如下:
DeepSort: Wojke, Nicolai and Bewley, Alex and Paulus, Dietrich "Simple Online and Realtime Tracking with a Deep Association Metric" [paper] [code] In ICIP 2017
Sort: Bewley, Alex and Ge, Zongyuan and Ott, Lionel and Ramos, Fabio and Upcroft, Ben "Simple Online and Realtime Tracking"[paper] [code] In ICIP 2016.
二、基于多線程的單目標(biāo)跟蹤器的多目標(biāo)追蹤算法(代表性的算法有KCF、LEDS)
這類算法特點(diǎn)是跟蹤效果會(huì)很好,因?yàn)槠錇槊恳活愇矬w都單獨(dú)分配了一個(gè)跟蹤器。但該算法對(duì)目標(biāo)尺度變化要求較大,參數(shù)調(diào)試需要合理,同時(shí)該算法極耗cpu資源,實(shí)時(shí)性不高。相關(guān)論文和代碼如下:
KCF: "High-Speed Tracking with Kernelized Correlation Filters" [paper] [code] In TPAMI 2015
LEDS:"Robust Estimation of Similarity Transformation for Visual Object Tracking" [paper] [code] In AAAI 2019.
三、 基于深度學(xué)習(xí)端到端的多目標(biāo)跟蹤算法。(代表性的算法有SST)
現(xiàn)階段end-to-end的算法還不多,大多處于實(shí)驗(yàn)室刷榜階段,有進(jìn)一步落地應(yīng)用的及時(shí)更新。相關(guān)論文和代碼如下:
DAN: "Deep Affinity Network for Multiple Object Tracking" [paper] [code] In TPAMI 2019.
MCSA: "Multi-Object Tracking with Multiple Cues and Switcher-Aware Classification" [paper] In CVPR 2019.
(這篇文章沒有開源,基于SiameseRPN單目標(biāo)跟蹤器和行人ReID的多目標(biāo)跟蹤算法,解決長(zhǎng)期跟蹤下的目標(biāo)漂移問題。利用SiameseRPN獲取短期的目標(biāo)線索,利用ReID特征計(jì)算目標(biāo)間的匹配置信度,基于該置信度構(gòu)建二分圖,求解最小費(fèi)用流得到長(zhǎng)期的跟蹤結(jié)果)
上述文章參考來源:
github.com/SpyderXu/multi-object-tracking-paper-list
第一類算法原理介紹:
SORT 是一種實(shí)用的多目標(biāo)跟蹤算法,引入了線性速度模型與卡爾曼濾波來進(jìn)行位置預(yù)測(cè),在無合適匹配檢測(cè)框的情況下,使用運(yùn)動(dòng)模型來預(yù)測(cè)物體的位置。匈牙利算法是一種尋找二分圖的最大匹配的算法,在多目標(biāo)跟蹤問題中可以簡(jiǎn)單理解為尋找前后兩幀的若干目標(biāo)的匹配最優(yōu)解的一種算法。而卡爾曼濾波可以看作是一種運(yùn)動(dòng)模型,用來對(duì)目標(biāo)的軌跡進(jìn)行預(yù)測(cè),并且使用確信度較高的跟蹤結(jié)果進(jìn)行預(yù)測(cè)結(jié)果的修正。
然而由于現(xiàn)實(shí)中目標(biāo)運(yùn)動(dòng)多變且遮擋頻繁,該算法的身份轉(zhuǎn)換(Identity Switches)次數(shù)較高。于是衍生出帶有深度關(guān)聯(lián)特征的DeepSORT 方案,其沿用SORT中的卡爾曼濾波和逐幀數(shù)據(jù)關(guān)聯(lián)方法并整合外觀信息,使得身份轉(zhuǎn)換的數(shù)量減少了45%。所提方案為:
l 使用馬氏距離和深度特征余弦距離兩種度量;
l 采取級(jí)聯(lián)匹配,優(yōu)先匹配距上次出現(xiàn)間隔短的目標(biāo);
l 第一級(jí)關(guān)聯(lián)以余弦距離作為成本函數(shù),但設(shè)定馬氏距離和余弦距離兩個(gè)閾值約束;
l 第二級(jí)關(guān)聯(lián)與 SORT 中相同,嘗試關(guān)聯(lián)未確認(rèn)和年齡為 n=1的不匹配軌跡;
l 同樣采用試用期甄別目標(biāo),但大幅提高軌跡壽命 Amax=30。
核心:軌跡處理和狀態(tài)估計(jì)、關(guān)聯(lián)問題、級(jí)聯(lián)匹配、特征描述器
Deepsort處理流程 實(shí)現(xiàn)應(yīng)用:實(shí)際工程中存在一些硬性指標(biāo),必須考慮硬件平臺(tái)的資源(車載控制器iecu、Nvidia平臺(tái)、FPGA),cpu內(nèi)存大小,是否有gpu,是否支持神經(jīng)網(wǎng)絡(luò)(caffe),是否支持部署在硬件端的編程語言(C++、verilog)。目前在學(xué)術(shù)界極受歡迎的pytorch框架,訓(xùn)練模型可以,部署在硬件端不現(xiàn)實(shí),底層調(diào)用的接口還是純正的c代碼。現(xiàn)在各類網(wǎng)絡(luò)模型可以實(shí)現(xiàn)的框架很多,舉個(gè)例子:目標(biāo)檢測(cè)網(wǎng)絡(luò)ssd可以用caffe框架實(shí)現(xiàn),也可以用pytorch框架實(shí)現(xiàn),按正常的想法,兩種最后訓(xùn)練出來的模型精度、速度應(yīng)該類似,實(shí)際情況是最后出來的效果是有差別的,部署在硬件端同樣有差別。另外用pytorch框架還需要轉(zhuǎn)成支持C++的語言,不過現(xiàn)在pytorch已經(jīng)出了可以調(diào)用libtorch的c++接口,以及支持tensort轉(zhuǎn)換,方便基于pytorch的研究者們將代碼部署在硬件端。
多目標(biāo)追蹤一般接在目標(biāo)檢測(cè)后。在工業(yè)界目標(biāo)檢測(cè)采用比較多的是ssd檢測(cè)網(wǎng)絡(luò),單階段式,速度快,精度不差,修改其backbone,速度會(huì)進(jìn)一步提升,部署在NV的平臺(tái)幀率可以達(dá)到30fps以上。所以要實(shí)現(xiàn)目標(biāo)檢測(cè)代碼和多目標(biāo)追蹤代碼集成的任務(wù),需要先將兩者的框架統(tǒng)一,若采用C++的目標(biāo)檢測(cè)網(wǎng)絡(luò)(Yolo,ssd均可),多目標(biāo)追蹤也采用C++框架,這里因?yàn)槎际歉鷮?shí)際工程打交道,就直接考慮C++語言了,訓(xùn)練模型還是可以采用任意框架,最后轉(zhuǎn)成C++可以調(diào)用的模型即可。先實(shí)現(xiàn)目標(biāo)檢測(cè)網(wǎng)絡(luò),檢測(cè)的輸出結(jié)果主要是將檢測(cè)框的位置信息輸入到多目標(biāo)追蹤算法中。在實(shí)驗(yàn)室階段,看多目標(biāo)跟蹤的效果即可。實(shí)際過程中,針對(duì)多目標(biāo)跟蹤的輸出接口是有需求的,輸出的物體類別,對(duì)應(yīng)類別物體的id,以及增加個(gè)數(shù)對(duì)應(yīng)的id號(hào),持續(xù)的幀數(shù)等,這些信息都會(huì)通過lcm通信的方式傳輸給智駕融合層。
Deep-Sort視頻效果展示
追蹤結(jié)果分析:淡綠色的檢測(cè)框?yàn)闄z測(cè)的結(jié)果,紅色框?yàn)楦櫤蟮慕Y(jié)果,很明顯若檢測(cè)效果魯棒的話,對(duì)于追蹤的效果也會(huì)提升。在視頻中,遠(yuǎn)處的檢測(cè)框會(huì)不穩(wěn)定(這跟檢測(cè)的距離有關(guān)),距離靠近時(shí)還存在不太穩(wěn)定的檢測(cè)框(如右轉(zhuǎn)的紅燈:檢測(cè)的淡藍(lán)色檢測(cè)框時(shí)而存在時(shí)而消失),而代表多目標(biāo)追蹤的紅色框能夠繼續(xù)維持,說明多目標(biāo)跟蹤起了維持檢測(cè)框軌跡的作用,確保其檢測(cè)框不消失,起到了跟蹤的作用。而且基本不耗時(shí),實(shí)時(shí)性也能達(dá)到要求。
內(nèi)存占用率: 0.4%;
耗時(shí): 40fps;
準(zhǔn)確率: 基本取決于檢測(cè)效果,能起到維持檢測(cè)框的作用。
第二類算法原理介紹:
多目標(biāo)追蹤本質(zhì)上是多個(gè)目標(biāo)同時(shí)運(yùn)動(dòng)的問題,所以有提出將單目標(biāo)跟蹤器引入到多目標(biāo)追蹤的問題,為每一個(gè)目標(biāo)分配一個(gè)跟蹤器,然后間接地使用匹配算法來修正那些跟蹤失敗或新出現(xiàn)的目標(biāo)。代表性的單目標(biāo)跟蹤算法為核相關(guān)濾波算法(KCF),它于2014年提出,在精度和速度上能夠同時(shí)達(dá)到很高的水平,是當(dāng)時(shí)單目標(biāo)跟蹤最優(yōu)秀的算法之一。后來的很多單目標(biāo)跟蹤算法都是基于此做的改進(jìn),經(jīng)典的還是最好的。實(shí)際工程不需要刷榜,能快速實(shí)現(xiàn)功能,更多的針對(duì)具體問題加一些邊界條件,約束條件,使得最終結(jié)果能夠滿足實(shí)際的需求。
核相關(guān)濾波(Kernelized Correlation Filter,KCF)是相關(guān)濾波算法的一種擴(kuò)展。相關(guān)濾波是指在模板的一個(gè)鄰域內(nèi)搜索和模板響應(yīng)值最大的位置,可以視為一種模板匹配的方法,具有很高的實(shí)時(shí)性。將濾波器表示成一個(gè)權(quán)值向量,將濾波器和模板的響應(yīng)值寫作權(quán)值和特征向量的內(nèi)積:
其中w表示濾波器權(quán)重,z表示模板。求解一個(gè)最優(yōu)的濾波器,使得濾波器的權(quán)值和模板特征向量的內(nèi)積和標(biāo)準(zhǔn)響應(yīng)圖的誤差最小,可以寫作:
X表示一個(gè)循環(huán)采樣的樣本集合。在頻域中可求得上式的解為:
實(shí)際應(yīng)用過程中會(huì)為每個(gè)目標(biāo)分配一個(gè)KCF跟蹤器并采用多線程的方式來組織這些跟蹤器。同時(shí)因?yàn)閷?shí)際硬件條件的限制,不可能提供強(qiáng)大的計(jì)算力資源,會(huì)采用檢測(cè)器與跟蹤器交替進(jìn)行的跟蹤策略。
多線程的單目標(biāo)跟蹤方式
實(shí)際效果:采用多線程的單目標(biāo)跟蹤器的方法,在該離線視頻上檢測(cè)框的維持效果還是不錯(cuò)的,而且id幾乎沒有切換,很穩(wěn)定;但實(shí)車測(cè)試的時(shí)候,將其移植于嵌入式端,由于檢測(cè)的幀率不高,使得跟蹤的維持效果出現(xiàn)滯后或框飄的現(xiàn)象較為嚴(yán)重,實(shí)用性不大。
實(shí)車驗(yàn)證時(shí)嚴(yán)重的框飄現(xiàn)象
內(nèi)存占用率: 10-20%;
耗時(shí): 18-24fps(物體類別越多,速度越慢);
準(zhǔn)確率: 車速較慢時(shí),維持檢測(cè)框的效果很穩(wěn)定; 但當(dāng)車速較快時(shí),這種跟蹤方法維持檢測(cè)框效果較差,會(huì)出現(xiàn)框飄的現(xiàn)象。
第三類算法原理介紹:
這篇文章是在目標(biāo)檢測(cè)ssd的基礎(chǔ)上不斷改進(jìn)迭代的,這里引用一些論文作者的觀點(diǎn),
DAN is an end-to-end deep learning network during train phase, whose purpose is to extract the predetected objects' feature and performs pairing permutations of those features in any two frames to infer object affinities. Besides, DAN also accounts for multiple objects appearing and disappearing between video frames.
DAN網(wǎng)絡(luò)在訓(xùn)練階段是一個(gè)端到端的神經(jīng)網(wǎng)絡(luò),它的目標(biāo)是提取預(yù)先檢測(cè)到的對(duì)象特征,并在任意兩幀執(zhí)行特征的配對(duì)序列,以得到物體的相似度。另外,DAN網(wǎng)絡(luò)也能很好處理兩幀之間出現(xiàn)和消失的多目標(biāo)。
The network can be divided into two parts: feature extractor and affinity extractor. The feature extractor extracts each detected objects' features. The affinity extractor leverage those features to compute object data association matrix.
網(wǎng)絡(luò)可以分為兩部分:特征提取器和相似度提取器。特征提取器提取每個(gè)檢測(cè)對(duì)象的特征。相似度提取器利用這些特征來計(jì)算檢測(cè)對(duì)象數(shù)據(jù)關(guān)聯(lián)矩陣。
更詳細(xì)的原理分析可以參考:李元芳:Deep Affinity Network for Multiple Object Tracking
SST的檢測(cè)效果
實(shí)際效果:速度極慢,不適用于部署到嵌入式端,還是刷榜的存在,嘗試更換其backbone網(wǎng)絡(luò),加快速度。同時(shí)可以考慮將檢測(cè)的特征與追蹤所需的特征融合,最終輸出一個(gè)權(quán)重文件。
內(nèi)存占用率:15%;
耗時(shí):3fps(速度極慢);
準(zhǔn)確率:跟蹤效果還行,軌跡描繪良好。
多目標(biāo)跟蹤算法對(duì)比
審核編輯:黃飛
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4793瀏覽量
102043 -
算法
+關(guān)注
關(guān)注
23文章
4675瀏覽量
94191 -
跟蹤器
+關(guān)注
關(guān)注
0文章
132瀏覽量
20298 -
卡爾曼濾波
+關(guān)注
關(guān)注
3文章
166瀏覽量
24895
原文標(biāo)題:多目標(biāo)追蹤算法,項(xiàng)目部署原理及方案匯總
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
視頻跟蹤(目標(biāo)取差器)-基于DM8168實(shí)現(xiàn)的自動(dòng)視頻跟蹤
視頻跟蹤目標(biāo)跟蹤算法簡(jiǎn)介(上海凱視力成信息科技有限...
多目標(biāo)優(yōu)化算法有哪些
一種適用于空間觀測(cè)任務(wù)的實(shí)時(shí)多目標(biāo)識(shí)別算法分享
基于聚類融合的多目標(biāo)跟蹤算法
多傳感器多目標(biāo)跟蹤的JPDA算法

基于傳感器網(wǎng)絡(luò)的多目標(biāo)跟蹤和特征管理方法

改進(jìn)霍夫森林框架的多目標(biāo)跟蹤算法
深度學(xué)習(xí):多目標(biāo)跟蹤方向調(diào)研報(bào)告

多目標(biāo)跟蹤過程中的數(shù)據(jù)關(guān)聯(lián)技術(shù)綜述
基于卷積特征的多伯努利視頻多目標(biāo)跟蹤算法
最常見的目標(biāo)跟蹤算法
基于MobileNet的多目標(biāo)跟蹤深度學(xué)習(xí)算法

基于機(jī)器視覺的典型多目標(biāo)追蹤算法應(yīng)用實(shí)踐

評(píng)論