目標(biāo)追蹤---deepsort原理講解
一、多目標(biāo)追蹤的主要步驟
獲取原始視頻幀
利用目標(biāo)檢測器對視頻幀中的目標(biāo)進(jìn)行檢測
將檢測到的目標(biāo)的框中的特征提取出來,該特征包括表觀特征(方便特征對比避免ID switch)和運(yùn)動(dòng)特征(運(yùn)動(dòng)特征方便卡爾曼濾波對其進(jìn)行預(yù)測)
計(jì)算前后兩幀目標(biāo)之前的匹配程度(利用匈牙利算法和級聯(lián)匹配),為每個(gè)追蹤到的目標(biāo)分配ID。
二、sort流程
? ? ? ? Deepsort的前身是sort算法,sort算法的核心是卡爾曼濾波算法和匈牙利算法。
? ? ? ? 卡爾曼濾波算法作用:該算法的主要作用就是當(dāng)前的一系列運(yùn)動(dòng)變量去預(yù)測下一時(shí)刻的運(yùn)動(dòng)變量,但是第一次的檢測結(jié)果用來初始化卡爾曼濾波的運(yùn)動(dòng)變量。
? ? ???匈牙利算法的作用:簡單來講就是解決分配問題,就是把一群檢測框和卡爾曼預(yù)測的框做分配,讓卡爾曼預(yù)測的框找到和自己最匹配的檢測框,達(dá)到追蹤的效果。
? ? ? ? sort工作流程如下圖所示:

Detections是通過目標(biāo)檢測到的框框。Tracks是軌跡信息。
? ? 整個(gè)算法的工作流程如下:
(1)將第一幀檢測到的結(jié)果創(chuàng)建其對應(yīng)的Tracks。將卡爾曼濾波的運(yùn)動(dòng)變量初始化,通過卡爾曼濾波預(yù)測其對應(yīng)的框框。
(2)將該幀目標(biāo)檢測的框框和上一幀通過Tracks預(yù)測的框框一一進(jìn)行IOU匹配,再通過IOU匹配的結(jié)果計(jì)算其代價(jià)矩陣(cost matrix,其計(jì)算方式是1-IOU)。
(3)將(2)中得到的所有的代價(jià)矩陣作為匈牙利算法的輸入,得到線性的匹配的結(jié)果,這時(shí)候我們得到的結(jié)果有三種,第一種是Tracks失配(Unmatched Tracks),我們直接將失配的Tracks刪除;第二種是Detections失配(Unmatched Detections),我們將這樣的Detections初始化為一個(gè)新的Tracks(new Tracks);第三種是檢測框和預(yù)測的框框配對成功,這說明我們前一幀和后一幀追蹤成功,將其對應(yīng)的Detections通過卡爾曼濾波更新其對應(yīng)的Tracks變量。
(4)反復(fù)循環(huán)(2)-(3)步驟,直到視頻幀結(jié)束。
三、Deepsort算法流程
? ? ? ?由于sort算法還是比較粗糙的追蹤算法,當(dāng)物體發(fā)生遮擋的時(shí)候,特別容易丟失自己的ID。而Deepsort算法在sort算法的基礎(chǔ)上增加了級聯(lián)匹配(Matching Cascade)和新軌跡的確認(rèn)(confirmed)。Tracks分為確認(rèn)態(tài)(confirmed),和不確認(rèn)態(tài)(unconfirmed),新產(chǎn)生的Tracks是不確認(rèn)態(tài)的;不確認(rèn)態(tài)的Tracks必須要和Detections連續(xù)匹配一定的次數(shù)(默認(rèn)是3)才可以轉(zhuǎn)化成確認(rèn)態(tài)。確認(rèn)態(tài)的Tracks必須和Detections連續(xù)失配一定次數(shù)(默認(rèn)30次),才會被刪除。
? ? ? ? Deepsort算法的工作流程如下圖所示:

整個(gè)算法的工作流程如下:
(1)將第一幀次檢測到的結(jié)果創(chuàng)建其對應(yīng)的Tracks。將卡爾曼濾波的運(yùn)動(dòng)變量初始化,通過卡爾曼濾波預(yù)測其對應(yīng)的框框。這時(shí)候的Tracks一定是unconfirmed的。
(2)將該幀目標(biāo)檢測的框框和第上一幀通過Tracks預(yù)測的框框一一進(jìn)行IOU匹配,再通過IOU匹配的結(jié)果計(jì)算其代價(jià)矩陣(cost matrix,其計(jì)算方式是1-IOU)。
(3)將(2)中得到的所有的代價(jià)矩陣作為匈牙利算法的輸入,得到線性的匹配的結(jié)果,這時(shí)候我們得到的結(jié)果有三種,第一種是Tracks失配(Unmatched Tracks),我們直接將失配的Tracks(因?yàn)檫@個(gè)Tracks是不確定態(tài)了,如果是確定態(tài)的話則要連續(xù)達(dá)到一定的次數(shù)(默認(rèn)30次)才可以刪除)刪除;第二種是Detections失配(Unmatched Detections),我們將這樣的Detections初始化為一個(gè)新的Tracks(new Tracks);第三種是檢測框和預(yù)測的框框配對成功,這說明我們前一幀和后一幀追蹤成功,將其對應(yīng)的Detections通過卡爾曼濾波更新其對應(yīng)的Tracks變量。
(4)反復(fù)循環(huán)(2)-(3)步驟,直到出現(xiàn)確認(rèn)態(tài)(confirmed)的Tracks或者視頻幀結(jié)束。
(5)通過卡爾曼濾波預(yù)測其確認(rèn)態(tài)的Tracks和不確認(rèn)態(tài)的Tracks對應(yīng)的框框。將確認(rèn)態(tài)的Tracks的框框和是Detections進(jìn)行級聯(lián)匹配(之前每次只要Tracks匹配上都會保存Detections其的外觀特征和運(yùn)動(dòng)信息,默認(rèn)保存前100幀,利用外觀特征和運(yùn)動(dòng)信息和Detections進(jìn)行級聯(lián)匹配,這么做是因?yàn)榇_認(rèn)態(tài)(confirmed)的Tracks和Detections匹配的可能性更大)。
(6)進(jìn)行級聯(lián)匹配后有三種可能的結(jié)果。第一種,Tracks匹配,這樣的Tracks通過卡爾曼濾波更新其對應(yīng)的Tracks變量。第二第三種是Detections和Tracks失配,這時(shí)將之前的不確認(rèn)狀態(tài)的Tracks和失配的Tracks一起和Unmatched Detections一一進(jìn)行IOU匹配,再通過IOU匹配的結(jié)果計(jì)算其代價(jià)矩陣(cost matrix,其計(jì)算方式是1-IOU)。
(7)將(6)中得到的所有的代價(jià)矩陣作為匈牙利算法的輸入,得到線性的匹配的結(jié)果,這時(shí)候我們得到的結(jié)果有三種,第一種是Tracks失配(Unmatched Tracks),我們直接將失配的Tracks(因?yàn)檫@個(gè)Tracks是不確定態(tài)了,如果是確定態(tài)的話則要連續(xù)達(dá)到一定的次數(shù)(默認(rèn)30次)才可以刪除)刪除;第二種是Detections失配(Unmatched Detections),我們將這樣的Detections初始化為一個(gè)新的Tracks(new Tracks);第三種是檢測框和預(yù)測的框框配對成功,這說明我們前一幀和后一幀追蹤成功,將其對應(yīng)的Detections通過卡爾曼濾波更新其對應(yīng)的Tracks變量。
(8)反復(fù)循環(huán)(5)-(7)步驟,直到視頻幀結(jié)束。
這里給大家準(zhǔn)備了一些我精心挑選的AI的學(xué)習(xí)資料。關(guān)注VX公眾H【咕泡AI】回復(fù)【333】即可領(lǐng)?。?/span>
①10G教學(xué)視頻包(附課件+代碼)
②AI人工智能:54份行業(yè)重磅報(bào)告匯總
③能寫進(jìn)簡歷的企業(yè)級項(xiàng)目實(shí)戰(zhàn)。
④100篇+深度學(xué)習(xí)論文合集
⑤人工智能必讀書籍
⑥專屬學(xué)習(xí)路徑規(guī)劃
⑦不定期大神直播,學(xué)習(xí)和困惑解答
⑧拿來就能跑通的論文復(fù)現(xiàn)代碼講解及數(shù)據(jù)集
這些資料都比較珍貴,但是對自我的職業(yè)發(fā)展價(jià)值則是無價(jià)的!
別慌,這些資料這一次全部免費(fèi)分享給大家。覺得好,就不要吝嗇你的三連哦,這樣我才有動(dòng)力持續(xù)更新哦