魏超-基于GA-BP算法的字符识别

Download Report

Transcript 魏超-基于GA-BP算法的字符识别

基于GA-BP算法的字符识别
导师:师黎
姓名:魏超
一、研究的背景及意义
二、研究方法
三、关于本设计的一些概念
四、设计思路
五、总结
一、研究的背景及意义
计算机是现代最有效的信息处理工具,大量的信息处
理工作只能由计算机来完成。要用计算机来进行信息处理,
首先必须把信息转换成可由计算机直接处理的形式,也就
是把信息量化或符号化。在当今高度信息化的社会里,如
何快速高效地将文字输入计算机,己成为影响人机接口效
率的一个重要瓶颈。围绕这一问题,人们提出了各种解决
方案。利用各种识别算法分析文字形态特征,判断出文字
的标准编码,并按通用格式存储为计算机的文本文件。
二、研究方法
用于字符识别的方法有很多,如模板匹配法、统计决
策法、结构特征法、模糊判别法、逻辑推理法以及神经网
络法等。本设计主要是用神经网络法来实现字符的识别。
神经网络法,其基本原理就是利用神经网络的学习和
记忆功能,先让神经网络学习各个模式类别中的大量学习
样本,以记住各模式类别中的样本特征,然后在识别样本
时,神经网络回忆起以前记住的各模式类别的特征并将他
们逐个与样本特征相比较,从而确定样本所属的模式类别。
网络的输入是字符的特征向量,输出是字符的分类结果。
三、关于本设计的一些概念
本部分涉及到神经网络、BP神经网络、遗传算法的
一些概念,以及和本设计有关的数字图像方面的问题。
神经网络
人工神经网络(简称神经网络)是神经系统的模拟,包括
了大脑神经系统的许多特征。人脑是一个高度复杂的、非
线性的和并行的计算机器(信息处理系统).人脑能够组织
它的组成成分,即神经元,以比今天已有的最快的计算机
还要快许多倍的速度进行特定的计算(如模式识别、感知
和运动神经控制)。由于目前人类对大脑神经系统及其智
能机理研究水平以及相关科学技术水平有限,神经网络对
大脑神经系统进行了合理的简化和抽象。神经网络是一个
由大量结构简单的处理单元,即神经元,通过广泛的连接
而形成的神经系统。通过大量神经元的并行计算和分布存
储,神经网络具有很强的计算能力和存储能力,因此神经
网络是一种基于大规模并行的分布式处理系统。
BP神经网络
按照连接模式,神经网络模型可以分为前向式神经
网络和反馈式神经网络。
误差的反向传播神经网络(Back-Propagation Network,简称BP网络)是对非线性可微分函数进行权值训练
的多层网络。
BP网络主要用于:
1.函数逼近与预测分析:用输入矢量和相应的输出矢量训
练一个网络,逼近一个函数或预测未知信息;
2.模式识别:用一个特定的输出矢量将它与输入矢量联
系起来;
3.分类:把输入矢量以所定义的合适方式进行分类;
4.数据压缩:减少输出矢量维数以便于传输与存储。
BP算法的一些缺点
(1)从数学上看,模型采用误差梯度下降法,不论是按标
准误差或者是按全局误差,计算流程都是向误差变小的方
向进展。因而在用它解决复杂问题时,往往不能保证全局
收敛而陷入局部极小,致使学习过程失效。
(2)学习算法的收敛速度很慢,尤其是在目标点附近其收
敛速度特慢,效率低。
(3)网络的输入节点、输出节点由问题而定,但隐节点的
选取根据经验,缺乏理论指导。
遗传算法及其特点
遗传算法(GA)是一类借鉴生物界的进化规律(适者
生存,优胜劣汰,遗传机制)演化而来的全局优化自适应
概率搜索方法,具有全局收敛性和并行性,适用性广,并
仅需要较少的先验知识。
GA是将问题求解表示成“染色体”从而构成一群“染
色体”再将它们置于问题的“环境”中,根据适者生存的
原则,从中选择出适应环境的“染色体”进行复制、通过
交叉、变异两种基因操作产生出新一代更适应环境的“染
色体”群,这样一代代地不断进化,最后收敛到一个最适
应环境的个体上,求得问题的最优解。是一种群体操作,
该操作以群体中的所有个体为对象。选择、交叉、变异是
GA的三个主要操作算子。
遗传算法的一些优点
(1)不受搜索空间的限制,如导数的连续性或存在性,事
实上,它不需要任何导数信息。
(2)同时搜索解空间内的许多点,并在优良点附近繁殖,
而且寻优过程仍不断注意搜索解空间中的更优点,因而可
避免传统优化方法仅收敛于局部最优解的不足,并求得全
局最优解。
(3)寻优过程虽然具有随机性,但并不是在解空间中盲目
地进行穷举式的搜索,而是一种启发式的搜索,其趋优的
搜索轨迹,仅占解空间的很小部分,因而可避免过大的工
作量。
遗传算法和神经网络的结合
遗传算法用于神经网络主要是用遗传算法学习神经网
络的权重和学习神经网络的拓扑结构,特别是学习神经网
络的权重,也就是用遗传算法来取代一些传统的学习算法,
利用GA的寻优能力来获取最佳权值。
数字图像
一般的图像都是模拟图像,即图像上的信息是连续变化
的模拟量。如一幅黑白灰度照片上的物体是通过照片上各点
的光的强度不同而体现的,而照片上的光强是一个连续变化
的量。也就是说,在一定的范围内,光强的任何值都可能出
现。对于这种模拟图像只能采用模拟处理方式进行处理。但
为使图像能在数字计算机内进行处理,首先必须将各类图像
转化为数字图像。所谓将图像转化为数字图像或图像数字化,
就是把图像分割成如图的像素的小区域,每个像素的亮度或
灰度值用一个整数来表示。
数字图像的表示方式
抽样量化后的数字图像就是一个灰度值的二维数组。
该数组若用f(x,y)来表示时,其含义是位于坐标(x,
y)处的像素,其灰度值是f(x,y)。
本设计是将图像转化为二值图像,即f(x,y)=0或1.
数字图像的特征提取方法
数字图像的特征提取过程就是提取最能体现这个字符特
点的特征向量。
提取方法多种多样,有逐像素特征提取法,骨架特征提
取法,垂直方向数据统计特征提取法,13特征点提取法,
弧度梯度特征提取法等多种方法。
本设计采用逐像素特征提取法。这种方法是对图像进
行逐行逐列的扫描当遇到黑色像素时取其特征值为0,遇
到白色像素时取其特征值为1,这样当扫描结束以后就形
成了一个维数与图像中像素点的个数相同的特征向量矩阵。
四、设计思路
本部分涉及到图片的预处理,BP网络输入输出的选取,
用遗传算法优化前后结果的对比以及设计总结。
图片的读取及预处理
for pcolum=0:39
p1=ones(20,20);
m=strcat(‘C:\Users\hp\Desktop\zifu\num\',int2str(pcolum),'.jp
g');
I=imread(m);
I1=im2bw(I,0.3);
[m,n]=find(I1==0);
rowmin=min(m);
rowmax=max(m);
colummin=min(n);
colummax=max(n);
I2=I1(rowmin:rowmax,colummin:colummax);
rate=20/max(size(I2));
I3=imresize(I2,rate);
[i,j]=size(I3);
row=round((20-i)/2);
colum=round((20-j)/2);
p1(row+1:row+i,colum+1:colum+j)=I3;
p1=-1.*p1+ones(20,20);
本设计中用的例子
21*41像素点
BP网络的输入与输出
将预处理得到的矩阵按照以下形式变换作为输入样本。
输出向量:
for hh=1:20
p(((hh-1)*20+1):((hh-1)*20+20),pcolum+1)=p1(1:20,hh);
end
然后建立与训练样本相对应的输出向量。
输出向量:
switch pcolum
case{0,10,20,30}
t(pcolum+1)=0
%数字0
case{1,11,21,31}
t(pcolum+1)=1
%数字1
case{2,12,22,32}
t(pcolum+1)=2
%数字2
case{3,13,23,33}
t(pcolum+1)=3
%数字3
case{4,14,24,34}
t(pcolum+1)=4
%数字4
case{5,15,25,35}
t(pcolum+1)=5
%数字5
case{6,16,26,36}
t(pcolum+1)=6
%数字6
case{7,17,27,37}
t(pcolum+1)=7
%数字7
case{8,18,28,38}
t(pcolum+1)=8
%数字8
case{9,19,29,39}
t(pcolum+1)=9
end
%数字9
分别用BP算法和GA-BP算法训练网络,然后仿真出结
果。
其中BP网络训练的参数为:
net=newff(minmax(p),[25 1],{'tansig''purelin'},'traingdx');
net.trainParam.epochs=3000;
%设置训练步数
net.trainParam.goal=0.000001;
%设置训练目标
net.trainParam.show=10;
%设置训练显示格数
net.trainParam.lr=0.05
%设置训练学习率
net=train(net,p,t);
%训练BP网络
s_bp=sim(net,p);
%仿真结果
遗传算法工具箱选用的是gaot工具箱。
包括隐含层数在内的所有参数并没有固定的理论依据,
都是在理论的范围内经多次试验得到的结果。所以致使本
设计仿真得到的结果不可能达到理论上的精确。
tansig函数和purelin函数
tansig函数是双曲正切sigmoid函数,它把神经元的输
入范围从(-∞,+ ∞)映射到(-1,+1)。
purelin函数(线性传输函数)是神经元最简单的传输
函数。他是简单地从神经元输入到输出的线性传输函数,
输出仅有被神经元所附加的偏差所修正。
训练前后的对比
用遗传算法优化后训练的收敛速度明显减小。
这是差别最大的一次结果的对比,随着训练次数的增加,
收敛速度的差别会变小。
优化后训练过程曲线
优化前:
优化后:
仿真结果与期望之间的误差有一定的减小
字符的识别
将测试样本按照图像预处理的方式转变成神经网络的输
入,用训练好的神经网络测试样本。最后按照仿真出的结
果得出识别出的字符。
五、总结
本设计最终的识别精确度完全依赖样本的选定,字符识别
其实应该基于特征的提取。由于本例的目的是检验遗传算法
优化BP网络后取得的效果,所以并未将重点放到字符特征
的提取上,致使本设计的识别精度较低。比如0和6,7和9等
在形态上相近的字符的识别率有待提高。但是就单遗传算法
来优化BP网络权值来说,不管是网络训练收敛的效率还是
仿真结果与期望输出之间的误差都有比较明显的改进。可见,
遗传算法在改进BP网络性能方面还是有比较明显的作用的。