李俊彥,宋煥生,張朝陽,侯景嚴(yán),武非凡
長(zhǎng)安大學(xué) 信息工程學(xué)院,西安710064
智能交通系統(tǒng)(ITS)作為現(xiàn)代交通系統(tǒng)的發(fā)展方向,綜合了通信技術(shù)、計(jì)算機(jī)技術(shù)、自動(dòng)控制技術(shù)等眾多學(xué)科領(lǐng)域研究成果,著眼于保障交通安全、提高交通運(yùn)輸效率,并為交通參與者提供可靠、有效、多樣化的交通信息服務(wù)。獲取信息量豐富、準(zhǔn)確性高的交通動(dòng)態(tài)信息是ITS 中的關(guān)鍵,也是進(jìn)行交通分析、預(yù)測(cè)和交通控制的重要前提[1]。在眾多交通信息來源中,視頻數(shù)據(jù)具有不間斷性、直觀性、可靠性高等特點(diǎn)。采用機(jī)器視覺方法分析交通視頻數(shù)據(jù)是采集交通領(lǐng)域動(dòng)態(tài)信息的重要手段。
針對(duì)交通場(chǎng)景中動(dòng)態(tài)信息的采集需求,要獲取車輛在當(dāng)前場(chǎng)景中的行駛軌跡,就需要對(duì)車輛進(jìn)行長(zhǎng)時(shí)間的目標(biāo)跟蹤。楊劍鋒等[2]在相關(guān)濾波跟蹤框架下加入目標(biāo)遮擋置信度測(cè)量,當(dāng)判別到目標(biāo)發(fā)生遮擋時(shí),利用目標(biāo)局部信息獲取目標(biāo)最終位置,達(dá)到長(zhǎng)時(shí)間跟蹤目標(biāo)的目的。李軼錕等[3]為提高fDSST 跟蹤算法在目標(biāo)形變、旋轉(zhuǎn)等情況下的跟蹤精度,提出基于TLD 和fDSST 的長(zhǎng)時(shí)間目標(biāo)跟蹤算法,在目標(biāo)檢測(cè)的基礎(chǔ)上,加入學(xué)習(xí)器對(duì)跟蹤結(jié)果進(jìn)行修正和學(xué)習(xí),提高了跟蹤精度。
通過視頻分析獲取的原始車輛軌跡具有檢測(cè)結(jié)點(diǎn)框不穩(wěn)定、軌跡存在諸多跳躍、平滑性差等缺點(diǎn)。為反映車輛運(yùn)動(dòng)的真實(shí)情況,需要對(duì)原始軌跡進(jìn)行軌跡優(yōu)化。道格拉斯-普克(Douglas-Peukcer)算法作為經(jīng)典的線狀要素化簡(jiǎn)算法,被應(yīng)用于地圖軌跡優(yōu)化中,通過設(shè)定閾值,將復(fù)雜多線段分段,用直線段連線近似代替曲線。但這種方法相當(dāng)于對(duì)軌跡進(jìn)行抽稀,雖然優(yōu)化了軌跡,但減少了軌跡點(diǎn)。羅成等[4]針對(duì)GPS車輛定位數(shù)據(jù)在彎道處車輛軌跡是折線的問題,提出使用二次B樣條擬合算法,通過產(chǎn)生更多的擬合點(diǎn),使軌跡曲線更加貼切反映車輛真實(shí)行駛路線。
上述均是針對(duì)單目標(biāo)的長(zhǎng)時(shí)間車輛跟蹤框架,本文提出利用Yolo3 檢測(cè)車輛目標(biāo),同時(shí),采用KCF 預(yù)測(cè)目標(biāo)位置,通過建立匹配代價(jià)表,關(guān)聯(lián)多目標(biāo)車輛,達(dá)到對(duì)交通場(chǎng)景下車輛軌跡的獲取。針對(duì)檢測(cè)框不穩(wěn)定現(xiàn)象,提出使用Savitzky-Golay 濾波器對(duì)車輛軌跡進(jìn)行優(yōu)化,提高軌跡的準(zhǔn)確性,以提供更加符合車輛在真實(shí)世界運(yùn)動(dòng)狀態(tài)的軌跡特征,為獲取更加準(zhǔn)確的交通參數(shù)提供數(shù)據(jù)基礎(chǔ)。
對(duì)于交通場(chǎng)景中的多目標(biāo)跟蹤問題,需要根據(jù)視頻幀中車輛目標(biāo)的檢測(cè)結(jié)果,匹配當(dāng)前幀內(nèi)已有的車輛軌跡。這其中,對(duì)于新出現(xiàn)的車輛目標(biāo),要?jiǎng)?chuàng)建新的車輛軌跡;對(duì)于已經(jīng)離開相機(jī)視野的車輛目標(biāo),要對(duì)其軌跡進(jìn)行刪除操作。本文中利用Yolo3網(wǎng)絡(luò)對(duì)車輛目標(biāo)進(jìn)行檢測(cè);同時(shí),針對(duì)可能出現(xiàn)的目標(biāo)檢測(cè)丟失問題,對(duì)車輛歷史軌跡通過KCF 算法,預(yù)測(cè)車輛在當(dāng)前幀的位置。檢測(cè)結(jié)果與已有軌跡的匹配采用以目標(biāo)框交疊率IOU(Intersection Over Union)為主,考慮目標(biāo)框間寬、高比等因素的匹配方法,實(shí)現(xiàn)多目標(biāo)的長(zhǎng)時(shí)間跟蹤。車輛目標(biāo)跟蹤主體框架如圖1所示。
Yolo[5-7]實(shí)現(xiàn)了一階端到端的目標(biāo)檢測(cè),其模型預(yù)測(cè)的核心思想[5]是:Yolo將輸入圖像劃分成S×S 個(gè)gridcell,以groundtruth 中心點(diǎn)所在的gridcell 預(yù)測(cè)該groundtruth標(biāo)注的目標(biāo)。每個(gè)grid cell 預(yù)測(cè)B 個(gè)數(shù)量的邊界框(bounding box)及對(duì)應(yīng)的置信度(confidence score)和C 個(gè)類別概率值,邊界框用x,y,w,h 表征,置信度用c表征,則最終預(yù)測(cè)值為S×S×(B×5+C)大小的張量,整個(gè)模型預(yù)測(cè)結(jié)構(gòu)如圖2[5]所示。

圖1 車輛目標(biāo)跟蹤主體框架

圖2 模型預(yù)測(cè)結(jié)構(gòu)
Yolo3[7]網(wǎng)絡(luò)在目標(biāo)分類中使用多標(biāo)簽多分類的邏輯回歸層;在目標(biāo)檢測(cè)中,增加了up down的多級(jí)預(yù)測(cè),彌補(bǔ)了Yolo顆粒度粗,不擅長(zhǎng)檢測(cè)小目標(biāo)的弊端,最終在小目標(biāo)、重疊遮擋物體的識(shí)別上取得了較好的效果。
KCF算法[8-9]是基于相關(guān)濾波的目標(biāo)跟蹤算法,計(jì)算速度快是KCF的一大優(yōu)勢(shì)。本文采用多尺度KCF預(yù)測(cè)算法,目標(biāo)位置預(yù)測(cè)過程如圖3所示。

圖3 KCF算法目標(biāo)位置預(yù)測(cè)過程
當(dāng)車輛目標(biāo)首次被檢測(cè)到時(shí),擴(kuò)大目標(biāo)區(qū)域,圖3中紅色框?yàn)槟繕?biāo)檢測(cè)框,藍(lán)色框?yàn)閿U(kuò)大后的特征提取區(qū)域;KCF 算法提取目標(biāo)HOG[10]特征,初始化跟蹤模型;在新一幀圖像中,以上一幀目標(biāo)位置中心點(diǎn)為中心進(jìn)行3 個(gè)尺度下的特征提取和模型檢測(cè)響應(yīng)峰值計(jì)算,取3 個(gè)峰值中最大值對(duì)應(yīng)的尺度,計(jì)算目標(biāo)新位置,圖3 中黃色框?yàn)槟繕?biāo)新的位置框;以此新位置,擴(kuò)大目標(biāo)區(qū)域后,提取特征并更新跟蹤模型。利用KCF算法可以為目標(biāo)檢測(cè)丟失和遠(yuǎn)行無法檢測(cè)到的車輛提供預(yù)測(cè)框。
設(shè)第s 幀圖像中有軌跡集T={Ti,i=1,2,…,p},和待匹配檢測(cè)結(jié)點(diǎn)集N={Nj,j=1,2,…,q} ,其中軌跡Ti={t=f,f+1,…,s},f 表示目標(biāo)首次出現(xiàn)的幀號(hào),表示軌跡i 在第t 幀的軌跡結(jié)點(diǎn)框,其中為軌跡i 在第s 幀圖像執(zhí)行KCF 預(yù)測(cè)后的預(yù)測(cè)結(jié)點(diǎn)框,也是該軌跡當(dāng)前的末結(jié)點(diǎn)。關(guān)聯(lián)目標(biāo)框主要通過計(jì)算檢測(cè)框Nj與軌跡當(dāng)前幀預(yù)測(cè)框之間的IOU[11],計(jì)算公式如下:

式中,area()表示結(jié)點(diǎn)框的面積。分子為兩個(gè)結(jié)點(diǎn)框的交集,分母為兩個(gè)結(jié)點(diǎn)框的并集,mji的計(jì)算范圍是0到1。
交通視頻中多目標(biāo)車輛軌跡獲取的具體實(shí)現(xiàn)方法如下:
(1)使用Yolo3對(duì)當(dāng)前幀圖像進(jìn)行車輛目標(biāo)檢測(cè),獲取檢測(cè)結(jié)點(diǎn)集Nm={Nj,j=1,2,…,w} 。濾除Nm中不在興趣區(qū)域(ROI)內(nèi)的檢測(cè)結(jié)點(diǎn);對(duì)檢測(cè)結(jié)點(diǎn)中重疊率大于閾值0.7 的多個(gè)檢測(cè)結(jié)點(diǎn),認(rèn)為是同一目標(biāo)的多個(gè)檢測(cè)結(jié)果,保留其中置信度最高的作為該目標(biāo)的檢測(cè)結(jié)點(diǎn)。經(jīng)過濾除后的檢測(cè)結(jié)點(diǎn)集為N={Νj,j=1,2,…,q},q ≤w,檢測(cè)結(jié)點(diǎn)濾除過程如圖4所示。由于Yolo3檢測(cè)返回結(jié)果為bbox_t 類型,包括位置信息(x,y,w,h)、置信度prob、類型信息obj_id等,為方便后續(xù)統(tǒng)一使用,轉(zhuǎn)換檢測(cè)結(jié)點(diǎn)為自定義的BoundingBox類型。

圖4 檢測(cè)結(jié)點(diǎn)濾除
(2)對(duì)已存在的車輛歷史軌跡進(jìn)行KCF預(yù)測(cè),以預(yù)測(cè)結(jié)果作為車輛在當(dāng)前幀的預(yù)測(cè)結(jié)點(diǎn),轉(zhuǎn)換為Bounding-Box類型。
(3)當(dāng)前幀有檢測(cè)結(jié)點(diǎn)集N={Nj,j=1,2,…,q}和歷史軌跡集T={Ti,i=1,2,…,p},按公式(1)計(jì)算上述q 個(gè)檢測(cè)結(jié)點(diǎn)與p 個(gè)軌跡末結(jié)點(diǎn)間的mji,獲取當(dāng)前幀的IOU匹配代價(jià)表M=(mji)q×p。
(4)以檢測(cè)結(jié)點(diǎn)為循環(huán)主體,判斷檢測(cè)框是否與已有車輛軌跡匹配。基本匹配條件為:mji為行列最大值時(shí),初步認(rèn)為第j 行對(duì)應(yīng)的檢測(cè)結(jié)點(diǎn)與第i 列對(duì)應(yīng)的軌跡匹配。在匹配過程中,檢測(cè)框和車輛軌跡會(huì)出現(xiàn)以下3種情況。
①mji為行列最大值,驗(yàn)證該檢測(cè)結(jié)點(diǎn)框Nj與對(duì)應(yīng)車輛軌跡中末結(jié)點(diǎn)框的寬比例和高比例是否都在0.7~1.4 范圍內(nèi),滿足則認(rèn)為是匹配成功,以Nj替換軌跡中,重新初始化KCF 跟蹤器;否則認(rèn)為匹配失敗,目標(biāo)以KCF 預(yù)測(cè)框作為當(dāng)前幀位置,軌跡不發(fā)生變化。
②檢測(cè)結(jié)點(diǎn)Nj沒有匹配的軌跡,作為新出現(xiàn)的車輛目標(biāo),新建軌跡Tn={Nj},加入軌跡集T 。
③沒有結(jié)點(diǎn)匹配的車輛軌跡Ti,認(rèn)為檢測(cè)框丟失,同①中匹配失敗的情況,軌跡不發(fā)生改變。
由于車輛目標(biāo)框底邊與路面最為接近,在攝像機(jī)標(biāo)定后,選用車輛目標(biāo)結(jié)點(diǎn)框底邊中點(diǎn)P(u,v)表示車輛的位置,同時(shí)車輛軌跡的連接也采用車輛目標(biāo)框底邊中點(diǎn)連線繪制。
Savitzky-Golay 濾波器[12-13](又稱S-G 濾波器)是一種低通濾波器,其濾波系數(shù)的計(jì)算非常方便,被廣泛應(yīng)用于數(shù)據(jù)平滑去噪[14]。通過選定大小為2m+1 的窗口,在時(shí)域內(nèi)利用局部最小二乘法構(gòu)造一個(gè)n 階多項(xiàng)式平滑數(shù)據(jù)。設(shè)有一組數(shù)據(jù)x(i)(i=-m,…,m),現(xiàn)構(gòu)造n 階多項(xiàng)式(2m+1 ≥n)擬合數(shù)據(jù),其擬合公式如下:

由式(2)可知,當(dāng)i=0 時(shí),p0=b0,S-G 濾波器通過計(jì)算卷積系數(shù),對(duì)滑動(dòng)窗口內(nèi)數(shù)據(jù)以加權(quán)平均的方式快速計(jì)算窗口中心點(diǎn)數(shù)據(jù)p(0)。
n 階多項(xiàng)式殘差平方和為:

擬合多項(xiàng)式系數(shù)在殘差平方和最小時(shí)確定。令殘差E 中各多項(xiàng)式系數(shù)bt的偏導(dǎo)為0,即:

其中t=0,1,…,n,則有:

引入輔助矩陣A=(ait)(2m+1)×(n+1),ait=it,其中-m ≤i ≤m,0 ≤t ≤n,設(shè)矩陣B=ATA,則:

設(shè)定如下矩陣:

則有:

其中,H 矩陣的首行行向量為所求的卷積系數(shù),僅與n和m 有關(guān),與輸入的數(shù)據(jù)x(i)無關(guān)。
基于Yolo3的交通視頻車輛檢測(cè)方法在相鄰的視頻幀間檢測(cè)同一個(gè)目標(biāo),其檢測(cè)框在大小和位置上會(huì)存在抖動(dòng),這是造成車輛軌跡不平滑的關(guān)鍵因素。本文中考慮目標(biāo)框的位置關(guān)系,使用S-G濾波器對(duì)車輛軌跡點(diǎn)進(jìn)行平滑處理。
車輛在短時(shí)間內(nèi)的運(yùn)動(dòng)認(rèn)為是勻速直線運(yùn)動(dòng),同時(shí)考慮到視頻幀率為25 幀/s,采用窗口大小25,1 次多項(xiàng)式平滑車輛軌跡。使用S-G 濾波器分別對(duì)車輛軌跡點(diǎn)橫、縱坐標(biāo)做關(guān)于時(shí)序的濾波處理,軌跡平滑優(yōu)化具體實(shí)現(xiàn)方法如下:
(1)給定濾波相關(guān)參數(shù)。設(shè)滑動(dòng)窗口大小為25,窗口內(nèi)多項(xiàng)式擬合次數(shù)為1,即初始化m=12,n=1。
(2)計(jì)算系數(shù)矩陣H 。由公式(7)可知,系數(shù)矩陣H=(ATA)-1AT,H 的首行行向量即為卷積系數(shù)。
(3)邊緣數(shù)據(jù)處理。由于該方法截?cái)嗔藬?shù)據(jù)首尾各m 個(gè)數(shù)據(jù),因此數(shù)據(jù)兩端以端點(diǎn)值各向外擴(kuò)充m 個(gè)數(shù)據(jù)值。
(4)修正數(shù)據(jù)。以步驟(2)中計(jì)算得的卷積系數(shù)對(duì)滑動(dòng)窗口內(nèi)數(shù)據(jù)值進(jìn)行加權(quán)平均,計(jì)算窗口中心位置處修正值p0,保存修正后數(shù)據(jù)。
(5)移動(dòng)窗口。將滑動(dòng)窗口向后移一個(gè)數(shù)據(jù)位置,執(zhí)行步驟(4),直至窗口移動(dòng)到數(shù)據(jù)尾部。
以上方法對(duì)軌跡橫、縱坐標(biāo)的優(yōu)化結(jié)果如圖5 所示,其中結(jié)點(diǎn)序列按結(jié)點(diǎn)獲取的時(shí)間先后排序。
文中車輛目標(biāo)檢測(cè)與跟蹤關(guān)聯(lián)算法使用C++編寫,運(yùn)行于Visual Studio 2015 平臺(tái),用到的相關(guān)庫有計(jì)算機(jī)視覺庫OpenCV3.4 和Yolo3 動(dòng)態(tài)鏈接庫;獲取車輛的歷史軌跡數(shù)據(jù)后,利用Matlab2016a 對(duì)軌跡進(jìn)行平滑優(yōu)化。

圖5 軌跡點(diǎn)橫、縱坐標(biāo)平滑結(jié)果
本文測(cè)試視頻為杭州高速公路部分路段監(jiān)控視頻,幀速率均為25幀/s,測(cè)試場(chǎng)景信息見表1。

表1 實(shí)驗(yàn)測(cè)試場(chǎng)景
本文采用Yolo3目標(biāo)檢測(cè)算法,在車輛目標(biāo)分類時(shí),將高速公路上的車輛分為卡車(truck)、客車(bus)和小車(car)三大類[15],使用LabelImage標(biāo)注數(shù)據(jù)集。按本文提出的車輛目標(biāo)檢測(cè)與預(yù)測(cè)相結(jié)合,關(guān)聯(lián)匹配目標(biāo)獲取車輛軌跡的方法對(duì)測(cè)試視頻場(chǎng)景中的車輛進(jìn)行跟蹤軌跡獲取,結(jié)果如圖6 所示。圖6 中紅色框代表當(dāng)前幀目標(biāo)框?yàn)闄z測(cè)結(jié)點(diǎn)框,黃色框代表目標(biāo)檢測(cè)框丟失,以預(yù)測(cè)框進(jìn)行繪制。

圖6 場(chǎng)景車輛跟蹤結(jié)果
車輛在真實(shí)世界中的運(yùn)動(dòng)為平滑的曲線運(yùn)動(dòng)。但在車輛目標(biāo)軌跡獲取的過程中,直接獲取的原始軌跡是折線狀,平滑性差,且存在諸多跳躍。這主要是目標(biāo)檢測(cè)獲取的檢測(cè)結(jié)點(diǎn)框不穩(wěn)定造成的。同時(shí),加上攝像機(jī)因?yàn)樘鞖饣蚣茉O(shè)地點(diǎn)等原因振動(dòng),使獲得的車輛軌跡跳躍更加明顯。選取3輛車輛軌跡如圖7所示。

圖7 車輛軌跡圖

圖8 軌跡優(yōu)化結(jié)果圖
圖7 中列舉了三輛車的運(yùn)動(dòng)軌跡。圖7(a)、(c)中車輛軌跡存在明顯的抖動(dòng),造成這種現(xiàn)象的主要原因是因?yàn)檐囕v目標(biāo)多為truck 和bus 類型,車輛目標(biāo)大,且圖中目標(biāo)處于彎道上;圖7(b)中車輛類型是car,目標(biāo)小,且車輛呈直線運(yùn)行,所以車輛軌跡近似直線。使用S-G濾波器對(duì)上述獲取的3條軌跡進(jìn)行優(yōu)化,優(yōu)化結(jié)果如圖8所示。從圖8中可以看出,S-G濾波器對(duì)軌跡的優(yōu)化,改善了車輛軌跡抖動(dòng)、不平滑的狀況。
對(duì)表1 測(cè)試場(chǎng)景中獲取的車輛軌跡首尾處各去除10%的軌跡數(shù)據(jù),從車輛軌跡中選取近場(chǎng)景處的連續(xù)25幀軌跡數(shù)據(jù),計(jì)算軌跡點(diǎn)間連線長(zhǎng)度之和。設(shè)場(chǎng)景中有h 條軌跡,軌跡點(diǎn)在圖像中像素坐標(biāo)為P(u,v),軌跡長(zhǎng)度計(jì)算見公式(8):

式中,a 表示計(jì)算軌跡點(diǎn)連線之和中的起始幀號(hào)。令l1和l2分別表示優(yōu)化前和優(yōu)化后的計(jì)算結(jié)果,表2列舉了圖7中3輛車軌跡優(yōu)化前后軌跡長(zhǎng)度l 的計(jì)算結(jié)果。

表2 車輛軌跡優(yōu)化前后l 計(jì)算結(jié)果表
從表2中Δ 的計(jì)算結(jié)果可以看出:Δ 不為0,說明優(yōu)化軌跡與原始軌跡間確實(shí)存在差異;結(jié)合圖7與圖8,Δ值越大,車輛軌跡抖動(dòng)就越嚴(yán)重,說明S-G 濾波確實(shí)起到了平滑抖動(dòng)、優(yōu)化軌跡的作用。
令誤差Δ= ||l1-l2表征軌跡結(jié)點(diǎn)連線之和在優(yōu)化前后的差值,各場(chǎng)景中Δ 的統(tǒng)計(jì)結(jié)果見表3。

表3 測(cè)試場(chǎng)景中誤差Δ 統(tǒng)計(jì)信息表
為了驗(yàn)證本文中軌跡優(yōu)化對(duì)獲取交通參數(shù)精度的提高,計(jì)算軌跡上短時(shí)間內(nèi)多個(gè)連續(xù)的平均速度。車輛速度的計(jì)算需要用到攝像機(jī)的標(biāo)定信息。設(shè)圖像上一點(diǎn)的像素坐標(biāo)為P(u,v),對(duì)應(yīng)于真實(shí)世界的三維坐標(biāo)為L(zhǎng)(XW,YW,ZW),則兩者存在以下關(guān)系[16]:


式中,d 為間隔幀數(shù),車輛平均速度的單位為km/h。標(biāo)定表1中的測(cè)試場(chǎng)景,令d=10,Δt=1/25=0.04 s計(jì)算車輛的平均速度,以5 次連續(xù)的車輛平均速度為例,軌跡優(yōu)化前后對(duì)比結(jié)果見表4。

表4 軌跡優(yōu)化前后車輛平均速度Vˉ對(duì)比表 km/h
從表4中車輛平均速度可以看出,未經(jīng)優(yōu)化的車輛軌跡計(jì)算出的車輛平均速度在短時(shí)間內(nèi)存在較大的跳躍性,這在真實(shí)車輛運(yùn)行過程中是不可能發(fā)生的;經(jīng)過S-G濾波器優(yōu)化后的軌跡,車輛平均速度相較優(yōu)化前更為平穩(wěn),表明對(duì)交通視頻中軌跡優(yōu)化可以提高交通動(dòng)態(tài)信息獲取的準(zhǔn)確性。
交通視頻分析是獲取動(dòng)態(tài)交通流參數(shù)的重要方法之一。本文介紹了一種Yolo3 目標(biāo)檢測(cè)和KCF 預(yù)測(cè)算法相結(jié)合的長(zhǎng)時(shí)間車輛目標(biāo)軌跡獲取方法,并針對(duì)原始車輛軌跡中跳躍,折線明顯,不能精確描述車輛真實(shí)運(yùn)動(dòng)狀況的問題,提出利用S-G濾波器對(duì)車輛軌跡進(jìn)行優(yōu)化,提高軌跡結(jié)點(diǎn)位置信息的準(zhǔn)確性。通過圖8中的軌跡擬合前后對(duì)比圖和表4 中車輛軌跡優(yōu)化后平均速度更為平穩(wěn)可知,S-G濾波方法在對(duì)車輛軌跡的優(yōu)化上是有效的。