基于BP神经网络的交通灯信号识别系统设计

  作者:刘艳华(盐城工学院信息工程学院,江苏盐城224051) 时间:2022-02-25来源:电子产品世界

编者按:设计一个基于数字图像处理的交通灯信号识别系统。系统主要包含三大模块,分别是图像预处理,BP神经网络设计,GUI可视化界面设计。图像预处理进行裁剪图像大小,彩色图转化为灰度图像并进行二值化处理等步骤。BP网络的设计主要是搭建网络模型,完成训练过程并作出分析。最后设计一个可视化用户界面。系统完成后调试程序,输入样本图像检测识别结果。经过大量测试证明,系统实现了识别功能,达到了识别交通灯信号图像的目的,实现了数字图像识别的可视化操作。

交通灯信号识别系统作为智能交通信息化系统当中最基本的部分,有着至关重要的作用。我国最近几年的驾车出行比例逐年升高,但交通灯设置仍然存在不合理的现象。原本固定的交通灯等待时长很难能适应路口的动态变化情况,如上下班高峰时段、复杂路口路况、车流量差异较大等,使得车流量压力无法得到缓解甚至加剧拥堵情况。因此,通过图像识别技术的提高,交通灯信号识别系统可实现对路口信号灯的实时调整,能有效地解决路口出现的拥堵问题,从而实现对路口交通信号灯的控制。

本设计运用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 表示在系统仿真过程中,仿真出的数据与数据集中的原始数据拟合程度非常好,没有数据出现错误。

1645781347513045.png

图1 迭代误差曲线

1645781368240915.png

图2 识别错误个数

BP 神经网络模型构建完成,并且已经对数据集中的数据进行网络训练之后,导入交通灯信号图像,进行目标图像与数据库中样本图像的匹配,完成交通灯信号图像的识别,将识别结果输出到空白栏中,显示目标图像的名称。两组测试数据识别结果分别如图3、4 所示。

image.png

图3 测试结果一

image.png

图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月期)

关键词: MATLAB BP网络 交通灯 202202

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版