余宵雨, 宋煥生, 梁浩翔, 王瀅暄, 云 旭
(長(zhǎng)安大學(xué) 信息工程學(xué)院, 西安 710064)
我國(guó)汽車保有量以及公路總里程數(shù)逐年快速遞增,為了獲取大量準(zhǔn)確的交通信息, 將其作用于交通管理控制系統(tǒng), 實(shí)現(xiàn)交通的快速調(diào)度, 判斷甚至預(yù)測(cè)交通事件, 提高道路運(yùn)行效率、實(shí)現(xiàn)交通管理智能化.因此,加強(qiáng)交通場(chǎng)景視頻的分析技術(shù)和分析能力, 提高交通視頻中的信息采集能力是當(dāng)前智能交通系統(tǒng)建設(shè)的當(dāng)務(wù)之急.
對(duì)交通視頻中目標(biāo)車輛進(jìn)行長(zhǎng)時(shí)間的跟蹤并對(duì)行駛軌跡進(jìn)行提取分析, 就可以得到靜態(tài)和動(dòng)態(tài)的道路交通信息.目前已有的目標(biāo)跟蹤算法可以分為基于生成式模型方法和基于判別式模型方法[1].其中, 基于生成式模型方法[2]在當(dāng)前幀對(duì)目標(biāo)區(qū)域建模, 在下一幀尋找和模型相似性最強(qiáng)的區(qū)域作為目標(biāo)預(yù)測(cè)位置, 典型代表算法有: 粒子濾波算法[3]、Meanshift算法[4]和卡爾曼濾波算法[5]等.基于判別式模型方法將目標(biāo)跟蹤問(wèn)題看作分類或回歸問(wèn)題, 用分類器學(xué)習(xí)將目標(biāo)從背景中分離, 典型代表算法有: TLD算法[6]、CN算法[7]、DSST算法[8]等.
近年來(lái), 相關(guān)濾波算法由于其兼?zhèn)渌俣群途榷蔀槟繕?biāo)跟蹤領(lǐng)域的主流研究方向之一.相關(guān)濾波算法屬于判別式模型方法, 其主要思想是在圖像中對(duì)每個(gè)感興趣目標(biāo)產(chǎn)生高響應(yīng), 對(duì)背景則產(chǎn)生低響應(yīng).其中,基于最小化平方和誤差(Minimum Output Sum of Squared Error, MOSSE)算法[9]首次將相關(guān)濾波應(yīng)用于目標(biāo)跟蹤中, 采用灰度特征, 跟蹤速度高達(dá)615 fps.CSK[10]在MOSSE的基礎(chǔ)上引入了循環(huán)矩陣和核的概念, 這是核相關(guān)濾波算法(Kernel Correlation Filter,KCF)的原型, 但它用的是灰度特征, 速度達(dá)到320 fps,精度比MOSSE有很大的提升.本文所使用的KCF算法[11]通過(guò)嶺回歸計(jì)算判別函數(shù), 引入循環(huán)移位的方法作近似密集采樣, 引入核方法并加入HOG特征[12], 在保持快速計(jì)算的情況下也提高了跟蹤效果.
隨著GPU的出現(xiàn)和卷積神經(jīng)網(wǎng)絡(luò)的不斷發(fā)展與突破, 基于深度學(xué)習(xí)的目標(biāo)檢測(cè)和跟蹤算法興起并蓬勃發(fā)展.在目標(biāo)檢測(cè)方向, 2014年, Girshick等人首次將CNN引入到目標(biāo)檢測(cè)中, 提出了R-CNN[13]的目標(biāo)檢測(cè)算法.之后Girshick等人針對(duì)R-CNN中存在的問(wèn)題, 先后提出了Fast R-CNN[14]、Faster R-CNN[15]和Mask R-CNN[16].為了進(jìn)一步提高目標(biāo)檢測(cè)的速度,2015年, Joseph等人提出了YOLO算法[17], 之后經(jīng)過(guò)YOLOv2[18]、YOLOv2[19]和 YOLOv4[20]的改進(jìn), 在目標(biāo)定位以及小目標(biāo)的檢測(cè)上都取得了很好的檢測(cè)效果.在目標(biāo)跟蹤方面, Bewley等人提出的Sort[21]以及Deep Sort算法[22]旨在提升跟蹤速度.Sort算法使用卡爾曼濾波算法對(duì)目標(biāo)進(jìn)行預(yù)測(cè), 計(jì)算IoU度量目標(biāo)框間的距離, 通過(guò)匈牙利算法進(jìn)行最優(yōu)關(guān)聯(lián)匹配.Deep Sort在Sort的基礎(chǔ)上進(jìn)行改進(jìn), 使用Faster R-CNN檢測(cè)目標(biāo), 仍使用卡爾曼濾波預(yù)測(cè), 在距離度量上綜合了馬氏距離和最小余弦距離.
綜上所述, 本文提出利用YOLOv4算法檢測(cè)目標(biāo)車輛.然后, 根據(jù)不同的視頻場(chǎng)景條件和項(xiàng)目需求, 選擇不同的跟蹤算法預(yù)測(cè)下一幀的目標(biāo)位置, 建立匹配代價(jià)表, 關(guān)聯(lián)目標(biāo)車輛, 得到交通視頻場(chǎng)景下連續(xù)的目標(biāo)車輛軌跡.最后, 提取得到的車輛軌跡, 利用提出的軌跡分布算法得到車輛分布圖和交通場(chǎng)景俯視圖, 對(duì)獲取交通參數(shù)提供了真實(shí)的數(shù)據(jù)基礎(chǔ)和更加準(zhǔn)確直觀的參考意義.
對(duì)于交通場(chǎng)景下的多目標(biāo)跟蹤問(wèn)題來(lái)說(shuō), 首先需要得到交通視頻幀中車輛目標(biāo)的檢測(cè)結(jié)果, 然后再根據(jù)不同的跟蹤算法進(jìn)行各個(gè)檢測(cè)框之間的對(duì)比和匹配,以此得到交通場(chǎng)景中車輛的跟蹤軌跡.YOLOv4算法是一個(gè)快速且高精度的檢測(cè)網(wǎng)絡(luò), 因此本文采用YOLOv4算法檢測(cè)車輛目標(biāo).
YOLO算法是一種端到端的目標(biāo)檢測(cè)算法, 算法的輸入是一張待檢測(cè)的圖像, 輸出是輸入圖像中待檢測(cè)目標(biāo)的邊界框坐標(biāo)、邊界框中包含目標(biāo)的置信度及邊界框的類別概率.YOLOv4以在檢測(cè)方面更為優(yōu)秀的CSPDarknet53網(wǎng)絡(luò)為主干網(wǎng)絡(luò), 利用殘差網(wǎng)絡(luò)來(lái)進(jìn)行深層特征的提取, 最終經(jīng)過(guò)多尺寸的特征層得到待檢測(cè)目標(biāo)的類別和位置.YOLOv4的整體框架和YOLOv3是一樣的, 主要是在YOLOv3的基礎(chǔ)上在輸入端、特征提取網(wǎng)絡(luò)以及預(yù)測(cè)模塊等方面進(jìn)行了改進(jìn),提高了算法的檢測(cè)精度和處理效率.圖1為YOLOv4在本文實(shí)驗(yàn)場(chǎng)景下的結(jié)果示意圖.
圖1 YOLOv4檢測(cè)結(jié)果
對(duì)于基于視頻的多目標(biāo)跟蹤問(wèn)題來(lái)說(shuō), 在得到交通視頻幀中車輛目標(biāo)的檢測(cè)結(jié)果之后, 需要進(jìn)一步根據(jù)不同的跟蹤算法進(jìn)行當(dāng)前幀各個(gè)檢測(cè)框和已有軌跡之間的匹配, 來(lái)得到交通場(chǎng)景中車輛的完整跟蹤軌跡.多目標(biāo)車輛跟蹤主體框架如圖2所示, 具體流程如下:
圖2 多目標(biāo)車輛跟蹤主體框架
(1)使用YOLOv4目標(biāo)檢測(cè)算法, 我們可以得到輸入的每一幀圖像的車輛目標(biāo)檢測(cè)結(jié)點(diǎn)集合DecN={DecNi},i=1,2,···,p, 然后根據(jù)DecN的重疊率進(jìn)行檢測(cè)結(jié)點(diǎn)的濾除, 也就是說(shuō)認(rèn)為重疊率大于0.7的檢測(cè)結(jié)點(diǎn)是同一個(gè)目標(biāo), 本文只保留其置信度最高的一個(gè)結(jié)點(diǎn).將YOLOv4目標(biāo)檢測(cè)網(wǎng)絡(luò)輸出的DecN進(jìn)行濾除之后的檢測(cè)結(jié)點(diǎn)集合設(shè)置為DecN={DecNi},i=1,2,···,q,q≤p.
(2)在第一幀時(shí), 將步驟(1)預(yù)處理后的每個(gè)檢測(cè)框都初始化成一條軌跡; 在其后一幀時(shí), 則對(duì)已存在的歷史軌跡都用KCF算法進(jìn)行預(yù)測(cè), 得到車輛目標(biāo)在當(dāng)前幀的預(yù)測(cè)結(jié)點(diǎn).
(3)假設(shè)當(dāng)前在第k幀, 則現(xiàn)在有當(dāng)前幀的檢測(cè)結(jié)點(diǎn)集合DecN={DecNi},i=1,2,···,q和已有軌跡集合Tr={Trj},j=1,2,···,w, 對(duì)于其中的每一條軌跡Trj={},t=s,s+1,···,k,s表示此條軌跡在第s幀首次出現(xiàn),表示軌跡j在第t幀的軌跡結(jié)點(diǎn),表示歷史軌跡j進(jìn)行KCF預(yù)測(cè)后的預(yù)測(cè)結(jié)點(diǎn).本文多目標(biāo)跟蹤框架的核心步驟就是利用預(yù)測(cè)結(jié)點(diǎn)將檢測(cè)框與已有軌跡匹配起來(lái).
按式(1)計(jì)算q個(gè)當(dāng)前幀檢測(cè)結(jié)點(diǎn)和w個(gè)已有軌跡最后一個(gè)結(jié)點(diǎn)(也就是k-1幀的結(jié)點(diǎn))的交并比Cij, 以此獲得一個(gè)當(dāng)前幀k的匹配代價(jià)表C=(Cij)q×w.
其中,area(·)表示結(jié)點(diǎn)的面積.
如果Cij為 行列最大值, 則說(shuō)明此檢測(cè)結(jié)點(diǎn)DecNi和已有軌跡Trj的最后一個(gè)結(jié)點(diǎn)匹配成功.然后在軌跡Trj中刪除最后一個(gè)結(jié)點(diǎn),再將檢測(cè)結(jié)點(diǎn)DecNi添加進(jìn)去.如果檢測(cè)結(jié)點(diǎn)DecNi沒(méi)有匹配到已有軌跡, 則認(rèn)為這是一個(gè)新出現(xiàn)的目標(biāo)車輛, 將其初始化成一條新的軌跡Trn={Nj}, 并將Trn加入到軌跡集合Tr中.如果軌跡Trj沒(méi)有匹配到檢測(cè)結(jié)點(diǎn), 則認(rèn)為檢測(cè)框丟失, 此時(shí)將預(yù)測(cè)結(jié)點(diǎn)當(dāng)做此幀的軌跡結(jié)點(diǎn).在一條軌跡連續(xù)25幀的軌跡結(jié)點(diǎn)都是經(jīng)KCF預(yù)測(cè)得來(lái)的情況下,認(rèn)為此目標(biāo)車輛已經(jīng)離開(kāi)相機(jī)視野, 對(duì)其軌跡進(jìn)行刪除操作.
車輛軌跡在視頻幀中的顯示, 僅是對(duì)軌跡結(jié)點(diǎn)目標(biāo)框的下底邊中點(diǎn)進(jìn)行連線操作.
在1.2節(jié)中, 我們以KCF算法為例, 在本文提出的基于檢測(cè)結(jié)果的軌跡關(guān)聯(lián)策略中對(duì)視頻幀已存在的歷史軌跡都進(jìn)行預(yù)測(cè), 得到車輛目標(biāo)在當(dāng)前幀的預(yù)測(cè)結(jié)點(diǎn), 使用預(yù)測(cè)結(jié)點(diǎn)來(lái)關(guān)聯(lián)歷史軌跡集合和每一幀的檢測(cè)結(jié)果, 最終達(dá)到目標(biāo)車輛跟蹤的目的.KCF是在2014年提出來(lái)的一種鑒別式跟蹤方法, 其利用脊回歸訓(xùn)練一個(gè)回歸器.在新一幀圖像中, 以上一幀圖像的目標(biāo)位置進(jìn)行循環(huán)移位采樣, 然后利用此回歸器可以得到樣本塊的響應(yīng)值, 響應(yīng)值的峰值點(diǎn)所在位置就是目標(biāo)在新一幀圖像的位置.并將此位置采樣結(jié)果作為訓(xùn)練樣本再去進(jìn)一步更新回歸器.KCF無(wú)論是在跟蹤速度還是在跟蹤效果上的效果都相當(dāng)不錯(cuò), 因此被廣泛應(yīng)用于實(shí)際場(chǎng)景中.
在實(shí)驗(yàn)過(guò)程中我們發(fā)現(xiàn), 用KCF跟蹤算法做歷史軌跡的預(yù)測(cè)其實(shí)還存在一定的問(wèn)題, 比如計(jì)算量大, 對(duì)高速運(yùn)動(dòng)的目標(biāo)以及遮擋情況嚴(yán)重的目標(biāo)會(huì)比較敏感.而高速公路交通場(chǎng)景中, 道路大多為直線型, 其目標(biāo)車輛的運(yùn)動(dòng)也是基本保持勻速狀態(tài)的.因此, 我們使用基于稀疏幀檢測(cè)的多目標(biāo)跟蹤方法, 對(duì)歷史軌跡集合進(jìn)行預(yù)測(cè), 糾正1.2節(jié)中的跟蹤方法.如圖3所示, 可以根據(jù)不同的場(chǎng)景以及項(xiàng)目需求, 具體選擇不同的軌跡預(yù)測(cè)方法.
圖3 軌跡預(yù)測(cè)方法
例如在視頻整體條件比較好(天氣、光照條件等)、遮擋情況不嚴(yán)重以及目標(biāo)運(yùn)動(dòng)速度不快的情況下選擇傳統(tǒng)跟蹤方法(KCF算法); 在視頻整體情況比較差、遮擋情況嚴(yán)重以及目標(biāo)運(yùn)動(dòng)速度快的情況下選擇本文提出的基于稀疏幀檢測(cè)的跟蹤方法.
基于稀疏幀檢測(cè)的跟蹤方法流程如圖4所示, 圖4僅使用前幾幀為例來(lái)說(shuō)明具體原理, 后續(xù)幀的操作以此類推.
基于稀疏幀檢測(cè)的跟蹤方法具體過(guò)程如下:
(1)在對(duì)視頻幀使用YOLOv4目標(biāo)檢測(cè)算法之后,得到此幀圖像的車輛目標(biāo)檢測(cè)結(jié)點(diǎn)集合, 如同1.2的步驟(2), 對(duì)檢測(cè)結(jié)點(diǎn)進(jìn)行預(yù)處理.基于稀疏幀檢測(cè)的跟蹤方法本質(zhì)上是做兩次檢測(cè)計(jì)算速度, 然后根據(jù)速度跳k幀進(jìn)行跟蹤.本節(jié)以跳20幀進(jìn)行舉例, 因此本算法首先需要用當(dāng)前幀號(hào)對(duì)24進(jìn)行取余, 只選擇余數(shù)為1和5的視頻幀進(jìn)行目標(biāo)檢測(cè)操作.
(2)對(duì)第1幀(當(dāng)前幀號(hào)對(duì)24取余為1)和第5幀(當(dāng)前幀號(hào)對(duì)24取余為5)的檢測(cè)結(jié)點(diǎn)集做預(yù)處理后,如1.2的步驟(3), 對(duì)這兩幀的檢測(cè)結(jié)點(diǎn)集合利用交并比得到一個(gè)匹配代價(jià)表.將匹配上的結(jié)點(diǎn)初始化成軌跡集合tracks_old, 也就是說(shuō)沒(méi)有匹配上的結(jié)點(diǎn)就認(rèn)為目標(biāo)丟失.并且根據(jù)匹配成功的兩幀檢測(cè)結(jié)點(diǎn)的世界坐標(biāo)計(jì)算每一條軌跡的真實(shí)速度v_oldi,i代表tracks_old中第i條軌跡.
(3)具體方法實(shí)現(xiàn)如同步驟(2), 但此時(shí)操作的是第25幀(當(dāng)前幀號(hào)對(duì)24取余為1)和第29幀(當(dāng)前幀號(hào)對(duì)24取余為5), 并且此時(shí)將匹配上的結(jié)點(diǎn)初始化成軌跡集合tracks_new, 根據(jù)匹配成功的兩幀檢測(cè)結(jié)點(diǎn)的世界坐標(biāo)計(jì)算每一條軌跡的真實(shí)速度v_newj,j代表tracks_new中第j條軌跡.
(4)此時(shí)得到的是tracks_old的每一條軌跡在第5幀的速度v_oldi和tracks_new的每一條軌跡在第29幀的速度v_newj.然后根據(jù)軌跡在第5幀結(jié)點(diǎn)(tracks_old的每條軌跡末結(jié)點(diǎn))和第29幀結(jié)點(diǎn)(tracks_new的每條軌跡末結(jié)點(diǎn))的世界坐標(biāo)以及速度, 將第5幀軌跡結(jié)點(diǎn)的坐標(biāo)正向推12幀得到(x1i,y1i), 也就是得到其在第17幀的世界坐標(biāo), 如圖4中黑色圓點(diǎn); 將第29幀軌跡結(jié)點(diǎn)的坐標(biāo)反向推12幀得到 (x2j,y2j), 同樣也是得到在第17幀的世界坐標(biāo), 如圖4中白色圓點(diǎn).在理想情況下(x1i,y1i)和(x2j,y2j)是完全相等的.
圖4 基于稀疏幀檢測(cè)的跟蹤方法流程
(5)計(jì)算 (x1i,y1i)和(x2j,y2j)的歐氏距離dij, 建立匹配代價(jià)表, 歐氏距離定義如式(2).
如果dij為行列最小值則說(shuō)明tracks_old的第i條軌跡和tracks_new的第j條軌跡已匹配, 此時(shí)將tracks_new的第j條軌跡結(jié)點(diǎn)加入tracks_old的第i條軌跡結(jié)點(diǎn)集(也就是軌跡連接).如果tracks_old的某條軌跡未匹配上tracks_new的軌跡, 則認(rèn)為此目標(biāo)已出相機(jī)視野, 刪除其軌跡.如果tracks_new的某條軌跡未匹配上tracks_old的軌跡, 則認(rèn)為是新出現(xiàn)的車輛目標(biāo),將其軌跡也加入到tracks_old中.
(6)此時(shí)我們有tracks_old (保存的是第29幀圖像中的目標(biāo)軌跡)和第29幀目標(biāo)的速度, 因此清空tracks_new.再對(duì)第49幀(當(dāng)前幀號(hào)對(duì)24取余為1)和第53幀(當(dāng)前幀號(hào)對(duì)24取余為5)進(jìn)行檢測(cè)框匹配,匹配上的結(jié)點(diǎn)將其初始化成軌跡集合tracks_new.繼而使用tracks_new各條軌跡的速度和末結(jié)點(diǎn)世界坐標(biāo)進(jìn)行反向預(yù)測(cè), tracks_old各條軌跡進(jìn)行前向預(yù)測(cè), 如步驟(4); 再如步驟(5), 建立匹配代價(jià)表, 進(jìn)行軌跡連接,出界軌跡進(jìn)行刪除, 新出現(xiàn)的目標(biāo)軌跡加入進(jìn)tracks_old; 最后清空tracks_new.此后滿足步驟(1)中取余條件的各幀也依次進(jìn)行操作.
基于稀疏幀檢測(cè)的跟蹤方法在計(jì)算目標(biāo)的真實(shí)速度時(shí)所用到的世界坐標(biāo), 是相機(jī)標(biāo)定的結(jié)果, 由于相機(jī)標(biāo)定并非本文的重點(diǎn), 因此本文不多加贅述.車輛軌跡的顯示也如1.2節(jié)所述, 僅對(duì)每條軌跡的結(jié)點(diǎn)集合連線即可.
在傳統(tǒng)的智能交通系統(tǒng)中, 對(duì)視頻幀中的車輛進(jìn)行檢測(cè)和跟蹤之后, 具體檢測(cè)框及車輛目標(biāo)的軌跡顯示都在當(dāng)前視頻圖像中.但是為了更加直觀的顯示出以車輛為主的交通數(shù)據(jù)和交通信息, 全面提升交通管理部門的實(shí)時(shí)監(jiān)測(cè)、整體協(xié)調(diào)、全面布局能力, 可建立起車輛分布圖以及交通場(chǎng)景俯視圖, 從而為交通部門以及交通運(yùn)輸業(yè)提供一種更智能更直觀的方案.
本節(jié)基于單相機(jī)的檢測(cè)跟蹤系統(tǒng), 通過(guò)視頻監(jiān)控系統(tǒng)中車輛軌跡的提取, 提出了一種軌跡分布算法, 建立了車輛分布圖及交通場(chǎng)景俯視圖.主體框架如圖5所示.
圖5 軌跡分布算法主體框架
交通場(chǎng)景下的目標(biāo)軌跡分布算法具體步驟如下:
(1)假設(shè)當(dāng)前視頻在第k幀, 雖然對(duì)當(dāng)前幀整幅圖像進(jìn)行目標(biāo)檢測(cè), 但軌跡分布算法只需對(duì)感興趣區(qū)域ROI (Region Of Interest)內(nèi)的目標(biāo)車輛進(jìn)行跟蹤.因此,首先要在圖像中進(jìn)行道路塊的設(shè)定, 也就是需要沿著道路邊緣用鼠標(biāo)點(diǎn)擊選擇4個(gè)點(diǎn), 得到感興趣區(qū)域ROI, 如圖6中道路邊緣的4個(gè)綠色圓點(diǎn).
圖6 車輛分布圖模型
(2)在獲取ROI道路區(qū)塊后, 在進(jìn)行檢測(cè)跟蹤的同時(shí), 初始化車輛分布圖及交通場(chǎng)景俯視圖.首先清空之前幀的分布圖和俯視圖, 再根據(jù)ROI道路塊的大小, 重新設(shè)定車輛分布圖和交通場(chǎng)景俯視圖大小.
(3)構(gòu)建車道分布模型.車輛分布圖以圖6為例,黑色實(shí)線表示中央隔離帶; 黃色實(shí)線表示車道虛線; 白色實(shí)線表示垂直于道路方向的分割線, 把道路分割成15 m寬的道路塊.假設(shè)ROI區(qū)塊長(zhǎng)度為150 m, 則車輛分布圖有15列道路塊.交通場(chǎng)景俯視圖以圖7為例,兩條黑色實(shí)線表示中央隔離帶區(qū)域, 黃色實(shí)線表示車道虛線.圖6和圖7中均用1、2、3、4代表一一對(duì)應(yīng)的車道一、車道二、車道三、車道四, 也就是說(shuō), 無(wú)論視頻場(chǎng)景以及相機(jī)架設(shè)位置如何變化, 視頻圖像中ROI道路區(qū)塊的左下角點(diǎn)始終對(duì)應(yīng)車輛分布圖和交通場(chǎng)景俯視圖的左上角點(diǎn).
圖7 交通場(chǎng)景俯視圖模型
(4)如圖4所示, 此時(shí)第k幀圖像的目標(biāo)檢測(cè)和ROI內(nèi)目標(biāo)跟蹤也已完成.得到當(dāng)前幀在ROI道路區(qū)塊內(nèi)所有目標(biāo)車輛的跟蹤軌跡集, 此時(shí)用每條軌跡末結(jié)點(diǎn)的位置, 也就是當(dāng)前幀檢測(cè)結(jié)點(diǎn)的位置繪制車輛分布圖; 用軌跡結(jié)點(diǎn)集繪制交通場(chǎng)景俯視圖.
1)要繪制車輛分布圖, 首先計(jì)算當(dāng)前每條軌跡末結(jié)點(diǎn)距ROI左下角點(diǎn)x軸方向的真實(shí)世界距離ΔX, 及距ROI左下角點(diǎn)y軸方向的真實(shí)世界距離ΔY.如圖6所示,i為垂直于道路方向的索引,j為沿車道方向的索引, 車輛分布圖左上角道路塊的i和j都為0.i等于ΔX除以單個(gè)道路塊真實(shí)高度(垂直于道路方向, 根據(jù)道路實(shí)際情況制定),j等于ΔY除以單個(gè)道路塊真實(shí)寬度(沿道路方向的15 m);i、j從0開(kāi)始, 所以向下取整.此時(shí), 車輛分布圖中索引為i、j的道路塊為此幀的車輛位置.
2)繪制交通場(chǎng)景俯視圖, 只需計(jì)算出每條軌跡結(jié)點(diǎn)在俯視圖圖像坐標(biāo)系的坐標(biāo), 然后進(jìn)行連線顯示即可.假設(shè)當(dāng)前幀第i條軌跡的第k個(gè)結(jié)點(diǎn)的圖像坐標(biāo)為(xik,yik).以圖7為例, 需計(jì)算此節(jié)點(diǎn)距ROI左下角點(diǎn)的y軸方向的真實(shí)世界距離ΔY, 以及此結(jié)點(diǎn)距ROI左下角點(diǎn)x軸方向的真實(shí)世界距離ΔX.
由于原圖像也就是ROI使用的是相機(jī)坐標(biāo)系, 相機(jī)架設(shè)位置即原點(diǎn)位置, 則圖7中道路左下角即為坐標(biāo)系原點(diǎn).交通場(chǎng)景俯視圖使用圖像坐標(biāo)系, 圖像左上角為原點(diǎn)位置.所以如式(3)所示, 需計(jì)算出ROI區(qū)塊的比例系數(shù)rateX、rateY(單位: 像素/米).
其中,pw、ph表示ROI道路塊的像素寬度和高度;mw、mh表示ROI道路塊的真實(shí)世界寬度和高度.
如圖7所示, 圖像坐標(biāo)系中, 沿道路方向的是x軸;相機(jī)坐標(biāo)系中, 沿道路方向的是y軸.所以結(jié)點(diǎn)的圖像坐標(biāo)xik等于 ΔY和rateY的乘積,yik等 于 ΔX和rateX的乘積.
本實(shí)驗(yàn)的硬件支持是Intel(R) Core(TM) i7-8700型號(hào)的CPU和NVIDIA GTX2080Ti顯卡支持的計(jì)算機(jī).本文的車輛目標(biāo)檢測(cè)跟蹤算法及分布算法都使用C++編寫, 運(yùn)行于Qt 5.10.1平臺(tái), 輔助環(huán)境為CUDA v10.0, OpenCV 3.4.0和YOLOv4動(dòng)態(tài)鏈接庫(kù).
本文測(cè)試視頻為隧道和高速公路部分路段監(jiān)控視頻, 充分考慮了視頻場(chǎng)景條件優(yōu)秀及一般的交通情況,視頻幀率均為25 fps, 每段視頻時(shí)長(zhǎng)均為30 min.具體實(shí)驗(yàn)場(chǎng)景信息見(jiàn)表1.
表1 實(shí)驗(yàn)測(cè)試場(chǎng)景
本文使用YOLOv4目標(biāo)檢測(cè)算法, 檢測(cè)3種目標(biāo)車輛類型, 分別為小車(car)、卡車(truck)和客車(bus), 使用LabelImage完成數(shù)據(jù)集的標(biāo)注.如1.3節(jié)圖3所示, 對(duì)不同的場(chǎng)景, 具體選擇不同的軌跡預(yù)測(cè)方法.本節(jié)設(shè)置場(chǎng)景1為高速公路場(chǎng)景(白天), 視頻光線明亮、相機(jī)視角高且車輛目標(biāo)較少、并無(wú)明顯遮擋,因此選擇KCF跟蹤算法.場(chǎng)景2為隧道場(chǎng)景, 隧道場(chǎng)景光線較暗、遮擋情況較為嚴(yán)重、相機(jī)視角低導(dǎo)致車輛目標(biāo)移動(dòng)速度也很快, 因此選擇基于稀疏幀檢測(cè)的跟蹤方法.車輛目標(biāo)跟蹤結(jié)果、車輛分布圖和交通場(chǎng)景俯視圖結(jié)果均如圖8所示.
圖8 交通場(chǎng)景目標(biāo)跟蹤及軌跡分布結(jié)果
需注意, 對(duì)于不同場(chǎng)景中道路的實(shí)際情況, 軌跡分布算法如第2節(jié)所示不變, 僅是在構(gòu)建車道分布模型時(shí)根據(jù)實(shí)際道路情況設(shè)置車道線即可.圖像中的綠色圓點(diǎn)表示感興趣區(qū)域ROI, 僅對(duì)ROI道路區(qū)塊內(nèi)的車輛目標(biāo)做軌跡跟蹤以及軌跡分布處理.
為進(jìn)一步評(píng)價(jià)算法的性能, 本實(shí)驗(yàn)使用本文所提出的基于稀疏幀檢測(cè)的跟蹤方法和1.2節(jié)中結(jié)合軌跡關(guān)聯(lián)策略的KCF跟蹤方法在各種條件視頻場(chǎng)景中進(jìn)行測(cè)試, 并與常用的Sort和Deep Sort兩種算法進(jìn)行對(duì)比實(shí)驗(yàn).結(jié)果如表2、表3、表4所示, 其中表2為各跟蹤算法在場(chǎng)景條件優(yōu)秀情況下的測(cè)試結(jié)果, 表3及表4為各跟蹤算法在場(chǎng)景條件一般情況下的測(cè)試結(jié)果.
表2 高速公路(白天)場(chǎng)景中各算法測(cè)試結(jié)果
表3 隧道場(chǎng)景中各算法測(cè)試結(jié)果
表4 高速公路(夜晚)場(chǎng)景中各算法測(cè)試結(jié)果
本文使用常見(jiàn)的多目標(biāo)跟蹤準(zhǔn)確度(Multi-Object Tracking Accuracy,MOTA)與多目標(biāo)跟蹤精確度(Multi-Object Tracking Precision,MOTP)來(lái)對(duì)各不同跟蹤算法進(jìn)行評(píng)價(jià).定義如下:
其中,mt,fpt,mmet分別表示在視頻第t幀圖像時(shí)漏檢、誤檢以及錯(cuò)誤關(guān)聯(lián)匹配的目標(biāo)數(shù)量,gt表示在第t幀圖像真實(shí)標(biāo)注的目標(biāo)數(shù)量.
其中,表示第i個(gè)目標(biāo)匹配成功時(shí)候的檢測(cè)目標(biāo)框與跟蹤算法預(yù)測(cè)的目標(biāo)框的交并比,ct表示在視頻第t幀圖像時(shí)成功匹配上的目標(biāo)數(shù)量.
測(cè)試結(jié)果中的速度指的是檢測(cè)加跟蹤的速度, 在實(shí)驗(yàn)中使用視頻總幀數(shù)除以總時(shí)間的方法計(jì)算速度.由于檢測(cè)器和跟蹤方法的影響, 若只對(duì)稀疏幀進(jìn)行檢測(cè)跟蹤, 速度會(huì)大大減少.通過(guò)上述評(píng)價(jià)指標(biāo), 可以驗(yàn)證反映多目標(biāo)跟蹤方法的綜合性能, 并評(píng)估多目標(biāo)跟蹤方法的穩(wěn)定性與精度.
在表2、表3及表4中, 由于場(chǎng)景條件及場(chǎng)景復(fù)雜度的差別, 為提升跟蹤正確率, 基于稀疏幀檢測(cè)的跟蹤方法具體跳幀數(shù)量根據(jù)場(chǎng)景決定.高速公路(白天)視頻條件較好, 因此選擇跳20幀; 隧道視頻條件較差, 選擇跳10幀; 高速公路(夜晚)視頻光線十分差且車輛遠(yuǎn)光燈近光燈影響較為嚴(yán)重, 但車輛目標(biāo)并不密集, 因此選擇跳15幀.
由表2、表3及表4可以得出, 在不同的實(shí)驗(yàn)場(chǎng)景條件下, 本文所提出的基于稀疏幀檢測(cè)的跟蹤方法, 與結(jié)合目標(biāo)檢測(cè)的KCF+IOU改進(jìn)方法、Sort和Deep Sort算法進(jìn)行對(duì)比, 本文基于稀疏幀檢測(cè)的跟蹤方法以犧牲少量精確度和準(zhǔn)確度為代價(jià)換來(lái)了更優(yōu)秀的跟蹤實(shí)時(shí)性, 處理速度大幅度提升.
在本文定義的優(yōu)秀的場(chǎng)景條件下, 基于稀疏幀檢測(cè)的跟蹤方法對(duì)比KCF算法和Deep Sort算法, 跟蹤準(zhǔn)確度和精確度略有下降, 跟蹤速度大大提升; 本文方法對(duì)比Sort算法, 不管是在跟蹤準(zhǔn)確度和精確度, 還是在速度方面都有一定程度的提升.在本文定義的一般的場(chǎng)景條件下, 用基于稀疏幀檢測(cè)的跟蹤方法對(duì)比對(duì)比KCF算法和Sort算法, 在跟蹤速度提升的同時(shí), 準(zhǔn)確度和精確度也有一定提升; 本文方法對(duì)比Deep Sort算法, 跟蹤準(zhǔn)確度和精確度略有下降, 速度有明顯提升.因此, 本文在表2、表3和表4中, 將本文算法分別和上述算法進(jìn)行了比較.從而可根據(jù)現(xiàn)實(shí)的場(chǎng)景條件以及實(shí)驗(yàn)需求, 平衡跟蹤準(zhǔn)確度、跟蹤精確度和速度選擇用何種跟蹤方法進(jìn)行軌跡預(yù)測(cè).
由于跟蹤準(zhǔn)確度和精確度在一定程度上依賴于檢測(cè)精度.隧道和高速公路(夜晚)視頻由于場(chǎng)景條件限制, 導(dǎo)致車輛目標(biāo)的特征并不明顯, 因此導(dǎo)致檢測(cè)精度有一定的下降.盡管如此, 基于稀疏幀檢測(cè)的跟蹤方法在場(chǎng)景條件一般的視頻仍然取得了較為不錯(cuò)的跟蹤結(jié)果, 因此本文所提出的基于稀疏幀檢測(cè)的跟蹤方法可以滿足場(chǎng)景條件一般情況下目標(biāo)車輛的檢測(cè)跟蹤, 同時(shí)速度也有很大的提升, 則進(jìn)一步可以將本文算法推廣至多個(gè)相機(jī)并行處理的情況, 增強(qiáng)了本文算法的實(shí)用性.
本文提出了一種交通場(chǎng)景下的多目標(biāo)車輛跟蹤及實(shí)時(shí)軌跡分布方法.首先, 對(duì)真實(shí)場(chǎng)景交通視頻使用YOLOv4目標(biāo)檢測(cè)算法, 獲得車輛目標(biāo)在每一幀的位置、類別以及置信度, 并對(duì)目標(biāo)檢測(cè)框進(jìn)行濾除.然后根據(jù)具體的視頻場(chǎng)景條件以及項(xiàng)目需求進(jìn)行判斷, 選擇不同的軌跡預(yù)測(cè)方法把不同幀的檢測(cè)框關(guān)聯(lián)成連續(xù)穩(wěn)定的軌跡.最后提取交通視頻中車輛目標(biāo)的軌跡, 通過(guò)車輛分布圖以及交通場(chǎng)景俯視圖直觀清楚地將顯示出來(lái).本文針對(duì)多種視頻場(chǎng)景條件進(jìn)行實(shí)驗(yàn), 實(shí)驗(yàn)結(jié)果表明, 本文的跟蹤算法在各種交通視頻場(chǎng)景條件下都具有精確的目標(biāo)跟蹤正確率, 并且速度基本滿足實(shí)時(shí)處理的需要.綜上所述, 本文對(duì)實(shí)際交通場(chǎng)景下的車輛目標(biāo)檢測(cè)跟蹤具有重要參考意義.