基于机器视觉的玻璃质量在线检测系统设计 - 图文 联系客服

发布时间 : 星期一 文章基于机器视觉的玻璃质量在线检测系统设计 - 图文更新完毕开始阅读6a9f0e2e0722192e4536f697

青岛大学机电工程学院本科毕业设计(论文) ?x?k+1?=??x?k?+??1-???E?k??x?k? (4-6)

x?k+1?=x?k?+?x?k+1? (4-7)

该算法利用前后两次误差值的大小来做出相应的调整。当上一次得到的修正结果比较大时,则?x?k+1?的符号将与前一次修正结果的符号相反,从而减小震荡;当上一次的修正量过小时,?x?k+1?的符号将与前一次修正量的符号相同,从而起到加速修正的作用。该过程可以被理解为动量因子的存在使网络训的修正量朝一个梯度方向上进行,这样一来网络就会快速完成学习过程,也不会陷入局部极小值点。从公式中可以得到:动量因子?越大,则修正效果就越明显,同时有一定概率造成系统不稳定,难免也会出现振动的情况。

在MATLAB程序编程中,动量BP算法的训练函数为traingdm?3.学习率可变算法

在总结了最速下降BP算法和动量BP算法后,可以发现其学习率是一个常数时,有本身不利的影响,例如其值的大小的人为指定,可能造成不稳定,振动,或者达不到所要求的速率。谁也不能预知最为合适的学习速率,因此,若学习速率可以按照系统的要求不断的自我调节,使其值不断满足要求,则以上的问题就可以迎刃而解。

在实际编程中,学习速率是随着局部误差曲面而作出相应调整的。其目的是为了让每一步的误差都减少,倘若某一步误差上升,则在下一步中将上一步误差去除。若误差在下降,则使学习率也开始下降,调节的方式为学习率乘以一个小于1的增量因子kinc,即

??kinc??k???k+1?=???kdec??k?E?k+1?E?k??。

(4-8)

在MATLAB程序编程中,学习率可变的最速下降训练函数为traingda?变的动量算法的训练函数为traingdx??。

4.弹性BP算法

?;采用学习率可

在多层BP网络中,函数的选择是一个重要步骤,当所期望的结果为一个比较大的区间时,一般采用线性函数为输出层函数;而在隐层中常常采用S性函数,这样可以把复杂的数据缩小到很小的区间中来,比如说函数sigmoid具有这样的特性。从函数图中可以看到,这种S函数在横坐标之比较大时,斜率就越小,这时就会得训练网络带来一个问题:梯度幅值很小,则阈值与权值变化相当缓慢,要使其达到最佳值,要等很长时间。可见输入样

24

青岛大学机电工程学院本科毕业设计(论文) 本与隐层函数类型有很大的联系。

RPROP算法就是来解决此种问题的,由上面分析可知,当梯度幅值过小时,一般方法处理起问题会非常缓慢。所以该算法可以理解为如下公式,即

?x?k+1?=?x?k+1??sign?g?k????x?k?*kinc*sign?g?k???当连续两次迭代的梯度方向相同时???=??x?k?*kdec*sign?g?k???当连续两次迭代的梯度方向相反时???当g?k?=0时??x?k??? (4-9)

式中:g?k?为迭代的梯度,?x?k?为权值或阀值的幅值修正量,其初始值?x?0?,增量因子kinc和减量因子kdec。

在MATLAB程序编程中,RPROP算法的训练函数trainrp??。

4.3 BP网络泛化能力

“过适配”问题一直以来困扰着神经网络算法,对于用来训练网络的样本来说其误差很小,但是对于新的数据,例如待检测数据,则可能会有较大的误差。这种来表示训练好的网络对于新样本误差大小的属性,我们称之为泛化能力。

正常来说网络的规模将影响到网络与样本数据的紧密度,即映射关系。网络规模越大,则其映射的能力就越强,就越容易造成对新数据的误差。所以只要想到一种办法来将规模降低,则提高了系统泛化能力,消除了“过适配”问题。

常用的提高泛化能力的方法有多种,最为常用的即归一化法。 4.3.1 归一化法

(1)网络误差函数

归一化法的原理是通过对系统误差函数进行修改,进而影响到泛化能力。对于前馈网络误差函数:

21N1N2F=mse=??ei?=??ti-ai?Ni=1Ni=1 (4-10)

通过增加一项包含网络权值与阈值的均放值,修改后的误差函数就可以提高网络泛化能力。即

msereg=?.mse+?1-??msw25

(4-11)

青岛大学机电工程学院本科毕业设计(论文) 式中:?误差性能调整率,而

1n2msw=?xjnj=1 (4-12)

由式(4.11)可看出,修正的误差函数,可以得到较小的网络阈值与权值,从而使网络变得平滑,进而提高泛化能力。但是误差函数调整率不容易确定,过大过小都可能达不到要求。在MATLAB程序编程中,归一化均方误差函数为msereg?(2)自动化归一化

David MacKay提出的贝叶斯框架理论对自动归一化提供了理论基础。应用自动归一化时,很重要的一点是让算法运行有效的参数收敛为止。当训练过程中出现“Maximum MU reached”(达到调整系数?的最大值)提示时,训练为止,这是一种经典的理想状况,它表明算法确实已经收敛。另外,如果连续多次迭代,平方和误差(SSE)和平方和权值(SSW)都基本不再变化,也能够确定算法已经收敛,可以按训练能图上的“stop”按钮为止训练。在网络输入与输出向量为 [-1,1]区间时,训练效果会更好一些,当取值范围不在此范围内时,可以先通过函数premnmx??。

?或prestd??进行预处理。

?。

在MATLAB程序编程中,贝叶斯归一化函数为trainbr?4.4 玻璃瓶壁检测系统的BP网络设计

BP网络结构大家都很了解,当应用时要考虑到方方面面,如输入层,隐层以及传输函数等等,针对不同的样本数据结构,就要找到一种最为合适的网络模型。 4.4.1 新建BP网络

(1)网络层数

对于BP网络层数一般靠经验为主,目前还没有确定的法则来说明。即使有一个隐层(当然不限制节点数时)可以完成任意一个非线性映射。有时为了减少网络规模则需要增加一个隐层,而实际证明两个隐层足以完成网络的构建。所以我们也采用两个隐层来进行BP网络的构建。在该玻璃质量检测网络中选用2个隐含层来确保比较准确的神经网络模型。

(2)输入层的节点数

数据的输入首先要经过输入层,其节点数的个数由输入矢量的维数来决定。在该系统中,要求的输入量只有4个,即透光性t,圆形度k0,形状复杂度e与面积S。则输入节点

26

青岛大学机电工程学院本科毕业设计(论文) 数为4。

(3)输出节点数

输出节点数一般通过以下两个方式来确定:

a.设一共要输出m种结果,此时得到 第j种模式,于是去输出形式可以表示为试(4-13):

00...010...00??O=j

j (4-13)

将输出结果用一个m维矩阵表示,若第j中输出,则在第j的位置为1,其他位置为0。当输出全部为0时,说明该系统对检测数据拒识。

b.通过二进制编码形式来描叙输出结果,假如一共有m种输出,则输出节点为logm2。 在该系统中输出为4个节点,选用得二种方式,即0,1,2,3来表示。 (4)隐含层节点数

对于如何来确定隐含层节点数,目前为止没有一个共同指标,与隐层数常取值为2是一样的道理。在适用于该系统模式识别的BP网络,按照经验丰富的工作者的经验,可以按照如下公式进行设计:

n=ni+n0+a (4-14)

式中:n为隐层节点数;ni为输入节点数;n0为输出节点数;a为1~10之间的常数。 按照惯例,该系统选择7个隐层节点。

(5)传输函数

按照惯例BP网络中的传输函数通常采用S型函数:

f?x?=11+e-x (4-15)

之前所说的那样,若在最后一层(输出层)为S型函数,则输出限制在?01,?之间很小的一段区域;若为线型函数,则输出可取任何值。

为此经过考虑,我们再第一隐含层选S型函数,第二层选取线性函数。 4.4.2 系统网络训练

按照采集的数据我们设计好的BP网络程序如下: %输入矢量

p=[1 0.43 77.6 0.5;1 0.39 20.3 0.6;1 0.22 30 0.51;1 0.29 43 0.47;1 0.37 32.3 0.60;1

27