林靜怡,史曉穎
(杭州電子科技大學計算機學院,浙江 杭州 310018)
近年來以電動車和摩托車為代表的雙輪車數(shù)量激增,由此引發(fā)的各種嚴重交通違法行為日益凸顯,無頭盔駕駛、闖紅燈、逆行等違法行為不斷發(fā)生。據(jù)國家統(tǒng)計局統(tǒng)計,僅2019年全國雙輪車交通事故量就占32%,這些交通違法行為造成了交通事故數(shù)量長期居高不下,給人民群眾的生命財產(chǎn)安全造成了極大損失。雙輪車數(shù)量龐大,管理需耗費大量的人力,因此,高效無人化的科學管理工作迫在眉睫。
本系統(tǒng)在YOLOv4-tiny上做了改進,使檢測的精度更高。對輸入的道路監(jiān)控視頻,首先運用目標檢測技術對目標(雙輪車、是否佩戴頭盔的人頭)進行識別與定位,計算人頭與雙輪車之間的IOU 矩陣(目標之間的距離指標),以此為依據(jù)進行人頭和雙輪車的匹配。若判定為未戴頭盔,則進行車牌識別和人臉識別,雙重保險讓違法人員無所遁形。針對闖紅燈和逆行行為則利用多目標跟蹤技術對其運行軌跡進行判斷。最后將數(shù)據(jù)傳入數(shù)據(jù)庫,并將結果反饋給用戶,實現(xiàn)無人監(jiān)督下的雙輪車管控。
系統(tǒng)兩大模塊如圖1 所示,分別為檢測模塊和管理模塊。其中,檢測模塊分為四大核心組件,均采用先進的計算機視覺算法模型,包括:基于YOLOv4-tiny 的目標檢測;利用高效的JDE 框架的多目標跟蹤;利用現(xiàn)有的PaddleOCR 實現(xiàn)車牌識別;利用成熟的Retinaface和Facenet 實現(xiàn)人臉識別。管理模塊利用數(shù)據(jù)可視化技術,繪制坐標熱力圖和統(tǒng)計圖表,搭建交警輔助管理平臺,分為PC 端和移動端,交管部門可輕松獲取違法人員信息,查看時間地點與車型并通知相關違規(guī)人員,用戶可快速接收并處理違規(guī)事件。大數(shù)據(jù)統(tǒng)計出危險駕駛人員出現(xiàn)次數(shù)較多的時間地點,為交警執(zhí)法提供強有力直觀的參考。
圖1 系統(tǒng)架構圖
本系統(tǒng)使用私有數(shù)據(jù)集訓練模型。共采集并標注了6000 張圖片,約40000 個目標,以電動車、摩托車為代表的雙輪車為主,并且對駕乘人員是否佩戴頭盔進行標注。該數(shù)據(jù)集圖片由網(wǎng)絡爬蟲、城市道路多攝像頭抓拍采集而成。
經(jīng)實驗得,在測試集上取得的識別與定位精度為82.8%mAP。其中具體類別:摩托車motor、帶頭盔的人頭helmet、沒戴頭盔的人頭without_helmet、行人pedestrian、自行車cyclist的識別與定位精度AP見圖2。
圖2 目標檢測模型在測試集上的表現(xiàn)
最終檢測識別結果以json 格式傳輸至后臺,由后臺傳至數(shù)據(jù)庫存儲。
2.1.1 目標檢測
YOLOv4-tiny 網(wǎng)絡則是經(jīng)過了特殊的模型縮放方法對YOLOv4 修改得到的輕量級目標檢測網(wǎng)絡。在COCO 數(shù)據(jù)集上保持22.0%mAP 的同時達到了443FPS(使用RTX 2080Ti)。本文在yolov4-tiny 的基礎上增加了多尺度空洞卷積,以獲得不同大小的感受野,取得了更好的精度。具體結構如下,受ICCV 2019 上的三叉戟網(wǎng)絡的啟發(fā),本文將多尺度空洞卷積應用在FPN(feature)中,進一步提高了感受野。原YOLOv4-tiny的Neck部分使用FPN(Feature Pyramid Networks)來融合不同尺寸特征圖的特征信息。本項目設計的多尺度空洞卷積網(wǎng)絡,在FPN Neck 層上增加了三叉戟模塊(Trident Block),采用三個不同空洞率的分支網(wǎng)絡。結構如圖3所示。
圖3 多尺度空洞卷積網(wǎng)絡結構
目前檢測未戴頭盔的主流方法是,先檢測雙輪車,再檢測人頭,兩步檢測的策略無法達到實時的要求。憑借項目組私有數(shù)據(jù)集,本系統(tǒng)同時檢測雙輪車與人頭,再計算人頭與雙輪車之間的IOU 矩陣(目標之間的距離指標),以此為依據(jù)進行人頭和雙輪車的匹配。只需一步檢測即可完成未戴頭盔的違法人員識別。
2.1.2 多目標跟蹤
目前的多目標跟蹤技術以SDE(Separate Detection tracking)為主,其中Deep SORT為SDE 的代表技術,也是目前工業(yè)界的主流。但SDE 類型的多目標跟蹤技術的缺點就是目標檢測與嵌入學習相互獨立,造成了重復計算。
2020 年發(fā)表在ECCV 上的一篇論文提出了JDE(Joint Detection tracking)框架,將目標檢測和嵌入學習融合在同一個網(wǎng)絡中,避免了重復計算,相較于SDE 框架,精度相同且有著速度上的顯著提升,實現(xiàn)了實時多目標跟蹤,經(jīng)實驗得,在MOT-16 challenge上的跟蹤精度可達64.4%MOTA,且速度在18~22FPS之間波動。顯然JDE 框架更適合本項目高速,低成本的需求。
本系統(tǒng)將JDE 框架移植到YOLOv4-tiny,圖4 是本系統(tǒng)采用的多目標跟蹤技術框架圖。
圖4 多目標跟蹤實現(xiàn)思路
針對闖紅燈行為的檢測,根據(jù)我國現(xiàn)行車輛違章標準,需采集抓拍三張圖像:停止線之前的圖像信息;紅燈亮起時,整體車輛穿過停止線的圖像信息;越過停止線后的車輛圖像信息。因此,我們預先設置兩層虛擬線圈來抓拍三張圖像信息,如圖5 所示。當紅燈亮時,首先判斷車輛運動軌跡是否與虛擬線圈層1相交,其次看車輛運動軌跡是否與虛擬線圈層2相交,經(jīng)過對虛擬線圈層2的判斷,即可認定為闖紅燈行為。并由路口攝像機抓拍與記錄的三張圖像,作為違章罰款證據(jù)。
圖5 左圖為闖紅燈檢測設置的虛線線圈示意圖,右圖為逆行檢測示意圖
針對逆行行為的檢測,預先設置路段的正方向,提取目標的運動軌跡,用X[i],Y[i]分別存儲第i 幀的邊界框中心的橫縱坐標。假設以X軸正方向為正確行駛方向,若一旦出現(xiàn)X[i+1]-X[i]<0,則判定為逆行。顯然,這種檢測方法過于簡單,容易造成誤檢。因此本項目采用連續(xù)N 幀的橫坐標變化,若橫坐標減小的比例大于設定的閾值,則判定為逆行。公式為:
count為計數(shù)函數(shù),P為設定的閾值。
管理模塊由PC 端和微信小程序端構成,PC 端主要供管理人員查看處理違法違規(guī)事件分布情況和具體事件信息。微信小程序作為輔助手段,其即用即走方便快捷的優(yōu)點,大大便利了用戶的使用,讓用戶能隨時隨地查看處理,不受內存、手機性能、手機系統(tǒng)等限制。管理模塊的功能模塊如圖6所示。
圖6 管理模塊功能模塊圖
2.2.1 PC端模塊實現(xiàn)
PC 端主要供工作人員使用,共有違法記錄管理、監(jiān)控攝像頭管理和數(shù)據(jù)可視化分析三個功能模塊。該模塊使用Vue+Echarts+flask+mysql 實現(xiàn),并在騰訊云服務器上完成部署。
在違法記錄管理模塊中,包括添加、刪除、查找、修改相關違法記錄等功能。添加新記錄時,客戶端將違法記錄信息提交到服務器,服務器按照設定的規(guī)則生成新的唯一的違法事件編號與填入信息一同新增到數(shù)據(jù)庫中。本文使用HTTP 協(xié)議的POST 方法實現(xiàn)圖片上傳功能。采用模糊查找可以實現(xiàn)時間、空間、個人身份或者具體事件編號等范圍的查找。此外,工作人員可以根據(jù)用戶提交的申訴內容對該條違法記錄進行再處理,用戶收到反饋且無異后,議點擊確定,至此違法事件處理完成閉環(huán)。
監(jiān)控攝像頭管理模塊是對道路上各監(jiān)控攝像頭的管理,可以記錄查看攝像頭狀態(tài)等信息以及實時監(jiān)控畫面。系統(tǒng)將監(jiān)控攝像頭采集到的視頻等信息送入目標檢測模型,并將結果以json 格式反饋到服務器端,經(jīng)過設定規(guī)則對json 格式數(shù)據(jù)進行處理后添加入數(shù)據(jù)庫中,實現(xiàn)自動監(jiān)管。工作人員也可通過該模塊實時監(jiān)控攝像頭狀態(tài),以便及時維修/更換損壞的攝像頭。同時,實時監(jiān)控畫面的展示借助了流媒體服務器軟件相關接口,簡潔高效穩(wěn)定。
數(shù)據(jù)可視化分析模塊由當日違規(guī)人次、各市區(qū)違規(guī)事件處理率、不同時段違規(guī)事件分布、違規(guī)事件高發(fā)街道、各類型違規(guī)事件在各區(qū)發(fā)生的趨勢以及違規(guī)事件熱力圖六部分組成。其中,違規(guī)事件熱力圖主要依托百度地圖SDK 進行開發(fā)。該系統(tǒng)對各路段監(jiān)控攝像頭所記錄的違法事件進行統(tǒng)計整合,使用Echarts結合監(jiān)控攝像頭綁定的坐標在地圖上繪制熱力圖。考慮到數(shù)據(jù)可視化大屏的實時性,系統(tǒng)設置每一秒后臺向前端推送一次數(shù)據(jù),實現(xiàn)數(shù)據(jù)的動態(tài)更新。在該模塊中,系統(tǒng)采用WebSocket 協(xié)議,取代HTTP 在雙向通信場景下的使用,能很好的節(jié)省服務器資源和帶寬并達到實時通訊的目的。系統(tǒng)使用了flask_socketio模塊,該模塊實現(xiàn)了Flask對websocket的封裝,客戶端使用js 接收flask 服務器推送來的消息,并動態(tài)更新數(shù)據(jù)元素內容。
2.2.2 微信小程序端模塊實現(xiàn)
微信小程序端作為輔助手段供用戶使用,由用戶信息、違法事件管理、車輛信息三部分組成,用戶能夠隨時隨地查看或處理各種消息通知和相關事件。
在微信小程序端的違法事件處理模塊中,賬號密碼與個人信息相綁定,僅可以查看篩選所屬個人的相關違法事件,篩選也可以通過模糊查找按時間、地區(qū)、違法類型劃分。除此之外,針對未處理的事件,用戶可通過小程序快速提交處理。用戶查看未處理違法事件無誤后,點擊處理即可快速提交罰款,該處調用了微信支付api,當接收到響應報文訂單支付成功后,支付狀態(tài)由0 變?yōu)?,此時數(shù)據(jù)庫觸發(fā)器啟動,該事件狀態(tài)變更為已處理;若用戶存在異議,可通過違法事件詳情頁右下方的提示進入申訴界面進行申訴,申訴提交后事件狀態(tài)由未處理變更為申訴中,工作人員處理后將處理結果(駁回或同意撤銷)反饋到用戶端。同時,用戶也可在申訴界面查看申訴進度,系統(tǒng)將持續(xù)跟蹤整個動態(tài)流程。
除上述功能外,系統(tǒng)還添加了用戶使用反饋功能,在使用過程中,若用戶有任何的意見或者建議,都可以通過這個接口及時地反饋給工作人員,不斷完善系統(tǒng)功能,給用戶更好的使用體驗。
微信小程序測試過程采用版本Android11 的智能手機,服務器端環(huán)境為Centos8 操作系統(tǒng),開發(fā)工具為Vue2.7+ElementUI+Echarts+Flask+My SQL8.0。
系統(tǒng)部分操作界面和流程如下所示。
工作人員登錄成功后跳轉到違法記錄管理界面圖7(左側),在此可以執(zhí)行添加、查看、刪除等操作,經(jīng)過反復實驗,該界面表現(xiàn)操作性好,速度快,反饋及時,在一定數(shù)量的數(shù)據(jù)面前速度仍舊可觀,能夠很好的幫助工作人員對違法事件的相關操作。
攝像頭管理界面相關可執(zhí)行操作如圖7(右一)所示。在此可以按分區(qū)查看攝像頭具體信息,右部連接攝像頭,展示該監(jiān)控攝像頭的實時監(jiān)控畫面。該監(jiān)控畫面經(jīng)過目標檢測模型的處理,向工作人員清楚的展示畫面內人們的行駛情況。
圖7 違法記錄和監(jiān)控攝像頭管理界面
數(shù)據(jù)可視化大屏如圖8 所示,整個數(shù)據(jù)可視化平臺比較全面的展示分析了各地違法事件發(fā)生的情況。經(jīng)測試,在不斷改變測試數(shù)據(jù)的情況下,每秒做一次更新,效果接近于實時??梢詭椭ぷ魅藛T對各地發(fā)生違規(guī)駕駛行為的情況做出全面的評估和分析,不斷改變執(zhí)法規(guī)則措施,尋找到能最大程度減少違規(guī)駕駛行為事件發(fā)生的方法。
圖8 大數(shù)據(jù)分析平臺結果圖
微信小程序界面查看和申訴部分操作界面如圖9所示。在違法記錄界面圖9(左)點擊事件發(fā)生地點跳轉到事件詳情界面圖9(中)。事件詳情頁中用戶可查看事件具體信息,存在異議可點擊右下角灰色小字進入申訴界面圖9(右)。經(jīng)反復實驗,該界面操作性好,流程簡潔,用戶操作方便。
圖9 微信小程序部分操作界面
本文設計和實現(xiàn)的基于目標檢測和多目標跟蹤的雙輪車危險駕駛行為智能管控系統(tǒng),把握政策走向,將目標檢測、多目標跟蹤等技術相結合,來解決城市交通智能管控中的雙輪車危險駕駛行為監(jiān)測問題,形成了一個比較完善的雙輪車智能管控系統(tǒng)??紤]到使用的便捷性和靈活性,該系統(tǒng)采用PC 端和微信小程序端相結合的方式,讓使用者以低成本和靈活的方式使用該產(chǎn)品。經(jīng)過測試,該系統(tǒng)交互性強,操作簡便,續(xù)航時間久,檢測覆蓋范圍廣,有較好的使用價值。