基于神经网络的玻璃瓶气泡和结石分类研究
2012-01-07吴浪
吴 浪
(1.韶关学院计算机科学学院,广东韶关 512005; 2.中南大学信息科学与工程学院,湖南长沙 410083)
目前大部分国内玻璃瓶生产厂家仍采用人工检测方法去检验玻璃瓶的气泡、结石,这种方法的检验效果容易受人眼分辨能力和易疲劳等主观因素的影响,无法保质保量地完成检测任务.采用数字图像、模式识别和人工智能技术的计算机在线视觉检测方法来识别玻璃瓶的气泡、结石方法既提高了检测效率又可以使分析结果更具客观性,同时为工程技术人员提供有价值的统计数据,让他们在线调整工艺参数,改进生产过程.BP神经网络是一种反向传递并修正误差的多层神经网络,它是各种神经网络模型中具有代表意义的一种神经网络模型,也是当前获得广泛应用的神经网络模型之一[1].应用BP神经网络于玻璃瓶气泡、结石在线检测使系统具有很强的学习和自适应能力,有较好的分类效果.由于在线视觉检测系统实时性要求较高,以及生产环境复杂造成图像预处理后不可避免出现的噪声点的影响,给识别工作带来了困难.根据噪声点与气泡、结石的明显特征和结合线性单输出分类器与BP神经网络的优缺点,设计在BP神经网络分类器前加入一级线性单输出预分类器和采用附加动量的BP网络改进算法能够提高训练速度、检测速度和识别的精度.
1 前馈神经网络的两种应用模型
人工神经网络按照按照网络拓扑结构可分为前馈网络和反馈网络两大类[2].所谓反馈网络是指它的输出信号通过与输入连接而返回到输入端;而前馈网络的特点是信号的流向从输入通向输出.将两个或多个人工神经元并联起来,即可组成一个神经网络,其中每一个神经元产生一个输出,这样的网络就是单层神经网络;将两个以上的单层神经网络级联起来则组成多层神经网络,它的第一层称为输入层,最后一层称为输出层,其他的中间层称为隐含层,所以一个多层网络至少有三层,即输入层、输出层和一个隐含层.常见的前馈神经网络的两种应用模型有感知器与BP神经网络.
1.1 感知器[3]
感知器是二层前馈网络,模型如图1所示.它具有结构简单、学习过程收敛很快,识别速度快的特点.其输出函数在本系统中采用一般的阈值函数.
图1 单输出感知器
学习算法描述如下:学习的目标是通过改变权值来使神经网络由给定的输入得到给定的输出.作为分类器,可以用已知类别的模式向量作为训练集,当输入为属于第j类的特征向量X时,应使对应于该类的输出y=1,而其他神经元的输出则为0(或者-1).假设理想的输出为:
Y=(y1,y2,…,ym)T
实际的输出:
为了使实际的输出逼近理想输出,可以反复依次输入训练样本集X,并计算出实际的,对权值w做如下修改:
其中:
1.2 BP神经网络
BP神经网络是一种具有多层误差反向传播的前馈网络,其学习过程主要由输入信息的正向传播和误差反向传播组成.正向传播是输入信号从输入层经过隐含层,传向输出层,在输出端产生输出信号.在信号传递的过程中网络的权值是不变的,每一层神经元的状态只影响下一层神经元的状态.如果在输出层得到的输出和期望输出的偏差比较大,则转入误差信号的反向传播.误差信号的反向传播就是误差信号从输出端传向输入端.在这个过程当中,网络的权值由误差反馈进行调节.通过不断的修改网络的权值从而使得网络的输出不断的逼近期望值.反向传播算一般采用梯度法修正权值,要求输出函数可微,一般采用Sigmoid函数.本系统采用三层BP神经网络来实现二次分类,模型如图2.
图2 BP神经网络模型
其主要学习算法描述如下[4]:
(1)选择一组训练样例,每一个样例由输入信息和期望的输出结果两部分组成.一般来说,神经网络的输入信息是一个向量 (X1,X2,…,XNi),我们称之为输入向量,神经网络的输出信息也是一个向量(Y1,Y2,…,YNo),我们称之为输出向量.
(2)从训练样例集当中取一样例,把输入信息输入到网络中.
(3)分别计算经过神经元处理后的各层节点的输出.
(4)计算网络的实际输出和期望输出的误差.
(5)从输出层反向计算到中间隐层,并按照能使误差向减小最快的方向的原则,调整网络中各神经元的连接权值.
(6)对训练样例集当中的每一个样例重复 (3)-(5)的步骤,直到整个训练样本的误差达到要求时为止.
2 玻璃瓶气泡和结石检测分类器设计
2.1 气泡和结石识别问题的描述
计算机在线视觉检测玻璃瓶气泡和结石的基本流程如图3:
图3 气泡和结石识别流程图
图像预处理:对采集的原始灰度图像进行滤波、去噪和二值化而后分割处理.经图像预处理分割后,确定待识别的主要目标有三种,一类为气泡,一类为结石,一类为噪声点,如图4.
图4 待识别的目标分类
特征提取与选择:根据原始物理感兴趣区域的测量空间提取的多个特征和先验知识,有效选取可用于分类识别的特征来构成用于分类识别的特征空间.在本系统主要提取平均灰度、周长、圆形度、形状参数、离心率和面积等六个特征用于分类识别.
神经网络二级分类识别:由于玻璃瓶生产环境的复杂性,以及图像预处理带来的噪声点干扰点,为实时在线识别气泡和结石带来了一定的困难和计算量.根据实时检测速度要求,用结构简单的二层单输出的感知器用于线性预分类器,仅使用平均灰度、面积和圆形度三个特征值构成的三维特征空间可将噪声点与气泡、结石用超平面区分开.而后再用BP神经网络对特征较复杂的气泡和结石进行二次分类,这时使用的是平均灰度、周长、圆形度、形状参数、离心率和面积组成的六维特征空间.
2.2 分类器的设计
把噪声标为一类,气泡标标为二类,结石为三类,分类流程如图5.
图5 气泡和结石的分类流程
对二层单输出感知器,我们采用的简单阈值输出函数如下:
感知器仅能解决线性可分的分类问题,但输出结果是输入值的简单线性运算,运算速度快,且收敛性不受初始值影响,在这充当预分类器,减轻了不必要的运算负荷,其中θ为阈值.
BP神经网络具有非线性映射、较强自适应和容错能力,能适应于复杂分类的环境,在这充当二次分类器.但是由于它的学习算法较为复杂,训练时间较长,易陷入局部最小点,所以在实际应用中,必须根据问题环境来设计好神经网络构造参数,采用改进的BP算法.就气泡和结石的分类问题,我们采用附加动量的BP网络改进算法,该方法是在反向传播过程中在每一个权重和阈值的变化上加上一项正比于前次权重和阈值变化量的值,它减小了学习过程的振荡趋势,从而改善了收敛性,找到更优的解.构造BP神经网络分类器过程如下:
(1)确定输入层、隐含层、输出层的节点数,分别表示为N、M和K.输入层N是根据特征向量空间维数而定的,在这里设为6,输出层K由要区分的类数而定,在这设为2,当然也可采取编码方式.而确定隐含层中神经元个数是至关重要的,隐含层神经元个数的过少或过多将导致神经网络的学习能力不够或归纳能力很差.隐含层神经元数目较少时,网络每次学习时间相对较短,但有可能因为映射容量不够,使整个网络权值矩阵无法包含全部学习样本中的信息,导致权值疲于来回调整而无法达到全局最小.隐含层神经元数目较大时,学习能力得到增强,但网络每次所需的学习时间相对较长,网络需要的存储容量也随之变大.网络隐含层神经元的个数应慎重选择,使其尽量兼顾各方面的影响[5].目前确定隐含层神经元个数的办法是对于给定的输入输出模式,通过反复调试得到合适的值.隐含层神经元个数选择经验公式为:
其中a为1~10之间的整数.这里取M为12.
(2)输出函数采用S型函数,如下公式所示:
BP神经网络学习过程如下[6]:
(1)归一化训练样本的特征向量值.由于采集的各数据单位不一致,因而须对数据进行 [-1,1]归一化处理,以改善训练网络的收敛性.
(2)对网络各层节点的连接权值和阈值进行初始化,将其初始化成 [-1,+1]区间内的随机数.
(3)正向传播.设有L个训练样例,对每个输入样例包括输入向量X和期望输出向量Y,逐层正向计算网络各层节点的实际输出.对于隐层第i个节点 (i=1,2,…,M)和输出层第i个节点 (i=1,2,…,K)输出分别为:
其中,W′ij是隐层第i个节点关于输入层的第j个节点的连接权值,是来自于输入层θ′i的第j个节点的输入值,是隐含层第i个节点的阈θi值;Wij是输出层的第i个节点关于隐层的连接权值,是输出层第i个节点的阈值.
(4)计算当前训练样例的输出误差.设当前的训练样例的实际输出向量O,则当前训练样例的输出误差为:
(5)反向传播.根据当前训练样例所产生的输出值,反向逐层计算网络各节点的偏差信号δ,并根据这个偏差信号来调整网络各节点的连接权值和阈值.对输出层第i个节点和隐层第i个节点的偏差分别为:
然后调整输出层和隐含层的各节点连接权值和阈值如下:
ΔWij(t+1)=η δiOi+α ΔWij(t)
Wij(t+1)=Wij(t)+ΔWij(t+1)Δ
θi(t+1)=η δiOi+α Δ θi(t),
θi(t+1)=θi(t)+Δ θi(t+1)
再调整输入层和隐含层的各节点连接权值和阈值如下:
ΔW′ij(t+1)=η δ′iHi+α ΔW′ij(t)
W′ij(t+1)=W′ij(t)+ΔW′ij(t+1)
Δ θ′i(t+1)=η δ′iHi+α Δ θ′i(t)
θ′i(t+1)=θ′i(t)+Δ θ′i(t+1)
以上公式中的η为学习率参数,一般取值在0.1~3之间,α为惯性项系数,一般取值在0.9~1之间.
(6)计算神经网络的输出误差:
若E 取气泡、结石、噪声点训练样本各70个,进行训练.初始化预线性分类器和BP二次分类器各节点间权值于 [-0.3,0.3]间,预线性分类器输出节点初始阈值设为0.5,学习率参数设置为0.25,最大迭代步数设为100,最后在训练步数为9时终止;BP二次分类器学习率参数设为0.15,惯性项系数设为0.9,最大迭代步数设500,最后在训练步数为85时终止,但如果没有加入惯动量,BP网络无法收敛. 取气泡、结石、噪声点各65个测试样本对以上训练好的分类器进行分别测试,其中预线性分类器识别率为98.5%,误识率为1.5%.BP二次分类器识别率为93.8%,误识率为3.8%,拒识率为2.4%. 实验表明,用于玻璃瓶气泡和结石识别的神经网络分类器前级预线性分类器减轻了不必要的运算负荷,同时后级BP网络分类器的非线性映射能力能完成样本特征复杂情况下的分类,基本上能满足在线检测的实时速度和分类精度要求.同时两级分类器可并行训练,提高了训练速度. [1]张义忠,冯振声.基于神经网络的复杂电子装备故障诊断系统的仿真研究 [J].计算机仿真,2000,17(4):39-42. [2]HYVARINEN A.Independent component analysis applied to feature extraction from contourand stereo images[J ].Network:Computation in Neural Systems,2002,11(3)191-210. [3]边肇祺,张学工,等.模式识别 [M].北京:清华大学出版社,2001:253-254. [4]王洪元,史国栋.人工神经网络技术及其应用 [M].北京:中国石化出版社,2003. [5]黄瀚敏,易正俊,汪先矩,汪瑞芳.基于神经网络的字符识别技术研究 [J].重庆大学学报 (自然科学版),1999,22(6):61-62. [6]胡纪五,王卫东.带有惯性附加项的神经网络训练方法的研究 [J].计算技术与自动化,1999,18(2):16-22.3 实验结果
4 结语