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

圖1 車輛目標跟蹤主體框架

圖2 模型預測結構
Yolo3[7]網絡在目標分類中使用多標簽多分類的邏輯回歸層;在目標檢測中,增加了up down的多級預測,彌補了Yolo顆粒度粗,不擅長檢測小目標的弊端,最終在小目標、重疊遮擋物體的識別上取得了較好的效果。
KCF算法[8-9]是基于相關濾波的目標跟蹤算法,計算速度快是KCF的一大優勢。本文采用多尺度KCF預測算法,目標位置預測過程如圖3所示。

圖3 KCF算法目標位置預測過程
當車輛目標首次被檢測到時,擴大目標區域,圖3中紅色框為目標檢測框,藍色框為擴大后的特征提取區域;KCF 算法提取目標HOG[10]特征,初始化跟蹤模型;在新一幀圖像中,以上一幀目標位置中心點為中心進行3 個尺度下的特征提取和模型檢測響應峰值計算,取3 個峰值中最大值對應的尺度,計算目標新位置,圖3 中黃色框為目標新的位置框;以此新位置,擴大目標區域后,提取特征并更新跟蹤模型。利用KCF算法可以為目標檢測丟失和遠行無法檢測到的車輛提供預測框。
設第s 幀圖像中有軌跡集T={Ti,i=1,2,…,p},和待匹配檢測結點集N={Nj,j=1,2,…,q} ,其中軌跡Ti={t=f,f+1,…,s},f 表示目標首次出現的幀號,表示軌跡i 在第t 幀的軌跡結點框,其中為軌跡i 在第s 幀圖像執行KCF 預測后的預測結點框,也是該軌跡當前的末結點。關聯目標框主要通過計算檢測框Nj與軌跡當前幀預測框之間的IOU[11],計算公式如下:

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

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

由式(2)可知,當i=0 時,p0=b0,S-G 濾波器通過計算卷積系數,對滑動窗口內數據以加權平均的方式快速計算窗口中心點數據p(0)。
n 階多項式殘差平方和為:

擬合多項式系數在殘差平方和最小時確定。令殘差E 中各多項式系數bt的偏導為0,即:

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

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

設定如下矩陣:

則有:

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

圖5 軌跡點橫、縱坐標平滑結果
本文測試視頻為杭州高速公路部分路段監控視頻,幀速率均為25幀/s,測試場景信息見表1。

表1 實驗測試場景
本文采用Yolo3目標檢測算法,在車輛目標分類時,將高速公路上的車輛分為卡車(truck)、客車(bus)和小車(car)三大類[15],使用LabelImage標注數據集。按本文提出的車輛目標檢測與預測相結合,關聯匹配目標獲取車輛軌跡的方法對測試視頻場景中的車輛進行跟蹤軌跡獲取,結果如圖6 所示。圖6 中紅色框代表當前幀目標框為檢測結點框,黃色框代表目標檢測框丟失,以預測框進行繪制。

圖6 場景車輛跟蹤結果
車輛在真實世界中的運動為平滑的曲線運動。但在車輛目標軌跡獲取的過程中,直接獲取的原始軌跡是折線狀,平滑性差,且存在諸多跳躍。這主要是目標檢測獲取的檢測結點框不穩定造成的。同時,加上攝像機因為天氣或架設地點等原因振動,使獲得的車輛軌跡跳躍更加明顯。選取3輛車輛軌跡如圖7所示。

圖7 車輛軌跡圖

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

式中,a 表示計算軌跡點連線之和中的起始幀號。令l1和l2分別表示優化前和優化后的計算結果,表2列舉了圖7中3輛車軌跡優化前后軌跡長度l 的計算結果。

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

表3 測試場景中誤差Δ 統計信息表
為了驗證本文中軌跡優化對獲取交通參數精度的提高,計算軌跡上短時間內多個連續的平均速度。車輛速度的計算需要用到攝像機的標定信息。設圖像上一點的像素坐標為P(u,v),對應于真實世界的三維坐標為L(XW,YW,ZW),則兩者存在以下關系[16]:


式中,d 為間隔幀數,車輛平均速度的單位為km/h。標定表1中的測試場景,令d=10,Δt=1/25=0.04 s計算車輛的平均速度,以5 次連續的車輛平均速度為例,軌跡優化前后對比結果見表4。

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