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