基于BP神經(jīng)網(wǎng)絡(luò )的交通燈信號識別系統設計
交通燈信號識別系統作為智能交通信息化系統當中最基本的部分,有著(zhù)至關(guān)重要的作用。我國最近幾年的駕車(chē)出行比例逐年升高,但交通燈設置仍然存在不合理的現象。原本固定的交通燈等待時(shí)長(cháng)很難能適應路口的動(dòng)態(tài)變化情況,如上下班高峰時(shí)段、復雜路口路況、車(chē)流量差異較大等,使得車(chē)流量壓力無(wú)法得到緩解甚至加劇擁堵情況。因此,通過(guò)圖像識別技術(shù)的提高,交通燈信號識別系統可實(shí)現對路口信號燈的實(shí)時(shí)調整,能有效地解決路口出現的擁堵問(wèn)題,從而實(shí)現對路口交通信號燈的控制。
本文引用地址:http://dyxdggzs.com/article/202202/431500.htm本設計運用MATLAB/GUI(圖形用戶(hù)界面)設計實(shí)現交通燈信號識別系統,該系統包括GUI 界面設計、圖像預處理、BP(反向傳播,back propagation)神經(jīng)網(wǎng)絡(luò )設計。首先搜集目標圖像,完成數據庫的建立,接著(zhù)將選取的目標圖像進(jìn)行預處理等操作,最后通過(guò)對數據庫的比較判斷,輸出識別結果。
1 交通燈信號識別系統方案
交通燈信號識別系統的具體實(shí)現方案為:首先對系統具體實(shí)現功能進(jìn)行深入分析,得出GUI 界面需要的控件種類(lèi)和數量,通過(guò)編寫(xiě)每個(gè)控件的回調函數,完成GUI 界面的設計;接著(zhù)將采集到的交通燈信號圖像保存并生成數據庫,進(jìn)行預處理,包括對圖像本身大小的裁剪、色彩對比度的調節、原始圖像的轉化等操作;然后建立BP 網(wǎng)絡(luò ),設置神經(jīng)網(wǎng)絡(luò )訓練次數、訓練目標、學(xué)習效率等相關(guān)參數;最后進(jìn)行系統的各個(gè)模塊運行調試,修改相關(guān)程序,完善設計系統。
交通燈信號識別系統主要由GUI 界面設計、圖像預處理、BP 神經(jīng)網(wǎng)絡(luò )設計三大模塊構成。GUI 界面設計是為了方便地進(jìn)行人機交互,設計出可視化用戶(hù)界面[1,2]。圖像預處理包括對原始圖像尺寸裁剪、對比度調整、旋轉處理等操作。BP 網(wǎng)絡(luò )設計主要是構建網(wǎng)絡(luò )模型,完成各項參數的設置。
神經(jīng)網(wǎng)絡(luò )的建立,首先是對數據庫圖像進(jìn)行預處理等操作,完成網(wǎng)絡(luò )訓練,繪制出灰度圖像和迭代誤差曲線(xiàn):然后將交通燈信號圖像輸入,與數據庫進(jìn)行匹配識別:最后輸出識別結果。
2 交通燈信號預處理
預處理在圖像識別技術(shù)中有著(zhù)舉足輕重的地位,因為圖片本身質(zhì)量參差不齊,每個(gè)圖片的大小光亮等參數各不相同,所以計算機最后識別出的圖像質(zhì)量也各不相同,這直接影響了后面系統的數據分析,會(huì )造成不可彌補的誤差[3,4]。
預處理過(guò)程包括圖像本身的輸入與大小的調整、灰度化處理、向量轉化等操作步驟。
2.1 圖像的輸入與調整
本設計采用BP 網(wǎng)絡(luò )實(shí)現相關(guān)系統的功能,所以需要提前將原始目標圖像建成數據庫。首先要標識總的樣本圖片個(gè)數,接著(zhù)將圖片進(jìn)行保存,建立一個(gè)新數組用來(lái)存放圖像。再對數據庫中的圖片進(jìn)行預處理,然后完成網(wǎng)絡(luò )的訓練,最后從數據庫中任意選取一張圖片進(jìn)行系統的識別,完成識別過(guò)程的仿真。
為了保證輸入圖像在GUI 界面內顯示的美觀(guān)整齊,需要對輸入圖像進(jìn)行修改剪裁,在MATLAB 軟件中可以使用imresize 函數完成。設計中將所有圖像都變成大小為40×40 的圖像,保證了數據庫的整齊。
接著(zhù),對圖像對比度進(jìn)行調節。調用imadjust 函數來(lái)調整圖像的強度變化數值或顏色展現圖。
2.2 圖像灰度化處理
想要提高一個(gè)系統的數據處理速度,減少系統的處理時(shí)間就必須減少系統處理的總數據量。所以在理論技術(shù)中,對圖像進(jìn)行灰度化操作的本質(zhì)就是把原本的三通道R、G、B 色彩圖像進(jìn)行一系列變化處理,轉變成為單通道的灰度圖像。這樣變換使得通道數量減少,系統分析處理數據的時(shí)間就減少,進(jìn)而實(shí)現系統處理速度的改善。
在MATLAB 軟件中使用rgb2gray 函數,對彩色圖像或RGB(紅綠藍)圖像進(jìn)行灰度化處理,轉化為灰度圖像。調用rgb2gray 函數轉換為灰度圖本質(zhì)上是消除色調和飽和度的數據信息,保留了亮度。
2.3 圖像二值化處理
對圖像進(jìn)行二值化處理,也就是將圖像上每個(gè)像素點(diǎn)的灰度值設定成0 或255,最終將一幅圖像完整地呈現出只有黑白色的反差效果。即將256 個(gè)亮度級別的灰度圖像根據已經(jīng)設置的亮度閾值,能呈現出原始圖像的整體特征和局部特征的二值化圖像。
為了獲得理想的二值化圖像,通常使用完全封閉且相互連通的邊界來(lái)定義不交互重疊的區域。如果圖像中有像素點(diǎn)的灰度值大于或等于特定閾值,則該像素點(diǎn)被判定為屬于特定物體的范圍,灰度值表示為255;如果這些像素點(diǎn)判斷出來(lái)屬于物體范圍之外,則它們的灰度值設置成0,表示這些點(diǎn)是圖像背景或屬于目標物體以外的區域。
在MATLAB 軟件中,使用im2bw 函數對目標圖像進(jìn)行二值化處理。
3 BP神經(jīng)網(wǎng)絡(luò )的選用與建立
本設計選用了BP 神經(jīng)網(wǎng)絡(luò )。BP 神經(jīng)網(wǎng)絡(luò )是一種帶有隱含層的多層前饋網(wǎng)絡(luò ),在人工神經(jīng)網(wǎng)絡(luò )與實(shí)際運用結合中,BP 神經(jīng)網(wǎng)絡(luò )廣泛應用在函數逼近、模式識別、數據壓縮等模塊。
基本BP 算法包括信號的前向傳播和誤差的反向傳播兩個(gè)過(guò)程。即計算誤差輸出時(shí)按從輸入到輸出的方向進(jìn)行,而調整權值和閾值則從輸出到輸入的方向進(jìn)行。正向傳播時(shí),輸入信號通過(guò)隱含層作用于輸出節點(diǎn),經(jīng)過(guò)非線(xiàn)性變換,產(chǎn)生輸出信號,若實(shí)際輸出與期望輸出不相符,則轉入誤差的反向傳播過(guò)程。誤差反傳是將輸出誤差通過(guò)隱含層向輸入層逐層反傳,并將誤差分攤給各層所有單元,以從各層獲得的誤差信號作為調整各單元權值的依據。通過(guò)調整輸入節點(diǎn)與隱層節點(diǎn)的聯(lián)接強度和隱層節點(diǎn)與輸出節點(diǎn)的聯(lián)接強度以及閾值,使誤差沿梯度方向下降,經(jīng)過(guò)反復學(xué)習訓練,確定與最小誤差相對應的網(wǎng)絡(luò )參數( 權值和閾值),訓練即告停止。此時(shí)經(jīng)過(guò)訓練的神經(jīng)網(wǎng)絡(luò )即能對類(lèi)似樣本的輸入信息,自行處理輸出誤差最小的經(jīng)過(guò)非線(xiàn)形轉換的信息。
MATLAB 軟件內的神經(jīng)網(wǎng)絡(luò )工具箱提供了大量方便快捷的函數用于建立神經(jīng)網(wǎng)絡(luò )、學(xué)習和訓練網(wǎng)絡(luò )以及顯示網(wǎng)絡(luò )訓練過(guò)程等。
使用BP 神經(jīng)網(wǎng)絡(luò ),首先要調用函數創(chuàng )建網(wǎng)絡(luò )模型,在本設計中,使用函數feedforwardnet 建立BP 網(wǎng)絡(luò )模型,隱含層神經(jīng)元個(gè)數設定為23。該網(wǎng)絡(luò )可以作為輸入和輸出的映射。當feedforwardnet 神經(jīng)網(wǎng)絡(luò )只設置一個(gè)隱含層時(shí),該網(wǎng)絡(luò )可以擬合任意有限輸入輸出的映射問(wèn)題;并且即使設定一定數量的隱含層神經(jīng)元時(shí),兩層或多層的前饋網(wǎng)絡(luò )也可以實(shí)現有限輸入和輸出的功能。
然后對BP 神經(jīng)網(wǎng)絡(luò )的各個(gè)參數進(jìn)行設置,如訓練次數epochs,訓練目標goal,學(xué)習率lr,檢測次數max_fail,最小梯度min_grad 等。
網(wǎng)絡(luò )各項參數設置完成之后,就要對建立的網(wǎng)絡(luò )模型進(jìn)行仿真訓練,訓練網(wǎng)絡(luò )采用train 函數,網(wǎng)絡(luò )仿真采用sim 函數。
網(wǎng)絡(luò )訓練仿真操作完成之后,最后對需要的數據進(jìn)行分析輸出,將輸出數據與真實(shí)樣本數據比較,繪制曲線(xiàn)圖形,直觀(guān)的表達出網(wǎng)絡(luò )性能的優(yōu)良。
4 交通燈信號識別系統的調試與分析
設計出GUI 用戶(hù)界面后,開(kāi)始運行BP 神經(jīng)網(wǎng)絡(luò )的M 文件代碼,進(jìn)行網(wǎng)絡(luò )訓練。測試系統經(jīng)過(guò)8 次訓練后達到設定要求。
運行BP 神經(jīng)網(wǎng)絡(luò )程序還會(huì )顯示出數據集中已經(jīng)處理好的灰度圖像轉化成二值化圖像后的結果,迭代誤差曲線(xiàn)圖,識別錯誤個(gè)數。最后會(huì )彈出網(wǎng)絡(luò )訓練完成的對話(huà)框。
隨著(zhù)迭代次數的增加,系統誤差越來(lái)越小,系統逐漸趨于穩定,得到的仿真結果數據也越來(lái)越準確,如圖1 所示。圖2 表示在系統仿真過(guò)程中,仿真出的數據與數據集中的原始數據擬合程度非常好,沒(méi)有數據出現錯誤。
圖1 迭代誤差曲線(xiàn)
圖2 識別錯誤個(gè)數
BP 神經(jīng)網(wǎng)絡(luò )模型構建完成,并且已經(jīng)對數據集中的數據進(jìn)行網(wǎng)絡(luò )訓練之后,導入交通燈信號圖像,進(jìn)行目標圖像與數據庫中樣本圖像的匹配,完成交通燈信號圖像的識別,將識別結果輸出到空白欄中,顯示目標圖像的名稱(chēng)。兩組測試數據識別結果分別如圖3、4 所示。
圖3 測試結果一
圖4 測試結果二
兩組測試結果都正確識別出了交通燈信號圖像的標志。再次增加數據集,進(jìn)行大量測試后的結果證明設計的交通燈信號識別系統能完成識別功能,且識別性能良好。
參考文獻
[1] 厲俊.基于MATLAB/GUI圖像處理系統的設計與實(shí)現[J].軟件工程,2020,23(05):59-62,30.
[2] 張廣才,萬(wàn)守鵬,何繼榮.MATLAB/GUI數字圖像處理系統開(kāi)發(fā)設計[J].軟件, 2019,40 (11):123-127.
[3]錢(qián)弘毅,王麗華,牟宏磊. 基于深度學(xué)習的交通信號燈快速檢測與識別[J].計算機科學(xué),2019,46(12):272-278.
[4] 田佳欣.基于圖像處理的智能交通燈控制系統[J].電子制作,2017(21):33-35.
(本文來(lái)源于《電子產(chǎn)品世界》雜志2022年2月期)
評論