周雄峰
(同濟大學道路與交通工程教育部重點實驗室 上海 201804)
交通信息是智能交通系統中的基礎和保障,獲取全面、準確、可靠、實時的交通信息對交通管理與安全、駕駛行為建模、微觀交通流分析有著至關重要的作用。交通信息的采集方式包括微波雷達、視頻、紅外和感應線圈等等[1]。在這些采集技術中,視頻圖像具有直觀性高、信息量豐富、可溯性強等特點。越來越多的研究者選擇利用圖像處理技術從視頻中提取交通數據。在這些數據中,車輛的行車軌跡全面反映了車輛的駕駛行為,通過對車輛軌跡的處理可以獲得如道路交通量、車輛速度、車頭時距等交通流微觀參數。車輛軌跡的精確提取對于分析交通行為、獲取交通流的運行狀態具有重要意義。
基于視頻對車輛軌跡進行提取需要對車輛進行檢測跟蹤。傳統的車輛檢測跟蹤方法主要分為基于運動和基于特征兩類。基于運動的方法主要通過幀差法、背景建模、光流法等手段實現。基于特征的方法主要通過設計如Haar-like、HOG、SURF等特征來檢測車輛。蔡曉禹等[2]利用基于對稱差分分塊建模的背景差分法來檢測無人機視頻中的車輛。文獻[3]為克服傳統邊緣特征檢測方法易受噪聲、背景干擾問題,提出基于多尺度邊緣融合和SURF特征匹配的車輛檢測與跟蹤方法。Xie[4]使用改進KLT光流法跟蹤車輛特征點,然后通過高斯混合模型和譜聚類對同一輛車的特征點進行聚類匹配,不匹配的軌跡將被過濾。李文輝等[5]使用一種自適應的免疫粒子濾波車輛跟蹤算法,并根據在真實場景中車輛行駛的特點,在算法的相應部分加入了自適應學習參數,保證了算法魯棒性。
近年來,隨著深度學習、計算機視覺等人工智能技術的發展,深度學習模型依靠強大的特征提取和抽象表達的能力,在目標檢測識別領域取得了很高的精度。賴見輝等[6]利用基于深度學習的YOLOv3方法,以路側視頻為輸入,建立卡爾曼濾波+匈牙利分配+透視投影變換的交通流量計數模式,實現車輛的快速和高精度追蹤。Kim等[7]使用基于人為特征的聚合通道特征(ACF)和Faster R-CNN神經網絡提取交通擁堵情況下的車輛軌跡。上述研究雖然實現了車輛的檢測和追蹤,但大多存在提取精度不高、軌跡連續性不強等局限性,無法應對復雜道路環境和惡劣天氣條件。本文提出一種新的提取車輛軌跡的方法,主要包含3個步驟,分別是車輛檢測、車輛跟蹤及軌跡后處理。第一步使用YOLOv5檢測器在視頻幀中自動檢測每個車道上感興趣區域的車輛。在獲得車輛位置之后,第二步使用DeepSORT跟蹤器實現快速而準確的跟蹤。最后一步,利用透視變換矩陣將車輛的坐標位置從像素坐標系映射到世界坐標系,然后采用局部加權回歸算法消除原始采集軌跡的異常值和鋸齒形振蕩。
YOLO[8]是一種先進的端到端目標檢測算法,可以實時、高精度地執行目標檢測。YOLO算法的主要核心思想是:將1幅圖像分成S×S個網格(grid cell),如果某個目標的中心落在這個網格中,則這個網格就負責預測這個目標框的坐標、置信度和類別概率,然后采用非極大值抑制法就可以篩選出最終的檢測框。
YOLOv5是Glenn Jocher在2020年6月提出的最新版YOLO序列算法,是目前推理速度最快、精度最高的實時目標檢測模型之一。YOLOv5算法的權重文件最小只有14 M,在Tesla P100顯卡上能實現140 FPS的快速檢測。與之前的版本不同,YOLOv5具有馬賽克數據增強和自動適應錨框的改進,在小目標檢測上取得了較好的效果。因此,本文選取YOLOv5算法作為車輛檢測器對視頻流進行逐幀檢測,只保留與車輛有關的對象如car、truck、bus、motorcycle等。圖1為利用YOLOv5算法進行車輛檢測的效果圖。

圖1 YOLOv5檢測效果圖
上一節獲得了車輛在每一幀圖像上的檢測結果,下一步工作是將不同幀間的目標進行動態地關聯,形成車輛軌跡,亦即車輛跟蹤。目標跟蹤分為單目標跟蹤(single object tracking)和多目標跟蹤(multi object tracking),由于本文需要同時提取大量通行車輛的軌跡,所以屬于多目標跟蹤。跟蹤多個目標的算法需要考慮幀中對象的相似性以及幀之間對象的相關性。多目標跟蹤的4個核心步驟為:
1) 運行目標檢測器進行檢測,獲取目標檢測框。
2) 將所有目標框中對應的目標摳出來,進行特征提取,包括表觀特征和運動特征。
3) 進行相似度計算,計算前后兩幀目標之間的匹配程度,前后屬于同一個目標其之間的距離較小,不同目標的距離較大。
4) 數據關聯,為每個對象分配目標的ID。
圖2中描述了基于檢測的車輛跟蹤的核心步驟,虛線框代表跟蹤框,實線框代表新一幀的檢測框。

圖2 多目標跟蹤核心步驟
當前主流的對象跟蹤算法是基于檢測的跟蹤策略,DeepSORT[9]也使用此策略。DeepSORT算法是經典的深度學習多目標跟蹤算法。與SORT算法一致,它也通過卡爾曼濾波預測出預測框,然后使用匈牙利算法逐幀關聯數據,再由關聯度量計算邊界框的IOU。本文利用deepSORT算法跟蹤視頻幀中的車輛。在實時目標跟蹤過程中,提取車輛的表觀特征以進行最近鄰匹配,可以在存在遮擋的情況下提高車輛跟蹤效果,同時,也大大減少了車輛ID丟失的問題。算法關鍵步驟如下。
利用現有軌跡的運動狀態和外觀特征,將每個新的檢測框與現有跟蹤器相關聯。使用代價矩陣表示每個檢測框和現有跟蹤器之間的空間和外觀相似性,它通過2個度量進行加權。第一個度量是用馬氏距離來表示第j個檢測目標和第i條軌跡之間的運動匹配程度,其計算方法見式(1)。
(1)
式中:dj為第j個檢測的狀態;yi為軌跡i在當前時刻的預測值;Si為第i條軌跡由卡爾曼濾波器預測得到的在當前時刻觀測空間的協方差矩陣。
第二個是外觀特征的距離度量。為了獲得檢測框和軌跡的外觀信息,對于每個邊界框dj,通過CNN計算其128維特征向量的外觀描述子rj,其中‖rj‖=1。對于每條軌跡,將其最近成功匹配對應的檢測框的外觀描述子保存在集合Ri中,存儲的數量通過超參數budget(默認100幀)進行限制。這個特征集合將用于下面度量外觀空間中第i條軌跡和第j條檢測之間的最小余弦距離的計算。
(2)
基于運動信息的馬氏距離對于短期預測非常有效,而對于長時間遮擋后的車輛,基于外觀信息的余弦距離可以發揮作用,因此上述的2個度量指標可以相互補充,為了建立關聯問題,使用加權平均計算最終的關聯匹配程度,超參數可用來控制2個度量指標對最終結果的影響。
ci,j=λd(1)(i,j)+(1-λ)d(2)(i,j)
(3)
當一個新的檢測成功與現有跟蹤器相關聯時,該檢測將添加到該軌跡中。如果未能成功關聯時,新的檢測將初始化為暫定軌跡。在后續該軌跡如果連續3幀成功關聯,則該軌跡將更新為已確認狀態。否則,軌跡將立即刪除。至于在每幀中未能與新檢測結果關聯的現有跟蹤器,與之關聯的代表失配幀數的計數器將加1。如果該計數器超過了一定閾值,則該軌跡也將被刪除。
為解決全局分配問題中的數據關聯,使用級聯匹配的方式,將不同的跟蹤器按照失配幀數排序,失配幀數小的先進行匹配,大的后進行匹配,這樣做的目的是使更加頻繁出現的目標車輛賦予優先匹配權,這可以緩解表觀突變或者部分遮擋導致的馬氏距離發生較大變化的問題。
本文使用YOLOv5算法作為實時檢測器,結合DeepSORT算法構建1個實時車輛檢測跟蹤模型。首先,將輸入視頻的圖像序列送入YOLOv5網絡中進行對象檢測,輸出結果包含檢測框像素坐標bbox、對象類別cls和對應的置信度conf。下一步,這些值將作為DeepSORT算法的輸入,DeepSORT將預測輸入的對象的ID,生成每個車輛目標的軌跡,輸出元素包括幀索引fram idx、目標ID,以及預測框的坐標(x,y,w,h)。組合模型預測過程見圖3。

圖3 結合YOLOv5和DeepSORT算法的車輛檢測跟蹤模型
上一節得到了車輛目標在圖像中的跟蹤框序列,下一步需要在矩形框的內部選取一個像素點作為車輛在地平面上的坐標,一般選擇矩形框的中心或者框底邊的中心。道路監控視頻視角見圖4。由射影幾何知識可知,選擇矩形框中心,則投影到地面的坐標會比真實值遠;如果選擇矩形框底邊的中心,則投影后的坐標會比真實值近,不過相比于前者,后者誤差更小,也更加穩定。因此,最好選擇矩形框底邊中心作為車輛在圖像上的像素坐標。

圖4 交通監控視頻視角下的車輛
為計算目標的真實交通參數,需要將目標車輛的像素坐標轉換成世界坐標。對于單目相機,坐標轉換需要獲取相機的內部參數和外部參數。內部參數負責像素坐標系和相機坐標系之間的轉換,包括3×3的相機矩陣和 1×4 的畸變系數。外部參數負責相機坐標系和世界坐標系之間的轉換,包含一個3×3 的旋轉矩陣和一個 1×3 的平移向量。通常標定相機內部參數需要使用棋盤標定板,通過得到內部參數再計算外部參數,步驟相對繁瑣。
現代道路監控相機一般采用標準或者長焦鏡頭,安裝精度高,拍攝的車輛離相機也較遠,因此畸變影響較小,幾乎可以忽略。假設平面上某點P,在像素坐標系和世界坐標系下的坐標分別為(u,v)和(X,Y,Z),在不考慮畸變系數情況下,從世界坐標系到像素坐標系的映射表達式見式(4)。
(4)
式中:s為尺度因子;A為內參矩陣;(r1,r2,r3)和t分別為旋轉矩陣和平移向量。由于路面近似平面,假設其Z=0,則式(4)變為
(5)
(6)
式(6)中透視變換矩陣H=A[r1r2t]可通過4組標定點進行求解。后續所有軌跡點都可以通過式(5)計算出對應的真實世界坐標。
由于車輛預測框的抖動、有風天氣下攝像機晃動、坐標轉換等步驟帶來的誤差的積累,車輛在世界坐標系下的軌跡點在時間上未必連續,可能呈現一定程度的鋸齒形狀,本文使用局部加權回歸(LOWESS)平滑算法對其進行優化。
局部加權回歸[10](LOWESS)是一種非參數回歸方法,主要思想是以一個點為中心,向前后截取一定窗口長度的局部數據,在這部分子集中用權值函數做一個加權的線性回歸。LOWESS算法具體實現步驟如下。
1) 確定一個以x0為中心的區間,計算區間中每個數據點的回歸權重,權重由如下所示的三次函數或者其他權值函數給出。從函數中可以看出,離x0越近的點權重越大,對擬合的影響也越大,反之則越小,區間外的數據點的權重為0,對擬合無影響。
(7)
2) 對區間內的點使用一次多項式進行加權線性最小二乘回歸。
3)x0處的擬合值y0就是平滑后的值,將所有平滑點連線即得到LOWESS曲線。
LOWESS平滑算法能有效避免異常值對平滑曲線的影響,同時能反映數據的總體變化規律,在數據去噪平滑處理中應用廣泛。
本文的實驗環境配置:Intel i7-9900k處理器,NVIDIA GTX 3080 10GB顯卡,軟件環境為Windows 10,CUDA 11.0,cudnn7.8.5,Python 3.7.0,opencv-python 4.4.0,pytorch 1.7.0。
為驗證本文算法的有效性,選擇不同的交通環境進行測試。測試視頻是高速公路路段的監控視頻,視頻分辨率為1 920×1 080,幀率30幀/s。各視頻的具體參數見表1。

表1 測試視頻信息
1) 對于車輛的捕獲準確度,選取多目標檢測跟蹤任務常見的指標FN、FP、IDSW、MOTA來評價算法的有效性。由于道路監控視頻的視角問題,默認檢測區為距離攝像頭150 m以內。
FN:漏檢的車輛目標數量;
FP:誤檢的車輛目標數量;
IDSW:目標ID發生跳變的總數量;
MOTA:multiple object tracking accuracy,多目標跟蹤準確率,被定義如下,式中t為幀數,GTt是圖像中第t幀中的總目標數量。
(8)
2) 對于軌跡的采集準確度,選取LCSS算法度量本文方法提取的軌跡T1與人工點選的真實軌跡T2之間的相似長度,如式(9)所示。
(9)
式中:N(Tk)、tk,N(tk)分別為軌跡Tk的長度和末尾點坐標。Head(Tk)為軌跡Tk去除末尾點后的子軌跡,ε為相似度閾值,根據經驗取10 pixel。將計算結果除以較短的軌跡長度,得到軌跡的相似度,如式(10)所示。
(10)
4.3.1車輛檢測跟蹤結果
對比人工觀測和算法自動檢測結果,3個場景視頻部分幀的測試結果見表2,視頻處理得到的部分結果見圖5。

表2 不同場景車輛跟蹤實驗結果

圖5 測試視頻實驗結果
由表2及圖5可見,在陰天和小雨這種能見度較高的環境條件下,模型對車輛的檢出率極高,漏檢、誤檢的情況很少。對于濃霧天氣,隨著能見度的大大降低,出現了一些車輛目標間隔幾幀漏檢的現象。值得注意的是,由于DeepSORT算法提取表觀特征和級聯匹配的策略,車輛目標的ID很少發生跳變,視頻場景中的IDSW數量極小。3個場景的MOTA指標都超過了90%,平均準確率達96.1%,表明本文所提出的YOLOv5-DeepSORT車輛檢測跟蹤模型在道路監控視頻上有較好的效果。
4.3.2車輛軌跡實驗結果
隨機選取2輛車,窗口大小取20,使用局部加權回歸平滑其軌跡坐標。使用LCSS算法計算自動提取軌跡和實際軌跡的相似度,結果見表3。

表3 實際軌跡與算法提取軌跡相似度對比
由表3可見,軌跡的采集準確度較高,平均準確度超過了93%。根據真實世界的軌跡坐標可以計算車輛的瞬時速度。圖6顯示了目標車輛軌跡平滑前后的結果和各自的速度變化。由圖6可見,車輛的原始軌跡呈現了鋸齒形的抖動,違反了運動學的常理。經過平滑算法的優化,軌跡點和速度變得較為平穩,更加符合真實世界的情況。

圖6 軌跡和速度曲線優化結果圖
視頻圖像是信息量最豐富的交通參數來源,利用這些交通視頻數據提取出需要的交通信息參數成為當下研究的熱點問題。本文基于深度學習算法提出了一種車輛軌跡自動采集的方法。在車輛檢測部分,使用了適應各種復雜場景的YOLOv5算法。在車輛跟蹤部分,將檢測模型與多目標跟蹤算法DeepSORT結合,緩解車輛相互遮擋帶來ID跳變的問題。在軌跡后處理階段,利用變換矩陣將圖像像素坐標轉換為真實世界坐標,并針對軌跡的鋸齒形跳動,提出利用局部加權回歸平滑算法進行優化。實驗結果表明,本文所使用的方法在高速公路監控視頻數據集上平均多目標跟蹤準確率達96.1%,軌跡采集的平均準確度超過了93%,使用的軌跡平滑算法能有效地去除抖動,能夠實現車輛軌跡的自動采集,在交通安全研究領域具有較好的應用場景。