喻博威,先俊澤,趙 洋,周 波
(四川輕化工大學(xué)物理與電子工程學(xué)院,四川宜賓 644000)
目前,我國(guó)的違章停車(chē)問(wèn)題越來(lái)越普遍,據(jù)調(diào)查,我國(guó)的交通違規(guī)中有32.5%屬于違規(guī)停車(chē),其中90%以上的違規(guī)停車(chē)屬于“無(wú)意”的,僅僅是車(chē)主的粗心大意。因此,為了在硬件層面更為便捷地解決這個(gè)問(wèn)題,該設(shè)計(jì)用樹(shù)莓派作前推,采用OpenCV 進(jìn)行圖像處理,并結(jié)合時(shí)下熱門(mén)的物聯(lián)網(wǎng)技術(shù),在OneNET 云端對(duì)處理后的信息進(jìn)行存儲(chǔ)和調(diào)配,進(jìn)行大數(shù)據(jù)分析;并開(kāi)發(fā)出配套的微信小程序,使車(chē)主可以查看自己的記錄,以此減少違章停車(chē)次數(shù),從而達(dá)到改善城市公共交通秩序的目的[1-3]。
在系統(tǒng)總體框架的搭建中,運(yùn)用模塊化的思維,將系統(tǒng)分為圖像處理模塊、北斗模塊、物聯(lián)網(wǎng)平臺(tái)、微信小程序終端。在圖像處理模塊中,為實(shí)現(xiàn)禁停標(biāo)識(shí)的實(shí)時(shí)采集與識(shí)別,選取了處理器主頻達(dá)1.5 GHz 的raspberry pi 4B,并通過(guò)OpenCV 實(shí)現(xiàn)對(duì)圖像的精準(zhǔn)識(shí)別;在北斗模塊中,利用北斗導(dǎo)航系統(tǒng)獲取設(shè)備的實(shí)時(shí)經(jīng)緯度以及速度信息,并上傳至物聯(lián)網(wǎng)平臺(tái),進(jìn)行數(shù)據(jù)的存儲(chǔ)和后臺(tái)可視化窗口的搭建;選取了中國(guó)移動(dòng)的OneNET 物聯(lián)網(wǎng)平臺(tái)來(lái)接收數(shù)據(jù),并為后續(xù)的大數(shù)據(jù)處理提供接口;為方便用戶(hù)的使用,在終端使用微信小程序作為接收端口,實(shí)現(xiàn)精準(zhǔn)的定位和及時(shí)的提醒。其系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)總體框圖
關(guān)于標(biāo)志物的識(shí)別和分類(lèi),文中先利用卷積神經(jīng)網(wǎng)絡(luò)提取不同禁停標(biāo)識(shí)的相關(guān)特征,再通過(guò)Cascade(級(jí)聯(lián))分類(lèi)器得到最后的分類(lèi)結(jié)果[4]。
文中采用Haar 特征提取算法來(lái)實(shí)現(xiàn)矩陣特征的提取。Haar-like 特征最早由Papageorigiou 提出,并用于人臉的描述,對(duì)其他目標(biāo)檢測(cè)技術(shù),也可以使用Haar 特征對(duì)目標(biāo)圖像進(jìn)行特征提取。目標(biāo)物的訓(xùn)練使用了Cascade(級(jí)聯(lián))分類(lèi)器的Haar 特征,作為訓(xùn)練樣本數(shù)據(jù)的特征描述因子,然后將特征描述因子作為樣本數(shù)據(jù)送入Cascade 分類(lèi)器中,通過(guò)Adaboost(adapt boost)自適應(yīng)推進(jìn)算法來(lái)訓(xùn)練用于圖像識(shí)別和目標(biāo)檢測(cè)的分類(lèi)器[5-8]。然后通過(guò)級(jí)聯(lián)和積分圖進(jìn)行快速運(yùn)算,從而達(dá)到檢測(cè)目標(biāo)物體的目的。
該文在特征提取方面受到Viola 提出的原始矩陣特征的啟發(fā),建立了3×3×3 的卷積核結(jié)構(gòu)。該方法在保證了精度和深度的同時(shí),提高了運(yùn)算速度[9]。
對(duì)交通標(biāo)識(shí)矩陣特征的提取如圖2 所示。
圖2 禁停標(biāo)識(shí)特征圖
對(duì)于圖2 的兩個(gè)矩形特征,在一定程度上可以表現(xiàn)出禁止停車(chē)交通標(biāo)示的某些特征。在中間的一幅圖中,Ⅰ區(qū)域的顏色比Ⅱ區(qū)域的顏色深,右邊的圖中Ⅳ、Ⅴ區(qū)域的顏色比Ⅲ區(qū)域的顏色要深。運(yùn)用Haar 的特征計(jì)算公式v=Sum(白)-Sum(黑)對(duì)其進(jìn)行Haar 特征計(jì)算。
該算法基于特征對(duì)禁停目標(biāo)進(jìn)行計(jì)算,使其能夠在有限數(shù)據(jù)的情況下編碼特定區(qū)域的狀態(tài);并可將每一個(gè)特征在訓(xùn)練圖像子窗口中進(jìn)行滑動(dòng)計(jì)算,從而獲取各個(gè)位置的各類(lèi)矩陣特征;當(dāng)找出子窗口的所有特征后,便可進(jìn)行分類(lèi)訓(xùn)練。
特征總數(shù)量的大小直接關(guān)乎到分類(lèi)訓(xùn)練的快慢以及運(yùn)算速度的大小。文中通過(guò)多次計(jì)算取平均值得出不同窗口大小下的特征總數(shù)量。理論計(jì)算過(guò)程如下:
在m×m的子窗中,滿(mǎn)足(s,t)條件(x方向邊長(zhǎng)必須能被自然數(shù)s整除,y方向邊長(zhǎng)必須能被自然數(shù)t整除)的所有矩形數(shù)量可以由以下公式計(jì)算得出:
由式(1)計(jì)算可得出在不同子窗口大小內(nèi)特征的總數(shù)量,如表1 所示。
表1 不同窗口的特征總數(shù)量
根據(jù)計(jì)算的特征總數(shù)量分析得出,特征總數(shù)量隨窗口大小呈幾何倍數(shù)增長(zhǎng),相應(yīng)地,檢測(cè)精度會(huì)增加,計(jì)算機(jī)的運(yùn)算量也會(huì)呈幾何增加,通過(guò)多次實(shí)驗(yàn)測(cè)試和分析可知,在正樣本數(shù)量為600 張、負(fù)樣本數(shù)量為800 張、窗口大小為50×50 時(shí),計(jì)算機(jī)訓(xùn)練時(shí)間為5 小時(shí)28 分,但精度較差,匹配率為70%左右;當(dāng)窗口大小為80×80 時(shí),計(jì)算機(jī)訓(xùn)練時(shí)間為9 小時(shí)46分,檢測(cè)精度較高,匹配率在80%以上。為了保證運(yùn)算速度和檢測(cè)精度,文中選取了窗口大小為50×50的正樣本數(shù)量600 個(gè)、窗口大小為80×80 的正樣本數(shù)量400 個(gè),對(duì)不同的禁停標(biāo)識(shí)進(jìn)行訓(xùn)練,在保證訓(xùn)練速度的同時(shí)保證了匹配精度。
基于深度學(xué)習(xí)的算法需要大量的樣本進(jìn)行訓(xùn)練,文中以python 爬蟲(chóng)為工具,爬取不同場(chǎng)景、不同外觀的圖片作為訓(xùn)練集和測(cè)試集,并分為交通禁停標(biāo)識(shí)和交通提醒標(biāo)識(shí)兩大類(lèi)。訓(xùn)練集共有2 618 張正樣本圖片、4 631張負(fù)樣本圖片,測(cè)試集有1 624張圖片;在訓(xùn)練之前需要進(jìn)行圖像的預(yù)處理,得到50×50和80×80 的交通標(biāo)識(shí)集。最終訓(xùn)練生成的cascade.xml即為提取目標(biāo)的特征文件。
實(shí)驗(yàn)采用PyCharm 作為開(kāi)發(fā)平臺(tái),通過(guò)python語(yǔ)言進(jìn)行程序的編寫(xiě),導(dǎo)入OpenCV 的CV2 官方庫(kù),利用OpenCV 的HaarCascade 分類(lèi)器,對(duì)實(shí)時(shí)獲取的圖像進(jìn)行一幀一幀的處理,來(lái)進(jìn)行算法實(shí)現(xiàn)。該算法主要解決了以下幾方面的問(wèn)題:
首先,為實(shí)現(xiàn)圖像的識(shí)別與匹配,該系統(tǒng)使用CV2.CascadeClassifier(“casca.xml”)來(lái)讀取訓(xùn)練后的特征文件,隨后利用OpenCV 的classifier.detectMultiScale()將訓(xùn)練的特征與攝像頭實(shí)時(shí)數(shù)據(jù)進(jìn)行對(duì)比,從而得出該圖像是否為正確的交通標(biāo)識(shí)。
其次,圖像匹配成功后,需通過(guò)樹(shù)莓派的串口將數(shù)據(jù)發(fā)送至OneNET 云端,因python 具備豐富的API接口,所以只需在算法中導(dǎo)入封裝了對(duì)串口進(jìn)行訪問(wèn)的模塊pyserial,并通過(guò)serial.Serial(‘/dev/ttyS0’,9 600)對(duì)其進(jìn)行串口與波特率的設(shè)置,并在需輸出數(shù)據(jù)時(shí)進(jìn)行調(diào)用,即可成功完成數(shù)據(jù)的傳輸。
最后,在實(shí)際的算法實(shí)現(xiàn)中,因光照、煙霧以及行車(chē)過(guò)程中抖動(dòng)等因素的影響,會(huì)極大地影響圖像的穩(wěn)定性以及識(shí)別的精準(zhǔn)度。為此,該系統(tǒng)在進(jìn)行圖像處理前先進(jìn)行了預(yù)處理,通過(guò)CV2.cvtColor()函數(shù)將BGR 三通道的彩色圖轉(zhuǎn)換為GRAY 的三通道灰度圖;同時(shí),為避免系統(tǒng)因劇烈抖動(dòng)造成的系統(tǒng)整體不穩(wěn)定,利用了cap.set(CV2.CAP_PROP_FPS,30)將系統(tǒng)的幀率穩(wěn)定在30 幀,實(shí)測(cè)顯示,系統(tǒng)的幀率能夠較好地穩(wěn)定在26 幀左右,能夠較好地實(shí)現(xiàn)數(shù)據(jù)的高速處理。
同時(shí),為在車(chē)載硬件上提醒車(chē)主,該系統(tǒng)采用封裝的RPI.GPIO 模塊,對(duì)樹(shù)莓派的16 號(hào)端口進(jìn)行控制,通過(guò)對(duì)該端口的電位置高與置低,來(lái)實(shí)現(xiàn)硬件上蜂鳴器的發(fā)聲,以此達(dá)到對(duì)車(chē)主提醒的作用。
該系統(tǒng)在樹(shù)莓派4B 上的Linux系統(tǒng)中運(yùn)行,通過(guò)Camera Module v2 攝像頭采集圖像,經(jīng)過(guò)算法處理進(jìn)行識(shí)別。圖3 為系統(tǒng)運(yùn)行整體界面。
圖3 系統(tǒng)運(yùn)行整體界面
圖3 左側(cè)為程序編寫(xiě)端,可根據(jù)實(shí)際情況對(duì)程序進(jìn)行修改與參數(shù)的查看,右側(cè)為實(shí)時(shí)畫(huà)面。
圖4、圖5 為識(shí)別畫(huà)面。通過(guò)對(duì)測(cè)試集的多次測(cè)試,在理想情況下,夜晚的平均識(shí)別率為66%,白天的平均識(shí)別率為80%,能夠較好地完成對(duì)目標(biāo)物的識(shí)別。
圖4 識(shí)別畫(huà)面1
圖5 識(shí)別畫(huà)面2
為達(dá)到更高的定位精度,該系統(tǒng)采用了ATK1218-BD 雙模定位模塊,可實(shí)現(xiàn)北斗和GPS雙重定位,其定位精度為2.5 mCEP,捕獲追蹤靈敏度為-165 dBm,并且該模塊體積小巧,滿(mǎn)足系統(tǒng)輕便化的要求。
圖6 北斗模塊實(shí)物圖
該模塊在完成首次定位后,可實(shí)現(xiàn)快速連接與定位,該系統(tǒng)將采集到的經(jīng)緯度信息通過(guò)串口發(fā)送至WiFi模塊上,并及時(shí)上傳至物聯(lián)網(wǎng)平臺(tái)。
該系統(tǒng)采用中國(guó)移動(dòng)的OneNET 物聯(lián)網(wǎng)開(kāi)發(fā)平臺(tái),進(jìn)行云端的開(kāi)發(fā)和后天數(shù)據(jù)的可視化,通過(guò)ESP8266 WiFi 模塊將識(shí)別的數(shù)據(jù)傳送至云端,在云端對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和后臺(tái)的數(shù)據(jù)監(jiān)測(cè)[10-13]。同時(shí)為微信小程序接收數(shù)據(jù)提供一個(gè)中繼服務(wù)站,也為后續(xù)更多行車(chē)數(shù)據(jù)的上傳提供數(shù)據(jù)接口[14]。
圖7 為系統(tǒng)后臺(tái)管理界面。圖7 中的定位采用雙重定位,左側(cè)地圖通過(guò)LBS 基站定位保存了汽車(chē)即將違停時(shí)的地點(diǎn),右側(cè)地圖通過(guò)北斗系統(tǒng)進(jìn)行定位,雙重定位交叉擬合,獲取相對(duì)精準(zhǔn)的位置信息;WARN 為從樹(shù)莓派接收到的識(shí)別信息;HEIGHT 為當(dāng)前海拔高度;SPEED 是當(dāng)前車(chē)速,北斗導(dǎo)航模塊獲取汽車(chē)當(dāng)前的車(chē)速,來(lái)預(yù)測(cè)擬合車(chē)主是否有臨時(shí)??康内厔?shì),從而對(duì)車(chē)主進(jìn)行及時(shí)提醒[15-17]。
圖7 系統(tǒng)后臺(tái)管理界面
該系統(tǒng)以微信小程序?yàn)榻K端,通過(guò)API 接口與OneNET 云端相連接,實(shí)時(shí)接收云端信息,在預(yù)測(cè)到車(chē)主將有違章停車(chē)的趨向時(shí),通過(guò)調(diào)用手機(jī)端的語(yǔ)言進(jìn)行播報(bào),提醒司機(jī),避免司機(jī)因粗心和路況不熟悉而造成的違章停車(chē)。
如圖8 所示,當(dāng)檢測(cè)到司機(jī)有違章停車(chē)趨向后,在語(yǔ)言提醒的同時(shí),對(duì)該點(diǎn)進(jìn)行標(biāo)注,以便后續(xù)司機(jī)進(jìn)行查看[18-20]。
圖8 微信小程序界面
該文采用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,通過(guò)OpenCV的HaarCascade 分類(lèi)器進(jìn)行圖像的快速處理,并將樹(shù)莓派與物聯(lián)網(wǎng)平臺(tái)有機(jī)結(jié)合,通過(guò)微信小程序進(jìn)行事后數(shù)據(jù)的讀取,可以實(shí)現(xiàn)對(duì)禁停標(biāo)識(shí)的快速識(shí)別及判斷,并且具有識(shí)別精度高、實(shí)時(shí)性強(qiáng)、可移植性好的特點(diǎn),對(duì)于“無(wú)意”交通違規(guī)現(xiàn)象可以起到較好的預(yù)警作用。當(dāng)然,該系統(tǒng)整體上還有提升、優(yōu)化的空間,識(shí)別算法也有繼續(xù)研討和改進(jìn)的意義。