基于车型识别的BP算法Matlab实现杜华英1(惠州商贸旅游学校信息技术教研室,广东惠州516057)摘要车型识别具有广阔的应用前景,BP神经网络在车型识别中能够提高车型的识别率。在任何车型大致都可以抽象成一个“工”字型情况下,提取了其中的顶长比、前后比和顶高比这三项相对参数作为BP神经网络的输入参数。采用了三层3-8-3的BP神经网络,并用14对输入参数离线训练之,再用4对新数据进行检验,均得到了预想的期望值。关键词车型识别;BP神经网络;MatlabTheApplicationofBPAlgorithmUsingMatlabBasedonVehicleTypeRecognitionDUHua-ying1(InformationTechnologyOffice,HuizhouSchoolofBusiness&Tourism,Huizhou516057China)Abstract:VehicletypeRecognitionhasawidefutureapplicationprospect.BPartificialneuralnetworkcanimprovetherecognitionrateofvehicletypeintheVehicleTypeAutomaticRecognitionSystem.Anyvehicletypecanbeabstractedintoa工-shapedmode.ThreerelativeparametersareusedastheinputparametersofBPANN.Athreelayered3-8-3BPANNisadoptedandistrainedby14pairinputparameters.TheBPANNistestedby4pairinputparametersandthensomeexpectedvaluesareobtainedinthisprocessing.Keywords:VehicleTypeRecognition;BPNeuralNetwork;Matlab0引言车型识别在现代交通监控和管理中有着非常广阔的应用前景,可应用于高速公路、过桥过路等各类车辆收费站以及大型停车场的自动收费系统。另外,BP神经网络已被人们研究了几十年,技术成熟,是应用最为广泛的一种人工神经网络,在许多科学领域中均具有重要的实用意义,其学习能力和容错能力对模式识别具有独到之处[1]。Matlab作为一个强大的工具软件,具备了数字图像图形和人工神经网络等方面的处理功能,受到了人们的欢迎与追捧。1汽车车型分析特征提取是目标识别中一个非常重要的环节,一个识别系统的识别能力与特征矢量的选取有直接关系。选取的特征要求具有高度的代表性、典型性及稳定性。因此,特征提取是模式识别的关键步骤之一。为了便于分类,必须收集各种车辆的主要技术参数。经过实地观察测量和查找有关车作者简介:杜华英(1975-),女,江西樟树人,惠州商贸旅游学校信息技术教研室讲师、工程师,软件工程硕士,研究方向:神经网络、模式识别。辆的类型数据及资料,通常各类车辆,其车身侧视图可提供车型的一些参数,如:顶蓬长度、车辆长度、车辆高度等信息。由于图像在拍摄时,镜头与车辆间的距离、角度等的微小变化都会造成同一车辆在两次拍摄图像时,上述各参数的绝对大小有可能不相同,这就决定着不能用绝对长度或绝对高度等参数作为车型的识别特征。按汽车的应用功能进行大致的分类,可分为客车、轿车和货车三类。对这三类车型的统计分析,通常选取的特征是:顶蓬长度与车辆长度之比,称之为顶长比;以顶蓬的中垂线为界,前后两部分之比,称之为前后比;顶蓬长度与车辆高度之比,称之为顶高比[1]。按此规则,任何车型大致都可以抽象成一个“工”字型,并使用车辆的顶蓬长度为d,前底长为C1、后底长为C2、高度为h(取顶长中点作中垂线)这四个绝对参数构成三个相对参数。通过对轿车、货车、客车外形的分析,处理了相关的数据,得出车型识别技术的特征值。取各车型的侧视图来进行分析,取特征值d/(C1+C2),d/h,C1/C2作为BP网络的输入,其中d代表顶长,C1、C2分别代表各车自顶长中垂线所分的前后长度,h代表轿车的高度,把各种车抽象成“工”字形,如图1~图3。图1抽象成“工”字形轿车模型图2抽象成“工”字形货车模型dhC1C2dhC1C2图3抽象成“工”字形的客车模型2主要程序思路BP网络中各层结点数的选择对网络的性能影响很大。对输入结点,输入层的结点数通常是由问题的本身决定的。取d/(C1+C2),d/h,C1/C2作为输入的特征值,将选取的特征作为网络的输入向量X={X1,X2,X3},其中X1为顶长比,X2为顶高比,X3为前后比;网络的期望输出为Y1=[100],Y2=[010],Y3=[001],其中Y1,Y2,Y3分别代表卡车,客车和轿车,因此输入层的节点数为3,输出层的节点数也为3[2]。车型的识别结果有3种,所以输出层结点数为3;隐层的结点数是BP网络构建中最具挑战性的问题,隐单元直接影响着网络的容量、学习速度、和输出性能等。首先要确定隐层数,一般认为,增加隐层数可以降低网络误差(也有文献认为不一定能有效降低),提高精度,但也使网络更加复杂化,从而增加了网络的训练时间和出现“过拟合”的倾向,隐层数应该有最优值。Hornik等早已证明:若输入层和输出层采用线性转换函数,隐层采用Sigmoid转换函数,则含一个隐层的MLP网络能够以任意精度逼近任何有理函数。显然,这是一个存在性结论。在设计BP网络时可参考这一点,应优先考虑3层BP网络,即只有1个隐层。一般情况下,靠增加隐层节点数来获得较低的误差,其训练效果要比增加隐层数更容易实现。对于没有隐层的神经网络模型,实际上就是一个线性或非线性(取决于输出层采用线性或非线性转换函数型式)回归模型。在此,仅选取了一个隐层进行BP神经网络的构建。对于隐层节点数目的选择也是一个十分复杂的问题,根据前人的经验,可以参照以下公式设计:annoin(其中n为隐含层神经元数,ni为输入神经元数,n0为输出神经元数,a是1~10之间的常数)。隐含单元数与问题的要求输入输出单元的多少都有直接的关系。隐层节点数太少,网络可能训练不出来,因为隐层节点数少时,局部极小就多,或者不“鲁棒”,不能识别以前没有看到过的样本,容错性差。增加隐层节点数可能改善网络与训练组匹配的精确度,但是隐层节点数太多又使学习时间过长,误差也不一定最佳。隐含层网络的选择原则是在能够解决问题的前提下,再加上一个到两个神经元以加快误差的下降速度即可[3]。为了找到合适的隐层节点数目,最好的办法是在网络的学习过程中,根据自己的结构,C1C2hd最后得到一个大小合适的神经网络模型。根据实际情况,采用三层的BP网络[4],输入结点数为3,隐层结点数为8,输出节点数为3,即3-8-3的网络结构;输入层至隐层以及隐层至输出层,均采用Sigmoid函数。3主要核心代码P为用于训练的车型数据,T为期望输出目标值。net为建立的3-8-3BP神经网络,系统每50步显示一次训练误差的变化曲线,学习率设置为0.6,最大训练循环次数设置为5000,设置目标误差为0.001。Q为4对未知车辆的相关输入参数,B为生成得到的值,B′为期望输出值。P=[0.86450.83290.94980.87350.77970.88050.74530.84560.14730.15260.34210.31640.23110.15340.30050.39620.39620.36870.44440.29210.33190.37450.27470.3331;2.30531.99632.40152.43421.51031.59031.37711.73660.43720.45721.00060.92500.94590.52800.83571.02770.75000.81381.00120.98451.07541.38270.95661.1811;0.92880.96250.94660.89560.93150.94660.95430.97210.39260.45880.51660.18750.13060.51720.18740.18751.52382.88232.18182.30001.48781.36001.48781.5531];%用于训练的车型数据PT=[111111110000000000000000;000000001111111100000000;000000000000000011111111];%期望目标值Tnet=newff(minmax(P),[8,3],{'tansig','tansig'},'traingdx');%建立3-8-3BP神经网络net.trainParam.show=50;%系统每50步显示一次训练误差的变化曲线net.trainParam.lr=0.6;%设置学习率net.trainParam.mc=0.9;%设置动量系数net.trainParam.epochs=5000;%设置最大训练循环次数net.trainParam.goal=1e-3;%设置目标误差[net,tr]=train(net,P,T);%训练BP网络A=sim(net,P);Q=[0.88190.91120.93400.9740;2.35882.43932.8122.5451;0.91560.95470.99120.9702];%新车型的相关参数B=sim(net,Q)%生成得到值BB=0.98960.99080.99540.99230.0151-0.0775-0.3423-0.13950.0215-0.0693-0.3540-0.1185%B′=[1111;0000;0000]4结束语任何车型大致都可以抽象成一个“工”字型,取顶长比、前后比和顶高比这三项相对参数作为BP神经网络[5]的输入参数。另外,还采用了三层3-8-3的BP神经网络,并用14对输入参数离线训练之,再用4对新数据进行检验,均得到了期望的结果。经证明,此Matlab程序能够很好地完成相关任务,并取得了良好的效果。参考文献[1]周红晓.基于BP神经网络的汽车车型识别方法[J].微电子学与计算机.2003,(4):39-41.[2]霍炜,刘大维,王江涛.复杂背景下的车型自动分类研究[J].青岛理工大学学报.2008,29(1):107-110.[3]胡方明,简琴,张秀君.基于BP神经网络的车型分类器[J].西安电子科技大学学报(自然科学版).2005,32(3):440-442.[4]杜华英.基于PSO算法的BP神经网络研究[J].现代计算机(专业版).2009,(02).[5]杜华英,赵跃龙.人工神经网络典型模型的比较研究.计算机技术与发展.2006,(05).[6]李在铭等.数字图像处理压缩与识别技术[M].西安电子科技大学出版社.2000.[7]蒋宗礼.人工神经网络导论[M].高等教育出版社.2001.[8]陶清平,陶白云.基于模糊神经网络的汽车类型自动识别分类系统[J].计算机工程与应用.1998,11.[9]王年,任彬.基于神经网络的汽车车型图像自动识别[J].中国图像图形学报.1998,8.[10]傅明等.一种基于分形与神经网络的汽车车型图像识别法.湖南交通科技.2001,3.[11]张立明.人工神经网络模型及应用[M].复旦大学出版社.1993.[12]苏亮,宋绪丁.基本Matlab的概率神经网络的实现及应用[J].计算机与现代化.2011,(11).[13]全星慧,范武君,张华.基于Matlab的数字图像处理课件设计[J].计算机与现代化.2008,(7).[14]戴永伟,雷志勇.BP网络学习算法研究及其图像模式识别应用[J].计算机与现代化.2006,(11).[15]张海波,董槐林等.基于BP神经网络的较低识别研究[J].计算机与现代化.2008,(5).