喻博威,先俊澤,趙 洋,周 波
(四川輕化工大學物理與電子工程學院,四川宜賓 644000)
目前,我國的違章停車問題越來越普遍,據調查,我國的交通違規中有32.5%屬于違規停車,其中90%以上的違規停車屬于“無意”的,僅僅是車主的粗心大意。因此,為了在硬件層面更為便捷地解決這個問題,該設計用樹莓派作前推,采用OpenCV 進行圖像處理,并結合時下熱門的物聯網技術,在OneNET 云端對處理后的信息進行存儲和調配,進行大數據分析;并開發出配套的微信小程序,使車主可以查看自己的記錄,以此減少違章停車次數,從而達到改善城市公共交通秩序的目的[1-3]。
在系統總體框架的搭建中,運用模塊化的思維,將系統分為圖像處理模塊、北斗模塊、物聯網平臺、微信小程序終端。在圖像處理模塊中,為實現禁停標識的實時采集與識別,選取了處理器主頻達1.5 GHz 的raspberry pi 4B,并通過OpenCV 實現對圖像的精準識別;在北斗模塊中,利用北斗導航系統獲取設備的實時經緯度以及速度信息,并上傳至物聯網平臺,進行數據的存儲和后臺可視化窗口的搭建;選取了中國移動的OneNET 物聯網平臺來接收數據,并為后續的大數據處理提供接口;為方便用戶的使用,在終端使用微信小程序作為接收端口,實現精準的定位和及時的提醒。其系統框圖如圖1所示。

圖1 系統總體框圖
關于標志物的識別和分類,文中先利用卷積神經網絡提取不同禁停標識的相關特征,再通過Cascade(級聯)分類器得到最后的分類結果[4]。
文中采用Haar 特征提取算法來實現矩陣特征的提取。Haar-like 特征最早由Papageorigiou 提出,并用于人臉的描述,對其他目標檢測技術,也可以使用Haar 特征對目標圖像進行特征提取。目標物的訓練使用了Cascade(級聯)分類器的Haar 特征,作為訓練樣本數據的特征描述因子,然后將特征描述因子作為樣本數據送入Cascade 分類器中,通過Adaboost(adapt boost)自適應推進算法來訓練用于圖像識別和目標檢測的分類器[5-8]。然后通過級聯和積分圖進行快速運算,從而達到檢測目標物體的目的。
該文在特征提取方面受到Viola 提出的原始矩陣特征的啟發,建立了3×3×3 的卷積核結構。該方法在保證了精度和深度的同時,提高了運算速度[9]。
對交通標識矩陣特征的提取如圖2 所示。

圖2 禁停標識特征圖
對于圖2 的兩個矩形特征,在一定程度上可以表現出禁止停車交通標示的某些特征。在中間的一幅圖中,Ⅰ區域的顏色比Ⅱ區域的顏色深,右邊的圖中Ⅳ、Ⅴ區域的顏色比Ⅲ區域的顏色要深。運用Haar 的特征計算公式v=Sum(白)-Sum(黑)對其進行Haar 特征計算。
該算法基于特征對禁停目標進行計算,使其能夠在有限數據的情況下編碼特定區域的狀態;并可將每一個特征在訓練圖像子窗口中進行滑動計算,從而獲取各個位置的各類矩陣特征;當找出子窗口的所有特征后,便可進行分類訓練。
特征總數量的大小直接關乎到分類訓練的快慢以及運算速度的大小。文中通過多次計算取平均值得出不同窗口大小下的特征總數量。理論計算過程如下:
在m×m的子窗中,滿足(s,t)條件(x方向邊長必須能被自然數s整除,y方向邊長必須能被自然數t整除)的所有矩形數量可以由以下公式計算得出:

由式(1)計算可得出在不同子窗口大小內特征的總數量,如表1 所示。

表1 不同窗口的特征總數量
根據計算的特征總數量分析得出,特征總數量隨窗口大小呈幾何倍數增長,相應地,檢測精度會增加,計算機的運算量也會呈幾何增加,通過多次實驗測試和分析可知,在正樣本數量為600 張、負樣本數量為800 張、窗口大小為50×50 時,計算機訓練時間為5 小時28 分,但精度較差,匹配率為70%左右;當窗口大小為80×80 時,計算機訓練時間為9 小時46分,檢測精度較高,匹配率在80%以上。為了保證運算速度和檢測精度,文中選取了窗口大小為50×50的正樣本數量600 個、窗口大小為80×80 的正樣本數量400 個,對不同的禁停標識進行訓練,在保證訓練速度的同時保證了匹配精度。
基于深度學習的算法需要大量的樣本進行訓練,文中以python 爬蟲為工具,爬取不同場景、不同外觀的圖片作為訓練集和測試集,并分為交通禁停標識和交通提醒標識兩大類。訓練集共有2 618 張正樣本圖片、4 631張負樣本圖片,測試集有1 624張圖片;在訓練之前需要進行圖像的預處理,得到50×50和80×80 的交通標識集。最終訓練生成的cascade.xml即為提取目標的特征文件。
實驗采用PyCharm 作為開發平臺,通過python語言進行程序的編寫,導入OpenCV 的CV2 官方庫,利用OpenCV 的HaarCascade 分類器,對實時獲取的圖像進行一幀一幀的處理,來進行算法實現。該算法主要解決了以下幾方面的問題:
首先,為實現圖像的識別與匹配,該系統使用CV2.CascadeClassifier(“casca.xml”)來讀取訓練后的特征文件,隨后利用OpenCV 的classifier.detectMultiScale()將訓練的特征與攝像頭實時數據進行對比,從而得出該圖像是否為正確的交通標識。
其次,圖像匹配成功后,需通過樹莓派的串口將數據發送至OneNET 云端,因python 具備豐富的API接口,所以只需在算法中導入封裝了對串口進行訪問的模塊pyserial,并通過serial.Serial(‘/dev/ttyS0’,9 600)對其進行串口與波特率的設置,并在需輸出數據時進行調用,即可成功完成數據的傳輸。
最后,在實際的算法實現中,因光照、煙霧以及行車過程中抖動等因素的影響,會極大地影響圖像的穩定性以及識別的精準度。為此,該系統在進行圖像處理前先進行了預處理,通過CV2.cvtColor()函數將BGR 三通道的彩色圖轉換為GRAY 的三通道灰度圖;同時,為避免系統因劇烈抖動造成的系統整體不穩定,利用了cap.set(CV2.CAP_PROP_FPS,30)將系統的幀率穩定在30 幀,實測顯示,系統的幀率能夠較好地穩定在26 幀左右,能夠較好地實現數據的高速處理。
同時,為在車載硬件上提醒車主,該系統采用封裝的RPI.GPIO 模塊,對樹莓派的16 號端口進行控制,通過對該端口的電位置高與置低,來實現硬件上蜂鳴器的發聲,以此達到對車主提醒的作用。
該系統在樹莓派4B 上的Linux系統中運行,通過Camera Module v2 攝像頭采集圖像,經過算法處理進行識別。圖3 為系統運行整體界面。

圖3 系統運行整體界面
圖3 左側為程序編寫端,可根據實際情況對程序進行修改與參數的查看,右側為實時畫面。
圖4、圖5 為識別畫面。通過對測試集的多次測試,在理想情況下,夜晚的平均識別率為66%,白天的平均識別率為80%,能夠較好地完成對目標物的識別。

圖4 識別畫面1

圖5 識別畫面2
為達到更高的定位精度,該系統采用了ATK1218-BD 雙模定位模塊,可實現北斗和GPS雙重定位,其定位精度為2.5 mCEP,捕獲追蹤靈敏度為-165 dBm,并且該模塊體積小巧,滿足系統輕便化的要求。

圖6 北斗模塊實物圖
該模塊在完成首次定位后,可實現快速連接與定位,該系統將采集到的經緯度信息通過串口發送至WiFi模塊上,并及時上傳至物聯網平臺。
該系統采用中國移動的OneNET 物聯網開發平臺,進行云端的開發和后天數據的可視化,通過ESP8266 WiFi 模塊將識別的數據傳送至云端,在云端對數據進行存儲和后臺的數據監測[10-13]。同時為微信小程序接收數據提供一個中繼服務站,也為后續更多行車數據的上傳提供數據接口[14]。
圖7 為系統后臺管理界面。圖7 中的定位采用雙重定位,左側地圖通過LBS 基站定位保存了汽車即將違停時的地點,右側地圖通過北斗系統進行定位,雙重定位交叉擬合,獲取相對精準的位置信息;WARN 為從樹莓派接收到的識別信息;HEIGHT 為當前海拔高度;SPEED 是當前車速,北斗導航模塊獲取汽車當前的車速,來預測擬合車主是否有臨時??康内厔?,從而對車主進行及時提醒[15-17]。

圖7 系統后臺管理界面
該系統以微信小程序為終端,通過API 接口與OneNET 云端相連接,實時接收云端信息,在預測到車主將有違章停車的趨向時,通過調用手機端的語言進行播報,提醒司機,避免司機因粗心和路況不熟悉而造成的違章停車。
如圖8 所示,當檢測到司機有違章停車趨向后,在語言提醒的同時,對該點進行標注,以便后續司機進行查看[18-20]。

圖8 微信小程序界面
該文采用卷積神經網絡進行訓練,通過OpenCV的HaarCascade 分類器進行圖像的快速處理,并將樹莓派與物聯網平臺有機結合,通過微信小程序進行事后數據的讀取,可以實現對禁停標識的快速識別及判斷,并且具有識別精度高、實時性強、可移植性好的特點,對于“無意”交通違規現象可以起到較好的預警作用。當然,該系統整體上還有提升、優化的空間,識別算法也有繼續研討和改進的意義。