張子恒,肖 建,王新宇,章佳琪,許 杰
(南京郵電大學(xué) 電子與光學(xué)工程學(xué)院、微電子學(xué)院,江蘇 南京 210003)
近年來,國內(nèi)汽車保有量持續(xù)快速增長,對城市交通運轉(zhuǎn)帶來極大壓力,各類交通事故頻發(fā)。為保證道路交通安全,各地交通管理部門派出警力處理機動車道路違章行為[1]。然而,由于交通警力資源的有限性,需要利用現(xiàn)代化技術(shù)研究智能交通違章檢測系統(tǒng),節(jié)省警力資源,高效檢測違章[2]。
目前常見的路口交通違章行為檢測技術(shù)可分為埋設(shè)線圈法和虛擬線圈法。埋設(shè)線圈法安裝繁瑣且維護成本高,已逐漸被虛擬線圈法代替[3]。虛擬線圈法指基于圖像處理的違章檢測算法,已廣泛應(yīng)用于電子警察系統(tǒng),此類方法檢測準確率高,檢測類別多,且維護成本低[4]。蘇菠等人提出了通過三幀差分法和卡爾曼濾波器預(yù)測跟蹤車輛狀態(tài)[5]。黃丹等人提出了改進的背景差分算法,結(jié)合CAMShift算法跟蹤車輛[6]。徐揚等人提出了一種基于分塊和鄰域信息的背景更新方法,結(jié)合超像素分割和陰影檢測算法跟蹤目標車輛[7]。此類算法在復(fù)雜場景下的檢測精度不穩(wěn)定,不具有較強的魯棒性。
隨著人工智能的發(fā)展,將深度學(xué)習算法用于車輛違章檢測系統(tǒng),可解決多目標跟蹤精度不佳、違章檢測精度不佳的問題,具有較高的研究應(yīng)用價值[8]。付世達等人提出結(jié)合SSD和車道信息的雙通道卷積神經(jīng)網(wǎng)絡(luò)檢測車輛[9]。鄭凱等人提出結(jié)合YOLO和幀間差分法檢測車輛及其遺留物,實現(xiàn)機動車不禮讓行人檢測[10]。但基于深度學(xué)習的檢測算法存在計算量較大,無法應(yīng)用于嵌入式設(shè)備的問題。
為解決上述問題,文中提出了一種基于MobileNet_SSD的路口交通違章檢測系統(tǒng)。以MobileNet_SSD網(wǎng)絡(luò)檢測路口車輛,以幀間歐氏距離算法追蹤車輛軌跡,結(jié)合違章行為判定策略,實現(xiàn)5種機動車違章行為檢測及取證。系統(tǒng)實時統(tǒng)計路口遵章率,上報交管中心增派警力,實現(xiàn)數(shù)據(jù)指導(dǎo)勤務(wù)功能。在EAIDK-610開發(fā)平臺下,車輛檢測mAP約為83.18%,違章檢測準確率97%,系統(tǒng)運行速度8.31 FPS。實驗結(jié)果表明,系統(tǒng)不僅提升了在嵌入式設(shè)備上的檢測速度,同時對復(fù)雜場景的檢測具有較好的魯棒性。
SSD是Liu Wei等人提出的一種one-stage目標檢測算法,在檢測速度和準確率上均優(yōu)于傳統(tǒng)檢測算法[11]。SSD以VGG-16為基礎(chǔ)提取圖像特征,額外添加6個不同尺度的卷積層,分別進行多尺度分類和目標框回歸。同時設(shè)置不同尺寸的先驗框,提高了小尺寸目標的識別準確率,SSD的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 SSD網(wǎng)絡(luò)結(jié)構(gòu)
SSD算法結(jié)合了YOLO的回歸思想和Fast R-CNN的候選框機制,有效提升了目標識別精度和效率[9]。但仍無法在嵌入式平臺下實時運行。針對這一問題,采用MobileNet網(wǎng)絡(luò)結(jié)構(gòu)降低特征提取計算量和網(wǎng)絡(luò)參數(shù)量。
MobileNet是一種小巧而高效的CNN模型,優(yōu)點在于提出了深度可分離卷積,降低了計算量和參數(shù)量[12]。深度可分離卷積包括深度卷積(depthwise convolution)和點卷積(pointwise convolution),先對不同輸入通道進行深度卷積,然后采用1*1點卷積進行結(jié)合[13]。在精度損失較小的情況下,成倍減少了計算量和模型參數(shù)量。
假設(shè)輸入大小為(Hin,Win,Cin)的特征圖,經(jīng)卷積運算后,輸出大小為(Hout,Wout,Cout)的特征圖,卷積核大小為(DK,DK),如圖2所示。
標準卷積計算量MACstd和深度可分離卷積計算量MACdepth分別可表示為:
(1)
Cin*Cout*Hout*Wout
(2)
通常卷積輸出通道數(shù)Cout較大,因此1/Cout可近似為零。標準卷積和深度可分離卷積計算量之比可表示為:
圖2 卷積方式對比
(3)
根據(jù)式(3)所示,若卷積核DK等于3,采用深度可分離卷積可降低大約9倍的計算量,因此MobileNet有效提升了檢測效率。
考慮到進一步減少計算量和參數(shù)量,MobileNet引入了寬度超參數(shù)α和分辨率超參數(shù)ρ,分別按比例減少通道數(shù)和特征圖尺寸[13]。依次降低運算量和參數(shù)量,在精度損失較小的情況下,得到的最終計算量MACm為:
MACm=αCin*DK*DK*ρHout*ρWout+
αCin*αCout*ρHout*ρWout
(4)
綜上所述,為提升檢測效率,采用MobileNet_SSD作為目標檢測算法。MobileNet_SSD在SSD的基礎(chǔ)上,將特征提取部分由VGG-16替換為MobileNet Conv0-Conv13,降低了計算量和模型參數(shù)量[14]。網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 MobileNet_SSD網(wǎng)絡(luò)結(jié)構(gòu)示意圖
在MobileNet Conv0-Conv13中,采用深度可分離卷積進行卷積運算,其他網(wǎng)絡(luò)層仍采用標準卷積。將Conv11、Conv13、Conv14_2、Conv15_2、Conv16_2和Conv17_2層作為6個多尺度特征,進行多尺度候選框回歸。MobileNet_SSD算法降低了少量精度,但提升了系統(tǒng)運行速度,可在嵌入式設(shè)備上實時運行。
車輛追蹤算法,就是捕獲監(jiān)控視頻范圍內(nèi)車輛的行駛軌跡,為違章行為的判定提供依據(jù)[15]。常見的車輛跟蹤算法受陰影、遮擋和交通擁堵等因素限制,適用場景單一,不具備魯棒性[16]。
2.2.1 圖像尺度不一致性
路口交通監(jiān)控設(shè)備通常采用固定支撐架與支撐梁的方式安裝在道路上方,通過攝像頭內(nèi)置處理器實現(xiàn)違章行為的判定,并以千兆以太網(wǎng)回傳數(shù)據(jù)管理中心。已知有效監(jiān)控畫面的縱向視場范圍為θ1~θ2,監(jiān)控設(shè)備高度為Lcam,數(shù)據(jù)獲取方式如圖4所示??芍獢?shù)據(jù)采集時與水平方向夾角固定,導(dǎo)致圖像存在尺度不一致性。
圖4 數(shù)據(jù)獲取場景示意圖
圖像的尺度不一致性是指在有效監(jiān)控畫面的縱向視場范圍[θ1,θ2]內(nèi),實際場景在圖像上的映射比例是不均勻的。即若車輛以相同速度行駛,每輛車在圖像上的速度vpixel不相等,由尺度誤差導(dǎo)致閾值分割的標準不統(tǒng)一。計算尺度系數(shù)αi,恢復(fù)統(tǒng)一的圖像映射比例,保證車輛追蹤算法適用于不同比例的目標。已知有效監(jiān)控畫面縱向視場范圍為[θ1,θ2],且θ1,θ2均小于π/2、設(shè)備高度為Lcam、圖像縱向分辨率himg,當前車輛在圖像的(wi,hi)處,尺度系數(shù)αi可表示為:
(5)
2.2.2 幀間歐氏距離
由于車輛行駛具有連續(xù)性,且路口車速是穩(wěn)定的,假設(shè)行駛車輛在相鄰數(shù)幀間的位移較小,即同一輛車在相鄰時刻的距離最近,與其他車較遠。根據(jù)此假設(shè),由上節(jié)所述的車輛檢測算法得到車輛位置,計算每輛車的中心點坐標,統(tǒng)一到相機坐標系中,作為軌跡跟蹤的事實依據(jù)。歐幾里得度量描述了兩點間的直線距離,直觀地顯示了目標間的關(guān)系[17]。因此車輛在視頻幀中的變化關(guān)系可以由歐氏距離表示,如圖5所示。
圖5 車輛追蹤算法效果示意圖
(6)
2.2.3 車輛軌跡預(yù)測
城市路口交通情況復(fù)雜多變,車流量日益增多且路口交通擁擠,導(dǎo)致監(jiān)控畫面中車輛距離過近,發(fā)生誤追蹤現(xiàn)象,降低了車輛追蹤算法準確率。計算方向系數(shù)βi預(yù)測行車方向,改善擁堵情況下不同車輛的軌跡跟蹤效果,提升算法的魯棒性,如圖5所示。
(7)
(8)
依次計算每輛車與歷史軌跡預(yù)測值的損失值,將每幀數(shù)據(jù)的損失值做歸一化處理,得到方向系數(shù)βi為:
(9)
2.2.4 車輛追蹤增益函數(shù)
(10)
以增益函數(shù)表示當前車輛與各軌跡之間的關(guān)系,計算當前幀內(nèi)每輛車的追蹤增益Hi,表示當前車輛對每條軌跡的增益值。設(shè)置判定條件:若該增益小于閾值ε,則將其作為某軌跡的新坐標存儲。否則將其作為新軌跡存儲或者無效坐標丟棄。
以上述算法為核心,開發(fā)基于MobileNet_SSD的路口交通違章檢測系統(tǒng),用于檢測機動車闖紅燈、違章轉(zhuǎn)彎、違章壓線等行為。以高精度網(wǎng)絡(luò)攝像頭為數(shù)據(jù)采集設(shè)備,實時采集路口交通數(shù)據(jù),采用音響設(shè)備對車輛的違章信息進行語音播報,并通過屏幕顯示遠程監(jiān)控界面,方便用戶查看、管理和參數(shù)配置,結(jié)構(gòu)如圖6所示。系統(tǒng)具有可移植性,在測試中分別以Arm EAIDK-610開發(fā)套件和PC為主控平臺,測試系統(tǒng)性能,詳細說明請見下節(jié)實驗分析。
圖6 系統(tǒng)結(jié)構(gòu)示意圖
系統(tǒng)分為車輛追蹤、違章判定和遠程控制三個模塊,結(jié)構(gòu)如圖6所示。車輛追蹤模塊實時采集圖像,以基于MobileNet_SSD的車輛檢測算法和基于幀間歐氏距離的車輛追蹤算法為核心,實現(xiàn)路口車輛軌跡追蹤;違章判定模塊根據(jù)道路交通安全法制定違章判定策略,結(jié)合車輛行駛軌跡,檢測各類違章行為;遠程控制模塊開發(fā)基于Qt的遠程控制界面,實時監(jiān)控路口交通狀態(tài),違章發(fā)生時進行語音播報,自主劃定違章虛擬線圈,并顯示遵章率、車流量、違章日志等交通指標。
分析路口監(jiān)控畫面可知,店鋪、樹木和電桿等物體分布與本算法無關(guān),將原始圖像全部輸入模型會降低車輛追蹤準確率,降低系統(tǒng)運行效率,因此采用多線程分割處理圖像。設(shè)車輛行駛區(qū)域為主要檢測區(qū)域,無關(guān)特征分布在無效區(qū)域,如圖7所示。
圖7 多線程檢測分布圖
根據(jù)路口實際情況,將輸入圖像分割為兩個主要檢測區(qū)域,并設(shè)置20%重疊區(qū)域,保證銜接處的檢測成功率。分別輸入線程A、B運行基于MobileNet_SSD的車輛檢測算法,提高車輛定位精度。當A/B線程分別運行完一幀數(shù)據(jù)時,統(tǒng)一車輛位置為相機坐標系。
3.2.1 虛擬線圈判定違章行為
目前路口常以填埋線圈法判定違章行為,即在特定區(qū)域填埋金屬線圈及傳感器,當車輛違章行駛過路口后觸發(fā)報警[3]。但此方法消耗成本過大、破壞路面美觀、易損壞、修復(fù)過程繁瑣且對某些違章行為檢測不精準。系統(tǒng)根據(jù)MobileNet_SSD算法追蹤車輛,劃定違章區(qū)域為虛擬線圈,并制定相應(yīng)的違章判定法則,實現(xiàn)違章行為判定。
根據(jù)中華人民共和國道路交通安全法有關(guān)規(guī)定,各類違章行為的判定標準不同。本系統(tǒng)共實現(xiàn)了五種違章行為判定:機動車闖直行方向紅燈、機動車闖左行方向紅燈、機動車闖右行方向紅燈、機動車壓黃線和機動車駛?cè)敕菣C動車道。以機動車闖直行方向為例,需證明車輛在紅燈時,連續(xù)碾壓路口停止線并通過路口中心,才可判定違章。
3.2.2 自主線圈劃定
各交通路口的道路方向和特點不同,固定的虛擬線圈無法適用于其他路口,因此開發(fā)一種基于Qt的自主線圈劃定功能。用戶可根據(jù)需求在線劃定虛擬線圈,具體劃定線圈方式如圖8所示。
圖8 自主劃定線圈
在GUI界面的右上方找到“設(shè)定ROI區(qū)域選項”,點擊下拉菜單找到各虛擬線圈的名稱,選定其中一項。找到畫面中需要設(shè)定虛擬線圈的區(qū)域,點擊鼠標拖動一個矩形框至合適大小,則該區(qū)域為指定的虛擬線圈位置。右圖中顯示了目前定制的所有虛擬線圈,分別用于五種車輛違章行為判定。
3.2.3 違章車牌提取
提取違章車輛車牌,用于違章行為取證及處罰[18]。將違章車輛圖像進行X方向的Sobel濾波,得到水平方向的邊緣特征。對梯度幅值進行非極大值抑制(NMS)去除模糊部分得到邊緣圖像。同時對原始圖像進行HSV色彩空間變換,根據(jù)車牌閾值范圍分割出對應(yīng)部分。比較閾值分割圖像與邊緣特征篩選出車牌所在區(qū)域,通過圖像形態(tài)學(xué)運算填平圖像中的小孔,彌合裂縫。最后提取車牌輪廓,并限制輪廓的長寬和非零像素比,提取完整車牌輪廓。
機動車路口違章極易發(fā)生交通事故,導(dǎo)致交通停滯擁堵,因此交警支隊根據(jù)各路段違章數(shù)量等數(shù)據(jù),增派警力指揮交通[19]。本系統(tǒng)設(shè)計了遵章率、車流量統(tǒng)計、違章日志顯示、違章查詢、歷史數(shù)據(jù)查詢等功能,實現(xiàn)數(shù)據(jù)指導(dǎo)勤務(wù)。遵章率是固定時間內(nèi),路口遵守交規(guī)車輛占總體的比例。已知某時間間隔Δt內(nèi)車流量為N,違章車輛數(shù)量為K,根據(jù)本系統(tǒng)檢測到的機動車違章情況,統(tǒng)計遵章率ρ可表示為:
(11)
根據(jù)路口遵章率在24 h內(nèi)的分布規(guī)律,確定遵章率等級,對違章、事故多發(fā)路口增派警力,可有效改善交通狀況,緩解交通壓力。
分別選擇Arm EAIDK-610和PC為主控平臺。以EAIDK-610為主控時,使用異構(gòu)計算庫HCL和嵌入式深度學(xué)習框架Tengine運行MobileNet_SSD算法,系統(tǒng)運行在RK3399的六核CPU環(huán)境下;以PC為主控時,使用CUDA10并行計算架構(gòu),使用TensorFlow框架[20]運行MobileNet_SSD算法。其詳細配置如表1所示。
4.2.1 車輛檢測算法性能分析
在表1所述的PC實驗環(huán)境下對MobileNet_SSD算法進行測試,并對比SSD算法的性能。通過路口交通監(jiān)控設(shè)備采集數(shù)據(jù),選取其中200張圖像作為測試集,共包含983個待檢測目標,測試集圖像分辨率為1 920×1 080。實驗僅統(tǒng)計車輛檢測精度,因此在統(tǒng)計檢測精度時只考慮車輛類別的識別精度,最終結(jié)果如表2所示。
表2 不同算法的車輛檢測性能對比
分析表2,MobileNet_SSD采用深度可分離卷積,引入寬度、分辨率超參數(shù)有效降低計算量和模型參數(shù)量,提升檢測速度,平均檢測時間約為28.68 ms,F(xiàn)PS約為SSD的2.74倍。但相比SSD(VGG-16)算法提取的特征更少,導(dǎo)致降低了約1.1%的檢測精度??紤]到路口監(jiān)控視頻采集速率約為60 FPS,MobileNet_SSD算法在圖像中出現(xiàn)的檢測誤差不影響系統(tǒng)運行。
路口交通違章檢測系統(tǒng)受到空間、能耗等因素的限制,需要在嵌入式設(shè)備下運行。實驗分別對比了MobileNet_SSD算法在EAIDK-610平臺和PC平臺的檢測性能,實驗環(huán)境如4.1節(jié)所示,測試數(shù)據(jù)集相同,則最終結(jié)果如表3所示。
表3 不同平臺下車輛檢測性能對比
分析表3,在EAIDK-610平臺下,MobileNet_SSD算法檢測精度比PC端降低了約1.77%,其原因在于Tengine深度學(xué)習框架對網(wǎng)絡(luò)進行量化處理。算法檢測一幀圖像平均耗時約為73.26 ms,運行幀頻約為13.65 FPS,耗時約為PC平臺的2.55倍。實驗證明,以EAIDK-610為主控平臺,實時運行MobileNet_SSD算法檢測路口車輛是可行的。
4.2.2 違章檢測系統(tǒng)性能分析
以下通過實驗對比文中算法和三幀差分法[21]等經(jīng)典算法在違章檢測方面的性能。在EAIDK-610平臺下,實驗輸入數(shù)據(jù)為100組機動車違章的監(jiān)控視頻,測試本系統(tǒng)和三幀差分法的違章判定精度,最終結(jié)果如表4所示。
表4 不同算法下的違章檢測性能對比
分析表4,此系統(tǒng)違章檢測準確率約為97%,比基于三幀差分法的系統(tǒng)高約3.32%。平均檢測時間約為114.16 ms,幀頻達到8.76 FPS,耗時僅為三幀差分法的51.37%。綜上所述,本系統(tǒng)在違章行為檢測精度和系統(tǒng)運行效率上均優(yōu)于傳統(tǒng)違章檢測算法。
為提高路口交通違章檢測系統(tǒng)的準確性和實時性,并適用于嵌入式平臺,文中提出了一種基于MobileNet_SSD的路口交通違章檢測系統(tǒng)。以MobileNet_SSD網(wǎng)絡(luò)模型檢測車輛,結(jié)合幀間歐氏距離算法追蹤車輛軌跡,實現(xiàn)對5種機動車違章行為的檢測及取證。在EAIDK-610開發(fā)平臺下,模型mAP約為83.18%,違章檢測準確率為97%,系統(tǒng)運行速度為8.31 FPS。實驗結(jié)果表明,系統(tǒng)不僅提升了在嵌入式設(shè)備上的檢測速度,同時對復(fù)雜場景的檢測具有較好的魯棒性。