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