劉奧卓, 曹煜輝, 周岳斌
(湖北文理學(xué)院機(jī)械工程學(xué)院, 湖北 襄陽 441053)
隨著車輛數(shù)量日益增加,交通擁堵現(xiàn)象越來越多。目前雖然在部分路段實(shí)現(xiàn)了智能監(jiān)控,但只是利用車流量歷史數(shù)據(jù)設(shè)定該固定路段交通燈固定周期,不能實(shí)現(xiàn)路口交通燈隨著某一時(shí)段的車流量變化及時(shí)變更的功能[1-2]。為應(yīng)對交通路口車流量的臨時(shí)變更,針對交通路口的擁堵問題,設(shè)計(jì)了一種基于樹莓派的車輛識(shí)別與車流監(jiān)測系統(tǒng)。系統(tǒng)借助嵌入式開發(fā)平臺(tái),利用攝像頭采集路口車輛的圖片信息,使用ZigBee技術(shù)實(shí)現(xiàn)無線數(shù)據(jù)傳輸,采用樹莓派主控模塊完成圖像數(shù)據(jù)分析與實(shí)時(shí)學(xué)習(xí)。利用神經(jīng)網(wǎng)絡(luò)模型,對攝像頭采集圖像進(jìn)行處理,精準(zhǔn)確識(shí)別某一時(shí)段的車流量,通過樹莓派對車流數(shù)據(jù)和本周期各路段交通燈時(shí)長進(jìn)行計(jì)算,直接給出下一周期的路段交通燈時(shí)長,實(shí)現(xiàn)車流量實(shí)時(shí)監(jiān)測和交通燈智能控制。
系統(tǒng)硬件設(shè)計(jì)方案如圖1所示,由工業(yè)攝像頭、樹莓派、ZigBee主機(jī)、ZigBee從機(jī)、數(shù)碼管顯示器、交通燈組成。在交通路口固定四個(gè)工業(yè)攝像頭,分別對四個(gè)路口的小車進(jìn)行圖像采集,再將工業(yè)攝像頭與樹莓派連接,在樹莓派中對采集的圖像進(jìn)行處理,得到一個(gè)周期內(nèi)每個(gè)路口的車流量,再根據(jù)設(shè)定程序來分配下一個(gè)周期內(nèi)四個(gè)路口的交通燈時(shí)長,將得到的時(shí)長傳輸?shù)脚c樹莓派相連接的ZigBee主機(jī)上,由ZigBee主機(jī)將信息分別傳輸?shù)剿膫€(gè)路口的ZigBee從機(jī)。由ZigBee從機(jī)來控制路口的交通燈顯示下個(gè)周期的本路段時(shí)長[3-4]。
每個(gè)周期各路段的數(shù)據(jù)提取和指令傳達(dá)只會(huì)影響到下一周期的紅綠燈時(shí)長,即下一周期紅綠燈時(shí)長是根據(jù)本周期中四個(gè)路段在本路段綠燈的情況下通行的車輛數(shù)來進(jìn)行計(jì)算得到。
圖1 系統(tǒng)硬件設(shè)計(jì)方案
系統(tǒng)軟件環(huán)境首先是在嵌入式環(huán)境下安裝OpenCV。OpenCV是一個(gè)基于BSD許可(開源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺庫,可運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上,提供了Python、Ruby、MATLAB等語言的接口,實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。用opencv_creatsamples樣本生成器與opencv_traincascade級(jí)聯(lián)分類訓(xùn)練器,來訓(xùn)練系統(tǒng)識(shí)別小車的分類器。其次是安裝TensorFlow_python庫,TensorFlow是一個(gè)開源的機(jī)器學(xué)習(xí)軟件資源庫。它既是一個(gè)實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法的接口,也是執(zhí)行機(jī)器學(xué)習(xí)算法的框架。它能夠支持多種開發(fā)語言,可在異構(gòu)系統(tǒng)上進(jìn)行移植,支持異構(gòu)分布式系統(tǒng)部署。用它來搭建深度學(xué)習(xí)網(wǎng)絡(luò),可實(shí)現(xiàn)交通信號(hào)燈按車流量的變化實(shí)時(shí)學(xué)習(xí)優(yōu)化的功能[5-6]。
用作目標(biāo)檢測的高斯混合模型(Mixture of Gaussians,MOG2)是一種利用背景減除原理的背景分割器。因?yàn)檎麄€(gè)圖像識(shí)別在得到結(jié)果之前會(huì)經(jīng)過很多次的分類模型運(yùn)算,規(guī)定一個(gè)閾值,在進(jìn)行分類模型運(yùn)算之前對圖像上的檢測框進(jìn)行檢測,過濾較小的檢測框達(dá)到減少分類模型運(yùn)算次數(shù)的目的[7]。經(jīng)過多次閾值改變的測試,最適合實(shí)驗(yàn)中小車檢測的閾值是2 000。小于這個(gè)閾值的檢測框就會(huì)被過濾掉,剩下的檢測框就是能夠被作為進(jìn)一步檢測是否為小車的物體。通過MOG2的處理,閾值小于2000的被檢測物體將會(huì)被默認(rèn)為不是小車,系統(tǒng)將其直接刪除,在接下來的檢測中不予追蹤,能夠縮小接下來的追蹤范圍,圖2為MOG2處理后的圖像,圖中綠框是經(jīng)過MOG2處理后即將進(jìn)行下一步檢測處理的物體,可以看出本次處理后已經(jīng)得到該畫面內(nèi)的所有小車。
圖2 小車識(shí)別圖像
目標(biāo)追蹤在于實(shí)現(xiàn)捕捉動(dòng)態(tài)的小車,核相關(guān)濾波算法(Kernel Correlation Filter,KCF)是一種追蹤效果和追蹤速度都十分突出的鑒別式追蹤方法,在檢測過程之中能夠精確到對每一幀圖像進(jìn)行對比。在小車的識(shí)別中,首先是訓(xùn)練一個(gè)目標(biāo)檢測器,再預(yù)測下一幀小車位置,然后用目標(biāo)檢測器去檢測該位置是否確實(shí)符合預(yù)測結(jié)果,最后使用新的檢測結(jié)果來更新現(xiàn)有的訓(xùn)練集從而達(dá)到更新目標(biāo)檢測器的效果[8]。
在整個(gè)跟蹤過程中訓(xùn)練的目的就是找到樣本訓(xùn)練集(xi,yi)目標(biāo)函數(shù):
上述樣本訓(xùn)練集中xi為行向量,yi為列向量,公式中的w表示列向量權(quán)重系數(shù),通過最小二乘法求解w得到:
公式中λ是正規(guī)化參數(shù),用來防止過擬合。其矩陣形式為:
公式中X=[x1,x2,...,xn]T的每一行都表示的是一個(gè)樣本,y是列向量,每個(gè)元素都有一個(gè)樣本標(biāo)簽與之相對應(yīng)。由此可以得出w的解為:
該式是針對實(shí)數(shù)域的,后續(xù)計(jì)算是在復(fù)數(shù)域進(jìn)行,所以將該式進(jìn)行變換得到:
其中XH表示的是共軛轉(zhuǎn)置矩陣,可理解為XH=(X*)T。
將測試算法簡化到一維可表示成:
那么x的一個(gè)循環(huán)位移操作可以用置換矩陣Px=[xn,x1,x2,...,xn-1]T表示,這樣Px就會(huì)讓x在其豎直方向上移動(dòng)一個(gè)元素,得到相對應(yīng)的新元素。
對小車跟蹤就是使用這一原理,先根據(jù)前一幀圖像中小車信息來預(yù)測出下一幀中小車信息,再在下一幀圖像中用實(shí)際小車信息與預(yù)測小車信息做比對,最終得到追蹤結(jié)果。由于這種方法能夠細(xì)化到每一幀圖像對比,實(shí)現(xiàn)動(dòng)態(tài)跟蹤功能的可靠性較高。
模型訓(xùn)練是以Keras提供的數(shù)據(jù)增強(qiáng)功能為基礎(chǔ)實(shí)現(xiàn)的。其主要的功能也是為了防止過擬合,在模型訓(xùn)練過程中使用了ImageDataGenerator,目的是將文件夾里面的一些原始數(shù)據(jù)轉(zhuǎn)化成為生成器來提供給模型使用。在模型訓(xùn)練的過程之中還將EarlyStopping引入,以保證在訓(xùn)練過程中模型準(zhǔn)確度不再上升時(shí)能夠自動(dòng)終止訓(xùn)練[9]。
圖3為系統(tǒng)測試的硬件平臺(tái),圖4為系統(tǒng)的數(shù)據(jù)處理與顯示模塊。
圖3 系統(tǒng)測試硬件平臺(tái)
圖4 數(shù)據(jù)處理與顯示模塊
下頁圖5為截取一輛車在通過攝像頭監(jiān)視路段時(shí)連續(xù)四幀的追蹤過程,可以看出每一幀的處理都十分明顯,達(dá)到了在圖像每一幀中追蹤小車的目的[9-12]。
基于基礎(chǔ)方案訓(xùn)練參數(shù)組,以基礎(chǔ)方案的規(guī)則通過numpy庫產(chǎn)生5 000組以各路口車流量為輸入x,各路口紅綠燈時(shí)長為標(biāo)準(zhǔn)輸出y的數(shù)據(jù)。然后輸入前面搭建好的TensorFlow神經(jīng)網(wǎng)絡(luò)中,進(jìn)行5 000次訓(xùn)練,得出基于基礎(chǔ)方案的參數(shù)組值。然后進(jìn)行前向傳播,使用TensorFlow進(jìn)行交通燈時(shí)間分配。
將小車識(shí)別功能應(yīng)用到交通路段車流監(jiān)測,當(dāng)小車成功被識(shí)別之后將其記數(shù),通過對一個(gè)周期內(nèi)的各路段車流量進(jìn)行計(jì)算之后求得下一個(gè)周期四個(gè)路段綠燈時(shí)長,即時(shí)緩解交通路段的問題。鑒于交叉路口復(fù)雜的實(shí)際情況,為便于測試,對時(shí)間進(jìn)行一定比例縮減,主要思路為:通行方向車輛數(shù)較少,而另一方向車輛數(shù)較多卻在等待時(shí),下次通行時(shí)長將主要轉(zhuǎn)移到車輛數(shù)較多方向,緩解該方向交通壓力。在此過程中,如果車輛數(shù)較少方向的車輛數(shù)增加,則下次需重新分配通行時(shí)長,從而實(shí)現(xiàn)車輛數(shù)較多方向始終優(yōu)先通行。圖6、圖7分別為系統(tǒng)車輛識(shí)別和車流監(jiān)測時(shí)的圖像。
圖5 連續(xù)四幀的小車追蹤過程
系統(tǒng)基于樹莓派和嵌入式硬件平臺(tái)設(shè)計(jì),采用ZigBee通信技術(shù),利用OpenCV和Keras設(shè)計(jì)了圖像處理算法程序,將車輛識(shí)別處理與交通燈時(shí)長智能控制相結(jié)合,測試與實(shí)驗(yàn)結(jié)果表明,系統(tǒng)能夠準(zhǔn)確地識(shí)別車輛,進(jìn)行車流監(jiān)測,可根據(jù)路段的車流量實(shí)時(shí)調(diào)節(jié)交通信號(hào)燈的通行時(shí)間,有效地提高了交通運(yùn)輸效率、緩解了城市的交通運(yùn)輸壓力,具有較好的推廣意義和實(shí)用價(jià)值。
圖6 車輛識(shí)別圖像
圖7 車流監(jiān)測圖像