張子恒,肖 建,王新宇,章佳琪,許 杰
(南京郵電大學 電子與光學工程學院、微電子學院,江蘇 南京 210003)
近年來,國內汽車保有量持續快速增長,對城市交通運轉帶來極大壓力,各類交通事故頻發。為保證道路交通安全,各地交通管理部門派出警力處理機動車道路違章行為[1]。然而,由于交通警力資源的有限性,需要利用現代化技術研究智能交通違章檢測系統,節省警力資源,高效檢測違章[2]。
目前常見的路口交通違章行為檢測技術可分為埋設線圈法和虛擬線圈法。埋設線圈法安裝繁瑣且維護成本高,已逐漸被虛擬線圈法代替[3]。虛擬線圈法指基于圖像處理的違章檢測算法,已廣泛應用于電子警察系統,此類方法檢測準確率高,檢測類別多,且維護成本低[4]。蘇菠等人提出了通過三幀差分法和卡爾曼濾波器預測跟蹤車輛狀態[5]。黃丹等人提出了改進的背景差分算法,結合CAMShift算法跟蹤車輛[6]。徐揚等人提出了一種基于分塊和鄰域信息的背景更新方法,結合超像素分割和陰影檢測算法跟蹤目標車輛[7]。此類算法在復雜場景下的檢測精度不穩定,不具有較強的魯棒性。
隨著人工智能的發展,將深度學習算法用于車輛違章檢測系統,可解決多目標跟蹤精度不佳、違章檢測精度不佳的問題,具有較高的研究應用價值[8]。付世達等人提出結合SSD和車道信息的雙通道卷積神經網絡檢測車輛[9]。鄭凱等人提出結合YOLO和幀間差分法檢測車輛及其遺留物,實現機動車不禮讓行人檢測[10]。但基于深度學習的檢測算法存在計算量較大,無法應用于嵌入式設備的問題。
為解決上述問題,文中提出了一種基于MobileNet_SSD的路口交通違章檢測系統。以MobileNet_SSD網絡檢測路口車輛,以幀間歐氏距離算法追蹤車輛軌跡,結合違章行為判定策略,實現5種機動車違章行為檢測及取證。系統實時統計路口遵章率,上報交管中心增派警力,實現數據指導勤務功能。在EAIDK-610開發平臺下,車輛檢測mAP約為83.18%,違章檢測準確率97%,系統運行速度8.31 FPS。實驗結果表明,系統不僅提升了在嵌入式設備上的檢測速度,同時對復雜場景的檢測具有較好的魯棒性。
SSD是Liu Wei等人提出的一種one-stage目標檢測算法,在檢測速度和準確率上均優于傳統檢測算法[11]。SSD以VGG-16為基礎提取圖像特征,額外添加6個不同尺度的卷積層,分別進行多尺度分類和目標框回歸。同時設置不同尺寸的先驗框,提高了小尺寸目標的識別準確率,SSD的網絡結構如圖1所示。

圖1 SSD網絡結構
SSD算法結合了YOLO的回歸思想和Fast R-CNN的候選框機制,有效提升了目標識別精度和效率[9]。但仍無法在嵌入式平臺下實時運行。針對這一問題,采用MobileNet網絡結構降低特征提取計算量和網絡參數量。
MobileNet是一種小巧而高效的CNN模型,優點在于提出了深度可分離卷積,降低了計算量和參數量[12]。深度可分離卷積包括深度卷積(depthwise convolution)和點卷積(pointwise convolution),先對不同輸入通道進行深度卷積,然后采用1*1點卷積進行結合[13]。在精度損失較小的情況下,成倍減少了計算量和模型參數量。
假設輸入大小為(Hin,Win,Cin)的特征圖,經卷積運算后,輸出大小為(Hout,Wout,Cout)的特征圖,卷積核大小為(DK,DK),如圖2所示。
標準卷積計算量MACstd和深度可分離卷積計算量MACdepth分別可表示為:

(1)

Cin*Cout*Hout*Wout
(2)
通常卷積輸出通道數Cout較大,因此1/Cout可近似為零。標準卷積和深度可分離卷積計算量之比可表示為:

圖2 卷積方式對比
(3)
根據式(3)所示,若卷積核DK等于3,采用深度可分離卷積可降低大約9倍的計算量,因此MobileNet有效提升了檢測效率。
考慮到進一步減少計算量和參數量,MobileNet引入了寬度超參數α和分辨率超參數ρ,分別按比例減少通道數和特征圖尺寸[13]。依次降低運算量和參數量,在精度損失較小的情況下,得到的最終計算量MACm為:
MACm=αCin*DK*DK*ρHout*ρWout+
αCin*αCout*ρHout*ρWout
(4)
綜上所述,為提升檢測效率,采用MobileNet_SSD作為目標檢測算法。MobileNet_SSD在SSD的基礎上,將特征提取部分由VGG-16替換為MobileNet Conv0-Conv13,降低了計算量和模型參數量[14]。網絡結構如圖3所示。

圖3 MobileNet_SSD網絡結構示意圖
在MobileNet Conv0-Conv13中,采用深度可分離卷積進行卷積運算,其他網絡層仍采用標準卷積。將Conv11、Conv13、Conv14_2、Conv15_2、Conv16_2和Conv17_2層作為6個多尺度特征,進行多尺度候選框回歸。MobileNet_SSD算法降低了少量精度,但提升了系統運行速度,可在嵌入式設備上實時運行。
車輛追蹤算法,就是捕獲監控視頻范圍內車輛的行駛軌跡,為違章行為的判定提供依據[15]。常見的車輛跟蹤算法受陰影、遮擋和交通擁堵等因素限制,適用場景單一,不具備魯棒性[16]。

2.2.1 圖像尺度不一致性
路口交通監控設備通常采用固定支撐架與支撐梁的方式安裝在道路上方,通過攝像頭內置處理器實現違章行為的判定,并以千兆以太網回傳數據管理中心。已知有效監控畫面的縱向視場范圍為θ1~θ2,監控設備高度為Lcam,數據獲取方式如圖4所示。可知數據采集時與水平方向夾角固定,導致圖像存在尺度不一致性。

圖4 數據獲取場景示意圖
圖像的尺度不一致性是指在有效監控畫面的縱向視場范圍[θ1,θ2]內,實際場景在圖像上的映射比例是不均勻的。即若車輛以相同速度行駛,每輛車在圖像上的速度vpixel不相等,由尺度誤差導致閾值分割的標準不統一。計算尺度系數αi,恢復統一的圖像映射比例,保證車輛追蹤算法適用于不同比例的目標。已知有效監控畫面縱向視場范圍為[θ1,θ2],且θ1,θ2均小于π/2、設備高度為Lcam、圖像縱向分辨率himg,當前車輛在圖像的(wi,hi)處,尺度系數αi可表示為:
(5)
2.2.2 幀間歐氏距離
由于車輛行駛具有連續性,且路口車速是穩定的,假設行駛車輛在相鄰數幀間的位移較小,即同一輛車在相鄰時刻的距離最近,與其他車較遠。根據此假設,由上節所述的車輛檢測算法得到車輛位置,計算每輛車的中心點坐標,統一到相機坐標系中,作為軌跡跟蹤的事實依據。歐幾里得度量描述了兩點間的直線距離,直觀地顯示了目標間的關系[17]。因此車輛在視頻幀中的變化關系可以由歐氏距離表示,如圖5所示。

圖5 車輛追蹤算法效果示意圖

(6)
2.2.3 車輛軌跡預測
城市路口交通情況復雜多變,車流量日益增多且路口交通擁擠,導致監控畫面中車輛距離過近,發生誤追蹤現象,降低了車輛追蹤算法準確率。計算方向系數βi預測行車方向,改善擁堵情況下不同車輛的軌跡跟蹤效果,提升算法的魯棒性,如圖5所示。

(7)
(8)
依次計算每輛車與歷史軌跡預測值的損失值,將每幀數據的損失值做歸一化處理,得到方向系數βi為:
(9)
2.2.4 車輛追蹤增益函數
(10)
以增益函數表示當前車輛與各軌跡之間的關系,計算當前幀內每輛車的追蹤增益Hi,表示當前車輛對每條軌跡的增益值。設置判定條件:若該增益小于閾值ε,則將其作為某軌跡的新坐標存儲。否則將其作為新軌跡存儲或者無效坐標丟棄。
以上述算法為核心,開發基于MobileNet_SSD的路口交通違章檢測系統,用于檢測機動車闖紅燈、違章轉彎、違章壓線等行為。以高精度網絡攝像頭為數據采集設備,實時采集路口交通數據,采用音響設備對車輛的違章信息進行語音播報,并通過屏幕顯示遠程監控界面,方便用戶查看、管理和參數配置,結構如圖6所示。系統具有可移植性,在測試中分別以Arm EAIDK-610開發套件和PC為主控平臺,測試系統性能,詳細說明請見下節實驗分析。

圖6 系統結構示意圖
系統分為車輛追蹤、違章判定和遠程控制三個模塊,結構如圖6所示。車輛追蹤模塊實時采集圖像,以基于MobileNet_SSD的車輛檢測算法和基于幀間歐氏距離的車輛追蹤算法為核心,實現路口車輛軌跡追蹤;違章判定模塊根據道路交通安全法制定違章判定策略,結合車輛行駛軌跡,檢測各類違章行為;遠程控制模塊開發基于Qt的遠程控制界面,實時監控路口交通狀態,違章發生時進行語音播報,自主劃定違章虛擬線圈,并顯示遵章率、車流量、違章日志等交通指標。
分析路口監控畫面可知,店鋪、樹木和電桿等物體分布與本算法無關,將原始圖像全部輸入模型會降低車輛追蹤準確率,降低系統運行效率,因此采用多線程分割處理圖像。設車輛行駛區域為主要檢測區域,無關特征分布在無效區域,如圖7所示。

圖7 多線程檢測分布圖
根據路口實際情況,將輸入圖像分割為兩個主要檢測區域,并設置20%重疊區域,保證銜接處的檢測成功率。分別輸入線程A、B運行基于MobileNet_SSD的車輛檢測算法,提高車輛定位精度。當A/B線程分別運行完一幀數據時,統一車輛位置為相機坐標系。
3.2.1 虛擬線圈判定違章行為
目前路口常以填埋線圈法判定違章行為,即在特定區域填埋金屬線圈及傳感器,當車輛違章行駛過路口后觸發報警[3]。但此方法消耗成本過大、破壞路面美觀、易損壞、修復過程繁瑣且對某些違章行為檢測不精準。系統根據MobileNet_SSD算法追蹤車輛,劃定違章區域為虛擬線圈,并制定相應的違章判定法則,實現違章行為判定。
根據中華人民共和國道路交通安全法有關規定,各類違章行為的判定標準不同。本系統共實現了五種違章行為判定:機動車闖直行方向紅燈、機動車闖左行方向紅燈、機動車闖右行方向紅燈、機動車壓黃線和機動車駛入非機動車道。以機動車闖直行方向為例,需證明車輛在紅燈時,連續碾壓路口停止線并通過路口中心,才可判定違章。
3.2.2 自主線圈劃定
各交通路口的道路方向和特點不同,固定的虛擬線圈無法適用于其他路口,因此開發一種基于Qt的自主線圈劃定功能。用戶可根據需求在線劃定虛擬線圈,具體劃定線圈方式如圖8所示。

圖8 自主劃定線圈
在GUI界面的右上方找到“設定ROI區域選項”,點擊下拉菜單找到各虛擬線圈的名稱,選定其中一項。找到畫面中需要設定虛擬線圈的區域,點擊鼠標拖動一個矩形框至合適大小,則該區域為指定的虛擬線圈位置。右圖中顯示了目前定制的所有虛擬線圈,分別用于五種車輛違章行為判定。
3.2.3 違章車牌提取
提取違章車輛車牌,用于違章行為取證及處罰[18]。將違章車輛圖像進行X方向的Sobel濾波,得到水平方向的邊緣特征。對梯度幅值進行非極大值抑制(NMS)去除模糊部分得到邊緣圖像。同時對原始圖像進行HSV色彩空間變換,根據車牌閾值范圍分割出對應部分。比較閾值分割圖像與邊緣特征篩選出車牌所在區域,通過圖像形態學運算填平圖像中的小孔,彌合裂縫。最后提取車牌輪廓,并限制輪廓的長寬和非零像素比,提取完整車牌輪廓。
機動車路口違章極易發生交通事故,導致交通停滯擁堵,因此交警支隊根據各路段違章數量等數據,增派警力指揮交通[19]。本系統設計了遵章率、車流量統計、違章日志顯示、違章查詢、歷史數據查詢等功能,實現數據指導勤務。遵章率是固定時間內,路口遵守交規車輛占總體的比例。已知某時間間隔Δt內車流量為N,違章車輛數量為K,根據本系統檢測到的機動車違章情況,統計遵章率ρ可表示為:

(11)
根據路口遵章率在24 h內的分布規律,確定遵章率等級,對違章、事故多發路口增派警力,可有效改善交通狀況,緩解交通壓力。
分別選擇Arm EAIDK-610和PC為主控平臺。以EAIDK-610為主控時,使用異構計算庫HCL和嵌入式深度學習框架Tengine運行MobileNet_SSD算法,系統運行在RK3399的六核CPU環境下;以PC為主控時,使用CUDA10并行計算架構,使用TensorFlow框架[20]運行MobileNet_SSD算法。其詳細配置如表1所示。
4.2.1 車輛檢測算法性能分析
在表1所述的PC實驗環境下對MobileNet_SSD算法進行測試,并對比SSD算法的性能。通過路口交通監控設備采集數據,選取其中200張圖像作為測試集,共包含983個待檢測目標,測試集圖像分辨率為1 920×1 080。實驗僅統計車輛檢測精度,因此在統計檢測精度時只考慮車輛類別的識別精度,最終結果如表2所示。

表2 不同算法的車輛檢測性能對比
分析表2,MobileNet_SSD采用深度可分離卷積,引入寬度、分辨率超參數有效降低計算量和模型參數量,提升檢測速度,平均檢測時間約為28.68 ms,FPS約為SSD的2.74倍。但相比SSD(VGG-16)算法提取的特征更少,導致降低了約1.1%的檢測精度。考慮到路口監控視頻采集速率約為60 FPS,MobileNet_SSD算法在圖像中出現的檢測誤差不影響系統運行。
路口交通違章檢測系統受到空間、能耗等因素的限制,需要在嵌入式設備下運行。實驗分別對比了MobileNet_SSD算法在EAIDK-610平臺和PC平臺的檢測性能,實驗環境如4.1節所示,測試數據集相同,則最終結果如表3所示。

表3 不同平臺下車輛檢測性能對比
分析表3,在EAIDK-610平臺下,MobileNet_SSD算法檢測精度比PC端降低了約1.77%,其原因在于Tengine深度學習框架對網絡進行量化處理。算法檢測一幀圖像平均耗時約為73.26 ms,運行幀頻約為13.65 FPS,耗時約為PC平臺的2.55倍。實驗證明,以EAIDK-610為主控平臺,實時運行MobileNet_SSD算法檢測路口車輛是可行的。
4.2.2 違章檢測系統性能分析
以下通過實驗對比文中算法和三幀差分法[21]等經典算法在違章檢測方面的性能。在EAIDK-610平臺下,實驗輸入數據為100組機動車違章的監控視頻,測試本系統和三幀差分法的違章判定精度,最終結果如表4所示。

表4 不同算法下的違章檢測性能對比
分析表4,此系統違章檢測準確率約為97%,比基于三幀差分法的系統高約3.32%。平均檢測時間約為114.16 ms,幀頻達到8.76 FPS,耗時僅為三幀差分法的51.37%。綜上所述,本系統在違章行為檢測精度和系統運行效率上均優于傳統違章檢測算法。
為提高路口交通違章檢測系統的準確性和實時性,并適用于嵌入式平臺,文中提出了一種基于MobileNet_SSD的路口交通違章檢測系統。以MobileNet_SSD網絡模型檢測車輛,結合幀間歐氏距離算法追蹤車輛軌跡,實現對5種機動車違章行為的檢測及取證。在EAIDK-610開發平臺下,模型mAP約為83.18%,違章檢測準確率為97%,系統運行速度為8.31 FPS。實驗結果表明,系統不僅提升了在嵌入式設備上的檢測速度,同時對復雜場景的檢測具有較好的魯棒性。