五. BP神经网络进行字符识别
5.1 人工智能简介
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,主要包括计算机实现智能的原理、制造类似于人脑智能的计算机,使计算机能实现更高层次的应用。人工智能将涉及到计算机科学、心理学、哲学和语言学等学科。可以说几乎是自然科学和社会科学的所有学科,其范围已远远超出了计算机科学的范畴,人工智能与思维科学的关系是实践和理论的关系,人工智能是处于思维科学的技术应用层次,是它的一个应用分支。从思维观点看,人工智能不仅限于逻辑思维,要考虑形象思维、灵感思维才能促进人工智能的突破性的发展,数学常被认为是多种学科的基础科学,数学也进入语言、思维领域,人工智能学科也必须借用数学工具,数学不仅在标准逻辑、模糊数学等范围发挥作用,数学进入人工智能学科,它们将互相促进而更快地发展。 5.2 BP神经网络简介
神经网络简介:人工神经网络(Artificial Neural Network,ANN),也称为神经网络(Neural Networks,NN)。即从生物学神经系统的信号传递而抽象发展而成的一门学科。在神经网络中,最基本的单元就是神经元。神经元由3 部分组成:树突,细胞和轴突。树突是树状的神经纤维接受网络,它将电信号传递给细胞体,细胞体对这些输入信号进行整合并进行阀值处理。轴突是单根长纤维,它把细胞体的输出信号导向其他的神经元。神经元的排列拓扑结构和突触的连接强度确立了神经网络的功能。形象的说,神经网络是由大量处理单元(神经元Neurons)广泛连接而成的网络,是对人脑的抽象,简化和模拟,反映人脑的基本特性。能够通过学习过程从外部环境中获取知识,并且它内部的很多神经元可以用来存储这些学到的知识。
5.3 BP神经网络算法及方案设计
信号正向传播:输入信号从输入层经过隐含层,传向输出层,在输出端生输出信这是工作信号的正向传播。在信号传递的过程中网络的权值是固定不变的,每一层神经元的状态只影响下一层神经元的状态。如果在输出层得到的输出和期望输出的偏差比较大,则转入误差信号的反向传播。
误差信号反向传播:网络的实际输出和期望输出的差值就是误差信号。误差信号的反向传播就是误差信号从输出端传向输入端。在这个过程当中,网络的权值由误差反馈进行调节。通过不断的修改网络权值从而使得网络的输出不断的逼近期望值。
图5-2-1 训练算式图 神经网络的激励函数。激励函数将输出信号压缩在一个允许的范围内,使其成为有限值,通常神经元输出的范围在【0,1】或者【-1,1】的闭区间上。常用的基本激励函数有阈值
函数、分段线性函数、Sigmoid 函数。其中Sigmoid 函数也称为s型函数,它是人工神经网络中用的最多的激励函数。S型函数的定义如下:
f(x)?1 公式(1) ?x1?e神经网络的反馈调节。在误差信号的反向传播中,网络不断的修正各个节点的权值。 设有含n个节点的BP网络,采用s型激励函数。
BP网络的学习过程。
BP学习算法可以归纳如下:
第一步 设置变量和参数,其中包括训练样本,权值矩阵,学习速率。 第二步 初始化,给各个权值矩阵一个较小的随机非零向量。 第三步 输入随机样本。
第四步 对输入样本,前向计算BP网络每层神经元的输入信号和输出信号。
第五步 由实际输出和期望输出求得误差。判断是否满足要求,若满足转第八步;不满足转第六步。
第六步 判断是否已经到了最大迭代次数,若到,转第八步,否则反向计算每层神经元的局部梯度。
第七步 根据局部梯度修正各个矩阵的权值。
第八步 判断是否学习完所有的样本,是则结束,否则转第三步。 BP学习中需要注意的几点:
A. 权值的初始化。权值的初始值应该选择均匀分布的小数经验值。初始值过大或者过小都会影响学习速度。为了避免权值的调整是同向的,应该将初始值设为随机数。
B. 初始权值不要太大。否则可能会处于误差平面较平坦的区域,从而导致算法无法收敛,训练失败。
C. 神经元的激励函数是s型函数。所以如果函数的渐近值是0,1的话,期望输出只能是小于1大于0的数,而不能是1或者0,否则可能会导致算法不收敛。在程序中建议读者用0.1来代表0,0.9代表1。
5.4 BP神经网络算法程序实现
BP网络的一个重要的用途就是用于模式识别。我们的任务是要设计并训练出一个可行、高效的BP网络,以实现对0到9 、A到Z共36个字符的识别。
经图像预处理过程之后,可以将最终提取到的字符的特征送入BP网络进行训练及识别了。这里,假设我们设定的字符标准归一化的宽度为18,高度为35。采用十三特征法得到字符特征,则网络输入维数为13维,即输入节点有13个。设计BP网络的关键之处在于高效的特征提取方法、大量有代表性的训练样本、高效稳定速收敛的学习方法。 BP网络应用过程如图所示。
图5-4-1 BP网络应用流程图
下面来讲讲BP网络三个层的神经元数目的确定。这也是BP网络设计的关键。BP网络应用的第一步就是要用已知训练样本来训练BP网络。这里,BP网络的输入层的结点个数,为图像预处理后所输出的特征的维数。例如,我们采用了18×35归一化,特征提取采用的是十三征提取方法,这样,对于每一个输入样本,就13个特征。所以就可以确定,输入层的结点数为13。
对于隐层的结点数,没有什么硬性规定,一般来说,隐层神经元的数目越多,那么BP网络也就越精确,训练时间也越长。但要注意,隐层神经元不易选取太多,否则会造成识别率的急剧下降,也会降低网络的抗噪声能力。在本程序中,我推荐使用160个隐层神经元。读者可以自行测试一下,当将隐层神经元个数改为300个时,训练时间和识别率的变化。看来神经元的个数也不是越多越好,过犹不及。
对于输入层的结点数的确定,这决定于我们如何设定标准输出。也就是说如何对目标期望输出进行编码。在本程序中,笔者采用了8421码来对0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P、Q、R、S、T、U、V、W、X、Y、Z来进行编码。对于输出“0”,我们采用(0,0,0,0,0,0)这样的目标输出向量来表示,对于输出“1”,我们采用(0,0,0,0,0,1)这样的输出向量来表示,同理,对于输出“9”,我们采用(0,0,1,0,0,1)这样的输出向量来表示。这样一来,我们就可以确定输出层的神经元数目为:6。也即为输出向量的维数。
其实通过后续编程实践我们可以发现,当采用(0,0,0,0,0,0)这样的目标输出向量的时候,BP网络无法收敛。那是因为我们采用的激活函数(传输函数)的输出永远不可能达到0或1,而只能是接近。所以,在这里我们要纠正一下目标输出向量。对其重新编码后,最终确定编码方案如下:
0 0.1 0.1 0.1 0.1 0.1 0.1 0 1 0.1 0.1 0.1 0.1 0.1 0.9 1 2 0.1 0.1 0.1 0.1 0.9 0.1 2 3 0.1 0.1 0.1 0.1 0.9 0.9 3
4 0.1 0.1 0.1 0.9 0.1 0.1 4 5 0.1 0.1 0.1 0.9 0.1 0.9 5 6 0.1 0.1 0.1 0.9 0.9 0.1 6 7 0.1 0.1 0.1 0.9 0.9 0.9 7 8 0.1 0.1 0.9 0.1 0.1 0.1 8 9 0.1 0.1 0.9 0.1 0.1 0.9 9 10 0.1 0.1 0.9 0.1 0.9 0.1 A 11 0.1 0.1 0.9 0.1 0.9 0.9 B 12 0.1 0.1 0.9 0.9 0.1 0.1 C 13 0.1 0.1 0.9 0.9 0.1 0.9 D 14 0.1 0.1 0.9 0.9 0.9 0.1 E 15 0.1 0.1 0.9 0.9 0.9 0.9 F 16 0.1 0.9 0.1 0.1 0.1 0.1 G 17 0.1 0.9 0.1 0.1 0.1 0.9 H 18 0.1 0.9 0.1 0.1 0.9 0.1 I 19 0.1 0.9 0.1 0.1 0.9 0.9 J 20 0.1 0.9 0.1 0.9 0.1 0.1 K 21 0.1 0.9 0.1 0.9 0.1 0.9 L 22 0.1 0.9 0.1 0.9 0.9 0.1 M 23 0.1 0.9 0.1 0.9 0.9 0.9 N 24 0.1 0.9 0.9 0.1 0.1 0.1 O 25 0.1 0.9 0.9 0.1 0.1 0.9 P 26 0.1 0.9 0.9 0.1 0.9 0.1 Q 27 0.1 0.9 0.9 0.1 0.9 0.9 R 28 0.1 0.9 0.9 0.9 0.1 0.1 S 29 0.1 0.9 0.9 0.9 0.1 0.9 T 30 0.1 0.9 0.9 0.9 0.9 0.1 U 31 0.1 0.9 0.9 0.9 0.9 0.9 V 32 0.9 0.1 0.1 0.1 0.1 0.1 W 33 0.9 0.1 0.1 0.1 0.1 0.9 X 34 0.9 0.1 0.1 0.1 0.9 0.1 Y 35 0.9 0.1 0.1 0.1 0.9 0.9 Z 使用BP网络来进行数字识别的流程如下:
首先,利用大量的训练样本来训练网络,以得到以文件形式保存的权值。训练样本为精心选择的可以很好的反应样本可分性特性的已知数据。在程序中采用训练样本图片的形式。将训练样本图片进行特征提取后,就可以送入BP网络进行训练。在这里,本程序采用了含有144个字符数据的图像作为训练样本。这副图像是WORD文字处理程序上通过截图转化而来的,如图下图所示。
图5-4-2 144个字符数据图
实验证明,这144个训练样本训练出来的BP网络对于相应字体的数字可以达到99%以上的识别率,但网络的训练时间有点长。训练完BP网络后,就可以用它对为止数据进行识别了。识别首先要经过图像预处理、特征提取,最后送入BP网络识别,直接得到结果。程序需要一些全局变量(这里我们用MFC的类变量来实现)来记录一些必须的数据,当前样本个数,样本字体矩形等。注意网络训练的目的是得到存有36个不同字体字符的信息的权值矩阵,为识别所用,这是整个网络的精髓所在,搞清楚这个关系对用程序构建神经网络非常重要。
图 5-4-2 BP网络两种训练结果
图 5-4-3 BP网络样本识别结果
图 5-4-4 BP网络识别结果
六. 总结与体会
本章详细的分析了一个字符识别系统,介绍了许多图像图形处理的方法,以及在处理字符识别中有针对性的算法。并介绍了利用BP神经网络的相关知识以及用神经网络进行数字识别的整个过程。
在该BP网络的设计及使用过程中主要存在下面几个难题:无法从理论上严格的确定最佳的层数和隐层的神经元数目;存在局部极小值问题,以导致网络没有收敛到最小误差便停止训练了;训练时间过长的问题;对于加噪过多的数据识别率不高的问题;等等。这些问题都在本文中有或多或少的描述和解决。只能通过不断的调试、对比来求最佳数据,然后多次选择不同的初始权值,通过优化网络结构来改进识别效率和效果。
在这次学习中不仅学到了一些关于图像处理的方法,而且从中还锻炼自己的解决问题的能力,最重要的是小组的分工和合作,大家为了完成这个设计,查询了许多的资料,还请教了以前做过该课题的学长。虽然最后的识别效果不是很让人满意,但是初有成果的我们还是感觉蛮有收获的。体会到了课程学习的意义和价值。
参考文献
[1] 求是科技,张宏林,蔡锐. Visual C++数字图像模式识别技术及工程实践. 北京:人民邮电出版设,2003.
[2] 钱稷.基于图像处理的字符识别系统研究:(硕士学位论文).河北:河北农业大学,2007.
[3] 刘建华,牛秦洲,程小辉等.基于特征的印刷体数字符号识别系统[J].桂林工学院学报,2005,25(1):1~3.
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数字图像处理课程设计-晶振表面字符识别(4)在线全文阅读。
相关推荐: