任軍利, 冉崇善
(1.陜西科技大學 信息與網絡管理中心,陜西 西安 710021;2.陜西科技大學 電氣與信息工程學院,陜西 西安 710021)
近年來,隨著我國機動車保有量的不斷增加,交通擁堵、交通事故的發(fā)生頻率也不斷升高,給交通和道路安全帶來了巨大的威脅.針對上述問題,提出了基于虛擬線圈和深度卷積神經網絡(DCNN)的車流量統(tǒng)計算法.算法通過前景分析、連通域分析和基于DCNN[1]的車輛跨線行駛判決大幅度提高了車流量統(tǒng)計的準確率.準確的車流量統(tǒng)計有助于交通控制智能化,并能夠大大降低交通擁堵發(fā)生的概率.
車流量統(tǒng)計算法流程如圖1所示,該算法包含了基于虛擬線圈的前景分析模塊[2-4],基于連通域分析和DCNN的車輛跨線行駛判決模塊.針對傳統(tǒng)車流量統(tǒng)計算法前景分析精確度低的問題,該算法通過幾何信息自動將虛擬線圈劃分成9個虛擬子線圈.算法在虛擬線圈范圍內通過背景減除,利用9個虛擬子線圈進行車輛前景分析,根據虛擬線圈中子線圈的投票結果進行車輛有無的判斷.針對跨線行駛車輛容易造成重復統(tǒng)計的問題,采用了基于連通域分析和DCNN的級聯分類器對跨線行駛車輛進行識別.
三維場景的透視效應會導致視頻中的車道線互不平行,因此車道在監(jiān)控視頻下通常以梯形的方式存在,會使矩形線圈不能完整地貼合梯形車道,無法保證所收集車輛信息的完整性,從而使車流量統(tǒng)計精度降低,很容易導致漏檢現象發(fā)生.為解決線圈與路面的貼合問題,引入梯形虛擬線圈[5],使線圈可以完整地貼合車道.在前景分析中,算法累加所有虛擬子線圈的投票結果作為最終得分,通過閾值進行車輛有無的判斷.
算法在單個車道中放置一個虛擬線圈,虛擬線圈的4個頂點坐標根據不同視頻的車道位置預設定.假設視頻中共有4個車道,算法以兩個車道為例,具體如圖2所示.左側圖中虛擬線圈中沒有車輛經過,右側圖中虛擬線圈中有車輛經過.預先在配置文件中定義兩個相鄰線圈的6個頂點坐標,完成虛擬線圈定位.算法將線圈上、下底4個三等分點劃分為兩組,基于4個三等分點坐標,可以計算出每組三等分點連線的斜率,再通過斜率信息和內部頂點的高度坐標,計算出內部4個頂點的寬度坐標,從而完成虛擬線圈6個頂點坐標的定位,實現虛擬線圈定位與子線圈劃分.
在虛擬線圈定位和子線圈劃分的基礎上,算法依據攝像頭的拍攝方向初始化每一個虛擬子線圈的權值.采用非中心對稱權值將其中一側子線圈賦予中心列子線圈相同的權重,當車輛跨線行駛時,可以將其判決為左(或右)側車道有車輛通過,可避免漏檢.當攝像頭朝向右側時,中心列子線圈權值復制到右側列,反之,則為左側列.具體權值示意圖如圖3所示,左圖為中心對稱權值,中圖為非中心對稱權值(右側朝向),右圖為非中心對稱權值(左側朝向).
當兩個相鄰的虛擬線圈全被車輛前景占據時,可能會出現兩種情況,具體如圖4所示:一種是兩輛機動車各自在對應的車道上正常行駛,即使算法不進行識別,車輛數量也可以被準確統(tǒng)計;另外一種是一輛機動車跨線行駛(壓車道線行駛),如果算法不進行有效識別,程序會判斷一輛車為兩輛車,造成重復統(tǒng)計.為避免重復統(tǒng)計,采用基于連通域分析和DCNN的級聯分類器對跨線行駛車輛進行識別.
本文基于深度優(yōu)先搜索方法[6]實現連通域分析,算法具體步驟如下.首先,掃描輸入圖像,直到找到像素點B(x,y),其中B(x,y)表示坐標為(x,y)像素點的像素值:① 設定像素點(x,y)為根節(jié)點,同時賦予根節(jié)點一個標簽,然后將像素點8個鄰域中被判斷為前景的像素點坐標入棧;② 將棧頂端像素出棧,賦予像素點與根節(jié)點相同的標簽,然后將此像素點的8個鄰域中被判斷為前景的像素坐標入棧;③ 重復上步直到棧中元素全都出棧,至此算法完成了輸入圖像中的一個連通域位置定位,連通域中的像素點被賦予相同的標簽.然后改變標簽,重復上述操作直到輸入圖像完成.完成對輸入圖像的掃描后,算法得到輸入圖像中所有連通域的位置和數量.在實際應用中,算法將小范圍的連通域認定為噪聲而進行去除,噪聲通常包括行人和自行車等的前景信息.針對沒有被濾除的連通域,如果輸入圖像中的連通域個數為1,同時連通域尺寸足夠大,算法則將其判斷為一輛車在跨線行駛.如果連通域信息不滿足上述要求,可能存在以下兩種情況:一輛機動車跨線行駛,由于背景減除不徹底導致車輛前景出現缺失,甚至大范圍空洞;另一種為兩輛機動車在各自車道正常行駛.
在交通監(jiān)控視頻中,由于背景減除算法的準確性較不穩(wěn)定,通常會導致車輛前景信息的缺失,連通域分析對于缺失的前景識別效果有限,所以在基于連通域分析的車輛跨線行駛判斷后,還需對模糊區(qū)域使用DCNN分類器作為級聯分類器的第二層,進行車輛行駛跨線的判斷.本文通過一組簡單的DCNN網絡結構,該網絡結構節(jié)點數量較低,對訓練數據的需求量較小,較易實現.算法在保證網絡結構相對簡單的同時,實現良好的分類識別性能.DCNN網絡結構共有6層,每一個卷積層都與一個降采樣層相結合,完成第一輪卷積降采樣后,程序得到12個特征圖,完成第二輪卷積降采樣后,程序得到24個特征圖,最后通過全連接層完成對象特征的前景提取.算法定義虛擬線圈中跨線行駛車輛圖像作為訓練正樣本,兩輛在相鄰車道正常行駛的車輛圖像作為訓練負樣本.所有的訓練樣本均來自于實際交通監(jiān)控視頻,包括高速公路場景和市內公路場景,訓練正負樣本的數量比例相同.為了增加訓練數據對實際場景攝像頭角度的適應性,所有數據樣本都經過鏡像化處理.為避免過擬合現象,程序設定所有訓練樣本被遍歷的次數均為15次.每一次迭代過程中,程序選取40個訓練樣本作為一批進行參數更新.為驗證模型性能,程序將訓練數據隨機分成5組分別進行交叉驗證,每一次交叉驗證選取5組數據作為訓練級,一組數據作為測試集,交叉驗證結果如表1所示.從交叉驗證結果可看出,DCNN的數學模型在訓練集和測試集性能相差不大,測試精度都在90%以上,說明模型沒有產生過擬合現象,同時模型對于跨線行駛和兩輛車相鄰車道正常行駛現象具有良好的識別精度,可以用于車輛跨線行駛判斷.
表1 CNN跨線行使模型交叉驗證Tab.1 CNN cross line exercise model cross validation
為驗證本文所提出車流量統(tǒng)計算法的正確性,在實際交通監(jiān)控視頻上進行了測試驗證.
測試集包括3段高速公路監(jiān)控視頻和3段市內交通監(jiān)控視頻.在測試集中,測試視頻的分辨率普遍較低:在3段高速公路攝像頭中,視頻分辨率只有480×270;在3段市內公路視頻中,視頻分辨率為704×576.監(jiān)控攝像頭安裝在路面左側,面向路面右側拍攝,監(jiān)控攝像頭相對路面的偏移角度在15°~45°之間,測試縮略圖如圖5所示.測試數據集實際車輛數量均由人工進行計數獲取,為便于統(tǒng)計,在數據集準備中,每段測試視頻被隨機截取3~4段作為最終測試集,每一段截取視頻車流量為120輛左右.
造成錯誤計數的原因有重復計數和漏檢兩種情況.為仔細考量算法性能,綜合考慮兩種誤檢情況,引入兩個指標對算法的性能進行評測:相對準確度Pr和絕對準確度Pa.相對準確度測試視頻與算法為黑盒,不考慮重復計數和漏檢數量,只考量程序計數與實際車輛數量之間的偏差;絕對準確度綜合考慮錯誤計數情況,將重復計數和漏檢均視為誤檢,是一種更嚴格的評測指標.兩種評測指標定義為:
Pr=1-|Sp-Sa|/Sa,Pa=1-|Sm+Sr|/Sa,
式中:Sp表示算法統(tǒng)計的車流量數,Sa表示實際場景中由人工統(tǒng)計的車流量數,Sm表示漏檢的個數,Sr表示重復計數的次數.
實驗結果依照數據集名稱進行統(tǒng)計,即同一段測試視頻中截取視頻的綜合統(tǒng)計,車流量統(tǒng)計結果如表2所示.
為驗證本文采用的基于連通域分析和DCNN的跨線車輛判決分類器的性能,算法將級聯分類器去除,在相同的數據集上進行對比實驗,實驗結果如表3所示.
從表2可以看出,算法在實際路口測試取得了良好的效果,相對準確度全部超過95%,且平均值為98.05%,絕對準確度平均值也達到了88.5%,接近90%.從對比實驗結果表3可以看出,所采用的級聯分類器對跨線行駛車輛具有較強的識別性能,能夠有效降低重復計數的數量,同時保證漏檢數量與不使用級聯分類器基本相同,得以提升車流量計數的相對準確度和絕對準確度.在測試過程中同時測試了程序的耗時情況,在視頻分辨率為704×576時,整幀圖像背景減除耗時10 ms,級聯分類器識別一次耗時10 ms.由于算法在虛擬線圈區(qū)域內進行背景減除[7],而且級聯分類器只有部分視頻幀可以觸發(fā),因此算法在標清、高清數據集下都可以實現實時處理,應用性較強.
表2 車流量統(tǒng)計實驗結果Tab.2 Experimental results of vehicle flow statistics
表3 車流量統(tǒng)計對比實驗結果Tab.3 Experimental results of statistical comparison of vehicle flow
本文算法在某些情況下容易產生重復計數和漏檢兩種情況,導致重復統(tǒng)計的主要原因如下:(1) 出現虛擬線圈內跨線行駛現象.通常是一輛車進入左側虛擬線圈然后斜穿進入右側虛擬線圈,在右側虛擬線圈判斷車輛進入前離開左側虛擬線圈,使兩個虛擬線圈不能同時被觸發(fā),級聯分類器也無法被觸發(fā),造成重復統(tǒng)計.當攝像頭距路面較遠或攝像頭角度偏移較大時,類似現象較容易發(fā)生,例如在高速1和高速2兩個數據集中.(2) 多輛電動車、自行車或多個行人在同一線圈內行駛.當多輛電動車或自行車出現在同一虛擬線圈時,前景面積之和超過虛擬線圈閾值,造成虛擬線圈虛警現象的發(fā)生.在市內公路場景中,電動車、自行車在機動車道行駛的現象比較常見,觸發(fā)此類事件可能性較高.(3) 場景出現大規(guī)模的抖動,影響背景減除算法的精度,造成虛擬線圈虛警.這類現象通常由于測試集分辨率較低,場景噪聲較多,攝像頭出現抖動等造成.
導致漏檢的主要原因如下:(1) 車輛出現嚴重遮擋現象,具體如圖6所示.車輛嚴重遮擋導致被遮擋車輛前景無法完整出現在虛擬線圈中,同時被遮擋車輛前景通常被劃分成遮擋車輛的前景[8],致使虛擬線圈僅識別出一輛車的信息,造成漏檢.遮擋現象在所有測試數據集中都有出現,在實驗過程中,考慮到車輛遮擋因素的影響,道路下方離攝像頭距離較近,車輛信息比較豐富,程序在設定虛擬線圈位置時通常將其放置在道路下方,遮擋現象相對較弱.(2) 虛擬線圈范圍過大.當虛擬線圈范圍較大時,前景有部分缺失的車輛或者尺寸規(guī)格較小的車輛進行跨線行駛時,車輛前景無法觸發(fā)相鄰兩個車道中的任意一個虛擬線圈,導致車輛從虛擬線圈中穿過,造成漏檢.在路段3數據集中,虛擬線圈過大是造成漏檢的主要原因.
針對車流量統(tǒng)計中跨線行駛車輛容易造成重復統(tǒng)計的問題,提出了一種以深度卷積神經網絡技術為框架進行車流量統(tǒng)計的算法,算法通過連通域分析和DCNN的級聯分類器對跨線行駛車輛進行識別,有效提高了車流量統(tǒng)計的準確率.最后通過實驗進行了算法驗證,算法的相對準確度均值達到了98.05%,絕對準確度均值達到了88.5%,取得了較好的效果.但算法無法在夜間進行車流量統(tǒng)計,這還需在后續(xù)的工作中繼續(xù)研究.