李俊彥,宋煥生,張朝陽,侯景嚴(yán),武非凡
長安大學(xué) 信息工程學(xué)院,西安710064
智能交通系統(tǒng)(ITS)作為現(xiàn)代交通系統(tǒng)的發(fā)展方向,綜合了通信技術(shù)、計(jì)算機(jī)技術(shù)、自動控制技術(shù)等眾多學(xué)科領(lǐng)域研究成果,著眼于保障交通安全、提高交通運(yùn)輸效率,并為交通參與者提供可靠、有效、多樣化的交通信息服務(wù)。獲取信息量豐富、準(zhǔn)確性高的交通動態(tài)信息是ITS 中的關(guān)鍵,也是進(jìn)行交通分析、預(yù)測和交通控制的重要前提[1]。在眾多交通信息來源中,視頻數(shù)據(jù)具有不間斷性、直觀性、可靠性高等特點(diǎn)。采用機(jī)器視覺方法分析交通視頻數(shù)據(jù)是采集交通領(lǐng)域動態(tài)信息的重要手段。
針對交通場景中動態(tài)信息的采集需求,要獲取車輛在當(dāng)前場景中的行駛軌跡,就需要對車輛進(jìn)行長時(shí)間的目標(biāo)跟蹤。楊劍鋒等[2]在相關(guān)濾波跟蹤框架下加入目標(biāo)遮擋置信度測量,當(dāng)判別到目標(biāo)發(fā)生遮擋時(shí),利用目標(biāo)局部信息獲取目標(biāo)最終位置,達(dá)到長時(shí)間跟蹤目標(biāo)的目的。李軼錕等[3]為提高fDSST 跟蹤算法在目標(biāo)形變、旋轉(zhuǎn)等情況下的跟蹤精度,提出基于TLD 和fDSST 的長時(shí)間目標(biāo)跟蹤算法,在目標(biāo)檢測的基礎(chǔ)上,加入學(xué)習(xí)器對跟蹤結(jié)果進(jìn)行修正和學(xué)習(xí),提高了跟蹤精度。
通過視頻分析獲取的原始車輛軌跡具有檢測結(jié)點(diǎn)框不穩(wěn)定、軌跡存在諸多跳躍、平滑性差等缺點(diǎn)。為反映車輛運(yùn)動的真實(shí)情況,需要對原始軌跡進(jìn)行軌跡優(yōu)化。道格拉斯-普克(Douglas-Peukcer)算法作為經(jīng)典的線狀要素化簡算法,被應(yīng)用于地圖軌跡優(yōu)化中,通過設(shè)定閾值,將復(fù)雜多線段分段,用直線段連線近似代替曲線。但這種方法相當(dāng)于對軌跡進(jìn)行抽稀,雖然優(yōu)化了軌跡,但減少了軌跡點(diǎn)。羅成等[4]針對GPS車輛定位數(shù)據(jù)在彎道處車輛軌跡是折線的問題,提出使用二次B樣條擬合算法,通過產(chǎn)生更多的擬合點(diǎn),使軌跡曲線更加貼切反映車輛真實(shí)行駛路線。
上述均是針對單目標(biāo)的長時(shí)間車輛跟蹤框架,本文提出利用Yolo3 檢測車輛目標(biāo),同時(shí),采用KCF 預(yù)測目標(biāo)位置,通過建立匹配代價(jià)表,關(guān)聯(lián)多目標(biāo)車輛,達(dá)到對交通場景下車輛軌跡的獲取。針對檢測框不穩(wěn)定現(xiàn)象,提出使用Savitzky-Golay 濾波器對車輛軌跡進(jìn)行優(yōu)化,提高軌跡的準(zhǔn)確性,以提供更加符合車輛在真實(shí)世界運(yùn)動狀態(tài)的軌跡特征,為獲取更加準(zhǔn)確的交通參數(shù)提供數(shù)據(jù)基礎(chǔ)。
對于交通場景中的多目標(biāo)跟蹤問題,需要根據(jù)視頻幀中車輛目標(biāo)的檢測結(jié)果,匹配當(dāng)前幀內(nèi)已有的車輛軌跡。這其中,對于新出現(xiàn)的車輛目標(biāo),要創(chuàng)建新的車輛軌跡;對于已經(jīng)離開相機(jī)視野的車輛目標(biāo),要對其軌跡進(jìn)行刪除操作。本文中利用Yolo3網(wǎng)絡(luò)對車輛目標(biāo)進(jìn)行檢測;同時(shí),針對可能出現(xiàn)的目標(biāo)檢測丟失問題,對車輛歷史軌跡通過KCF 算法,預(yù)測車輛在當(dāng)前幀的位置。檢測結(jié)果與已有軌跡的匹配采用以目標(biāo)框交疊率IOU(Intersection Over Union)為主,考慮目標(biāo)框間寬、高比等因素的匹配方法,實(shí)現(xiàn)多目標(biāo)的長時(shí)間跟蹤。車輛目標(biāo)跟蹤主體框架如圖1所示。
Yolo[5-7]實(shí)現(xiàn)了一階端到端的目標(biāo)檢測,其模型預(yù)測的核心思想[5]是:Yolo將輸入圖像劃分成S×S 個(gè)gridcell,以groundtruth 中心點(diǎn)所在的gridcell 預(yù)測該groundtruth標(biāo)注的目標(biāo)。每個(gè)grid cell 預(yù)測B 個(gè)數(shù)量的邊界框(bounding box)及對應(yīng)的置信度(confidence score)和C 個(gè)類別概率值,邊界框用x,y,w,h 表征,置信度用c表征,則最終預(yù)測值為S×S×(B×5+C)大小的張量,整個(gè)模型預(yù)測結(jié)構(gòu)如圖2[5]所示。
圖1 車輛目標(biāo)跟蹤主體框架
圖2 模型預(yù)測結(jié)構(gòu)
Yolo3[7]網(wǎng)絡(luò)在目標(biāo)分類中使用多標(biāo)簽多分類的邏輯回歸層;在目標(biāo)檢測中,增加了up down的多級預(yù)測,彌補(bǔ)了Yolo顆粒度粗,不擅長檢測小目標(biāo)的弊端,最終在小目標(biāo)、重疊遮擋物體的識別上取得了較好的效果。
KCF算法[8-9]是基于相關(guān)濾波的目標(biāo)跟蹤算法,計(jì)算速度快是KCF的一大優(yōu)勢。本文采用多尺度KCF預(yù)測算法,目標(biāo)位置預(yù)測過程如圖3所示。
圖3 KCF算法目標(biāo)位置預(yù)測過程
當(dāng)車輛目標(biāo)首次被檢測到時(shí),擴(kuò)大目標(biāo)區(qū)域,圖3中紅色框?yàn)槟繕?biāo)檢測框,藍(lán)色框?yàn)閿U(kuò)大后的特征提取區(qū)域;KCF 算法提取目標(biāo)HOG[10]特征,初始化跟蹤模型;在新一幀圖像中,以上一幀目標(biāo)位置中心點(diǎn)為中心進(jìn)行3 個(gè)尺度下的特征提取和模型檢測響應(yīng)峰值計(jì)算,取3 個(gè)峰值中最大值對應(yīng)的尺度,計(jì)算目標(biāo)新位置,圖3 中黃色框?yàn)槟繕?biāo)新的位置框;以此新位置,擴(kuò)大目標(biāo)區(qū)域后,提取特征并更新跟蹤模型。利用KCF算法可以為目標(biāo)檢測丟失和遠(yuǎn)行無法檢測到的車輛提供預(yù)測框。
設(shè)第s 幀圖像中有軌跡集T={Ti,i=1,2,…,p},和待匹配檢測結(jié)點(diǎn)集N={Nj,j=1,2,…,q} ,其中軌跡Ti={t=f,f+1,…,s},f 表示目標(biāo)首次出現(xiàn)的幀號,表示軌跡i 在第t 幀的軌跡結(jié)點(diǎn)框,其中為軌跡i 在第s 幀圖像執(zhí)行KCF 預(yù)測后的預(yù)測結(jié)點(diǎn)框,也是該軌跡當(dāng)前的末結(jié)點(diǎn)。關(guān)聯(lián)目標(biāo)框主要通過計(jì)算檢測框Nj與軌跡當(dāng)前幀預(yù)測框之間的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對當(dāng)前幀圖像進(jìn)行車輛目標(biāo)檢測,獲取檢測結(jié)點(diǎn)集Nm={Nj,j=1,2,…,w} 。濾除Nm中不在興趣區(qū)域(ROI)內(nèi)的檢測結(jié)點(diǎn);對檢測結(jié)點(diǎn)中重疊率大于閾值0.7 的多個(gè)檢測結(jié)點(diǎn),認(rèn)為是同一目標(biāo)的多個(gè)檢測結(jié)果,保留其中置信度最高的作為該目標(biāo)的檢測結(jié)點(diǎn)。經(jīng)過濾除后的檢測結(jié)點(diǎn)集為N={Νj,j=1,2,…,q},q ≤w,檢測結(jié)點(diǎn)濾除過程如圖4所示。由于Yolo3檢測返回結(jié)果為bbox_t 類型,包括位置信息(x,y,w,h)、置信度prob、類型信息obj_id等,為方便后續(xù)統(tǒng)一使用,轉(zhuǎn)換檢測結(jié)點(diǎn)為自定義的BoundingBox類型。
圖4 檢測結(jié)點(diǎn)濾除
(2)對已存在的車輛歷史軌跡進(jìn)行KCF預(yù)測,以預(yù)測結(jié)果作為車輛在當(dāng)前幀的預(yù)測結(jié)點(diǎn),轉(zhuǎn)換為Bounding-Box類型。
(3)當(dāng)前幀有檢測結(jié)點(diǎn)集N={Nj,j=1,2,…,q}和歷史軌跡集T={Ti,i=1,2,…,p},按公式(1)計(jì)算上述q 個(gè)檢測結(jié)點(diǎn)與p 個(gè)軌跡末結(jié)點(diǎn)間的mji,獲取當(dāng)前幀的IOU匹配代價(jià)表M=(mji)q×p。
(4)以檢測結(jié)點(diǎn)為循環(huán)主體,判斷檢測框是否與已有車輛軌跡匹配?;酒ヅ錀l件為:mji為行列最大值時(shí),初步認(rèn)為第j 行對應(yīng)的檢測結(jié)點(diǎn)與第i 列對應(yīng)的軌跡匹配。在匹配過程中,檢測框和車輛軌跡會出現(xiàn)以下3種情況。
①mji為行列最大值,驗(yàn)證該檢測結(jié)點(diǎn)框Nj與對應(yīng)車輛軌跡中末結(jié)點(diǎn)框的寬比例和高比例是否都在0.7~1.4 范圍內(nèi),滿足則認(rèn)為是匹配成功,以Nj替換軌跡中,重新初始化KCF 跟蹤器;否則認(rèn)為匹配失敗,目標(biāo)以KCF 預(yù)測框作為當(dāng)前幀位置,軌跡不發(fā)生變化。
②檢測結(jié)點(diǎn)Nj沒有匹配的軌跡,作為新出現(xiàn)的車輛目標(biāo),新建軌跡Tn={Nj},加入軌跡集T 。
③沒有結(jié)點(diǎn)匹配的車輛軌跡Ti,認(rèn)為檢測框丟失,同①中匹配失敗的情況,軌跡不發(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ù),對滑動窗口內(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的交通視頻車輛檢測方法在相鄰的視頻幀間檢測同一個(gè)目標(biāo),其檢測框在大小和位置上會存在抖動,這是造成車輛軌跡不平滑的關(guān)鍵因素。本文中考慮目標(biāo)框的位置關(guān)系,使用S-G濾波器對車輛軌跡點(diǎn)進(jìn)行平滑處理。
車輛在短時(shí)間內(nèi)的運(yùn)動認(rèn)為是勻速直線運(yùn)動,同時(shí)考慮到視頻幀率為25 幀/s,采用窗口大小25,1 次多項(xiàng)式平滑車輛軌跡。使用S-G 濾波器分別對車輛軌跡點(diǎn)橫、縱坐標(biāo)做關(guān)于時(shí)序的濾波處理,軌跡平滑優(yōu)化具體實(shí)現(xiàn)方法如下:
(1)給定濾波相關(guān)參數(shù)。設(shè)滑動窗口大小為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ù)對滑動窗口內(nèi)數(shù)據(jù)值進(jìn)行加權(quán)平均,計(jì)算窗口中心位置處修正值p0,保存修正后數(shù)據(jù)。
(5)移動窗口。將滑動窗口向后移一個(gè)數(shù)據(jù)位置,執(zhí)行步驟(4),直至窗口移動到數(shù)據(jù)尾部。
以上方法對軌跡橫、縱坐標(biāo)的優(yōu)化結(jié)果如圖5 所示,其中結(jié)點(diǎn)序列按結(jié)點(diǎn)獲取的時(shí)間先后排序。
文中車輛目標(biāo)檢測與跟蹤關(guān)聯(lián)算法使用C++編寫,運(yùn)行于Visual Studio 2015 平臺,用到的相關(guān)庫有計(jì)算機(jī)視覺庫OpenCV3.4 和Yolo3 動態(tài)鏈接庫;獲取車輛的歷史軌跡數(shù)據(jù)后,利用Matlab2016a 對軌跡進(jìn)行平滑優(yōu)化。
圖5 軌跡點(diǎn)橫、縱坐標(biāo)平滑結(jié)果
本文測試視頻為杭州高速公路部分路段監(jiān)控視頻,幀速率均為25幀/s,測試場景信息見表1。
表1 實(shí)驗(yàn)測試場景
本文采用Yolo3目標(biāo)檢測算法,在車輛目標(biāo)分類時(shí),將高速公路上的車輛分為卡車(truck)、客車(bus)和小車(car)三大類[15],使用LabelImage標(biāo)注數(shù)據(jù)集。按本文提出的車輛目標(biāo)檢測與預(yù)測相結(jié)合,關(guān)聯(lián)匹配目標(biāo)獲取車輛軌跡的方法對測試視頻場景中的車輛進(jìn)行跟蹤軌跡獲取,結(jié)果如圖6 所示。圖6 中紅色框代表當(dāng)前幀目標(biāo)框?yàn)闄z測結(jié)點(diǎn)框,黃色框代表目標(biāo)檢測框丟失,以預(yù)測框進(jìn)行繪制。
圖6 場景車輛跟蹤結(jié)果
車輛在真實(shí)世界中的運(yùn)動為平滑的曲線運(yùn)動。但在車輛目標(biāo)軌跡獲取的過程中,直接獲取的原始軌跡是折線狀,平滑性差,且存在諸多跳躍。這主要是目標(biāo)檢測獲取的檢測結(jié)點(diǎn)框不穩(wěn)定造成的。同時(shí),加上攝像機(jī)因?yàn)樘鞖饣蚣茉O(shè)地點(diǎn)等原因振動,使獲得的車輛軌跡跳躍更加明顯。選取3輛車輛軌跡如圖7所示。
圖7 車輛軌跡圖
圖8 軌跡優(yōu)化結(jié)果圖
圖7 中列舉了三輛車的運(yùn)動軌跡。圖7(a)、(c)中車輛軌跡存在明顯的抖動,造成這種現(xiàn)象的主要原因是因?yàn)檐囕v目標(biāo)多為truck 和bus 類型,車輛目標(biāo)大,且圖中目標(biāo)處于彎道上;圖7(b)中車輛類型是car,目標(biāo)小,且車輛呈直線運(yùn)行,所以車輛軌跡近似直線。使用S-G濾波器對上述獲取的3條軌跡進(jìn)行優(yōu)化,優(yōu)化結(jié)果如圖8所示。從圖8中可以看出,S-G濾波器對軌跡的優(yōu)化,改善了車輛軌跡抖動、不平滑的狀況。
對表1 測試場景中獲取的車輛軌跡首尾處各去除10%的軌跡數(shù)據(jù),從車輛軌跡中選取近場景處的連續(xù)25幀軌跡數(shù)據(jù),計(jì)算軌跡點(diǎn)間連線長度之和。設(shè)場景中有h 條軌跡,軌跡點(diǎn)在圖像中像素坐標(biāo)為P(u,v),軌跡長度計(jì)算見公式(8):
式中,a 表示計(jì)算軌跡點(diǎn)連線之和中的起始幀號。令l1和l2分別表示優(yōu)化前和優(yōu)化后的計(jì)算結(jié)果,表2列舉了圖7中3輛車軌跡優(yōu)化前后軌跡長度l 的計(jì)算結(jié)果。
表2 車輛軌跡優(yōu)化前后l 計(jì)算結(jié)果表
從表2中Δ 的計(jì)算結(jié)果可以看出:Δ 不為0,說明優(yōu)化軌跡與原始軌跡間確實(shí)存在差異;結(jié)合圖7與圖8,Δ值越大,車輛軌跡抖動就越嚴(yán)重,說明S-G 濾波確實(shí)起到了平滑抖動、優(yōu)化軌跡的作用。
令誤差Δ= ||l1-l2表征軌跡結(jié)點(diǎn)連線之和在優(yōu)化前后的差值,各場景中Δ 的統(tǒng)計(jì)結(jié)果見表3。
表3 測試場景中誤差Δ 統(tǒng)計(jì)信息表
為了驗(yàn)證本文中軌跡優(yōu)化對獲取交通參數(shù)精度的提高,計(jì)算軌跡上短時(shí)間內(nèi)多個(gè)連續(xù)的平均速度。車輛速度的計(jì)算需要用到攝像機(jī)的標(biāo)定信息。設(shè)圖像上一點(diǎn)的像素坐標(biāo)為P(u,v),對應(yīng)于真實(shí)世界的三維坐標(biāo)為L(XW,YW,ZW),則兩者存在以下關(guān)系[16]:
式中,d 為間隔幀數(shù),車輛平均速度的單位為km/h。標(biāo)定表1中的測試場景,令d=10,Δt=1/25=0.04 s計(jì)算車輛的平均速度,以5 次連續(xù)的車輛平均速度為例,軌跡優(yōu)化前后對比結(jié)果見表4。
表4 軌跡優(yōu)化前后車輛平均速度Vˉ對比表 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),表明對交通視頻中軌跡優(yōu)化可以提高交通動態(tài)信息獲取的準(zhǔn)確性。
交通視頻分析是獲取動態(tài)交通流參數(shù)的重要方法之一。本文介紹了一種Yolo3 目標(biāo)檢測和KCF 預(yù)測算法相結(jié)合的長時(shí)間車輛目標(biāo)軌跡獲取方法,并針對原始車輛軌跡中跳躍,折線明顯,不能精確描述車輛真實(shí)運(yùn)動狀況的問題,提出利用S-G濾波器對車輛軌跡進(jìn)行優(yōu)化,提高軌跡結(jié)點(diǎn)位置信息的準(zhǔn)確性。通過圖8中的軌跡擬合前后對比圖和表4 中車輛軌跡優(yōu)化后平均速度更為平穩(wěn)可知,S-G濾波方法在對車輛軌跡的優(yōu)化上是有效的。