I基于BP人工神经网络的数字识别摘要人工神经网络技术在现在取得了巨大的发展,它具有的高度非线性,使我们能表达一些至少是目前尚无法用计算理论表达清楚的外部世界模型;同时,神经网络所具有的自学习,自组织能力使我们能在与外部世界的交互作用下,实现无法用当前的计算理论表达清楚的功能;对于那些无法建立精确数学模型的系统,神经网络有着独特的优势。本课题主要研究基于BP神经网络的方法来实现数字识别。首先对图像进行灰度化、二值化、平滑去噪、归一化、细化的预处理,以便于进行像素值的提取,对设计好的神经网络进行训练,对比训练的结果与期望的结构,并根据对比的结果对神经网络的一些权值进行修改,最终得到训练好的神经网络。并选择测试样本,进行仿真测试。整个仿真实验中,对含数字的图片进行处理,其数字识别效果可在本课题中的MATLAB仿真实验中体现。关键词:神经网络;灰度化;预处理;仿真测试II目录摘要.............................................................II目录............................................................III1背景介绍.........................................................41.1研究背景.....................................................41.2数字识别的发展现状..........................................41.3本课题主要的研究内容........................................42图像预处理........................................................52.1彩色图像的灰度化............................................52.2灰度图像的二值化............................................52.3梯度锐化....................................................52.4去离散化噪声................................................52.3归一化调整..................................................53模式识别..........................................................63.1特征提取....................................................63.2BP神经网络..................................................63.2.1BP算法的多层感知器.....................................63.2.2BP算法过程.............................................73.3BP神经网络的设计与训练......................................93.3.1BP神经网络的设计方法...................................93.3.2BP神经网络仿真程序设计.................................93.3.3BP神经网络测试.........................................94仿真实验结果......................................................95总结..............................................错误!未定义书签。参考文献.........................................................11III41.背景介绍1.1.研究背景为了解决计算机字符的自动识别、高速加工处理,使计算机达到真正智能化,人们对计算机识别进行了多年的研究,并取得了很大的进步。数字识别是字符识别的一个分支,一般通过特征匹配及特征判别的方法来进行处理,目前识别率还较低。因此,为了提高识别率,还要寻求新的方法和途径。近年来,人工神经网络技术取得了巨大的发展,它所具有的优势:固有的并行结构和并行处理、知识的分布存储、容错性、自适应性、模式识别能力,为手写体数字识别开辟了新的途径。数字识别作为模式识别的一个重要分支,在邮政、税务、交通、金融等行业的实践活动中有着及其广泛的应用。数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值。一方面,阿拉伯数字是世界各国通用的符号,因此,数字是一个重要枢纽。在符号识别领域,数字识别为这一领域提供了一个算法研究的平台。另一方面,数字的识别方法很容易推广到其它一些相关问题,特别是对英文字母的识别,但到目前为止机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题。1.2.数字识别的发展现状模式识别(PatternRecognition)是对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程。它是信息科学和人工智能的重要组成部分。而数字识别作为模式识别的一个分支。在日常生活和科研中具有十分重要的作用。数字识别的算法一般是采用以知识、神经网络、人工智能为基础的模板匹配法、轮廓多边形相关、傅立叶系数法等方法来进行识别的。以上方法识别效率高,但是实现较为复杂。1.3.本课题主要的研究内容MATLAB软件包含了被称为Toolbox的各类应用问题的求解工具。神经网络工具箱正是在MATLAB环境下所开发出来的许多工具箱之一。设计者则可以根据自己的需要去调用工具箱中有关神经网络的设计与训练的程序,使自己能够从烦琐的编程中解脱出来,集中精力去思考和解决问题。人工神经网络(ANN)是理论化的人脑神经网络的模型,是模仿大脑神经网络结构和功能而建立起来的一种信息处理系统。神经网络的一个最主要的功能就是分类,,这个功能有助于机器的模式识别。本课题就是利用神经网络的分类功能,并借助于MATLAB软件的神经网络工具箱,采用具有自适应学习速率和附加动量因子的BP型神经网络,从而实现5罗马数字的模式识别。2.图像预处理由于自然和人为因素影响,可能造成数字图像笔划缺损、噪声严重及几何形变等现象。故识别前必须对图像进行必要的预处理。图像处理流程如图1所示。图1图像预处理流程2.1.彩色图像的灰度化图像输入后一般都是256色彩色图像,因为256色位图调色板内容复杂,很多算法无法进行,所以要进行彩色图像的灰度化。灰度化后灰度图像的RGB值是相等的,只有亮度的不同,灰度值大的像素亮度也大,灰度值小的图像亮度暗,灰度值为255的像素为白色,灰度值为0的像素为黑色。2.2.灰度图像的二值化彩色图像灰度化后每像素只有一个值,即灰度值,二值化就是根据一定标准将图像分成黑白二色。因为本课题所做的是扫描图像,所以用给定阈值法,给定阈值为220。2.3.梯度锐化因为二值化后的图像字体模糊,所以有必要进行梯度锐化。梯度锐化同时对噪声也起一定的去除作用,在这里采取Roberts算子对图像锐化,可以让模糊的边缘变清楚,同时选用合适阈值可以减弱和消除细小的噪声。2.4.去离散噪声由于图像的扫描和传输过程可能夹带噪声,所以需要去离散噪声。具体方法是:扫描整个图像,当发现一个黑色像素就考察和它直接或间接相连的黑色像素有多少,如果大于一定值(具体数值视情况定),就可以认为它非离散点,否则就认为他是离散点,将其从图像中去掉。2.5.归一化调整因为扫描的字符大小存在差异而对同一尺寸的图像进行识别准确率高一些,所以要进行归一化调整。归一化方法是先得到原来字符的高度,并与系统要求的高度比较,得出高度变换系数,然后根据这个系数得到变换后应有的宽度,得出去除噪声图像锐化归一化图像输入灰度转化二值化6高度、宽度后,把新图像里的点按照插值的方法映射到原图像,为了以后特征提取方便,进行BP网络训练时缩短训练时间,高和宽不宜设置过大。这里取高为m,宽为n。3.模式识别3.1.特征提取经过预处理,把原来大小不同、分布不规律的各字符变成大小一样、排列整齐的字符。下面要从预处理完的字符中提取最能体现这一个字符的特征向量,将提取出的训练样本中的特征向量代入BP网络中就可以对BP网络进行训练。提取出待识别的样本中特征向量代入训练好的BP网络中就可以进行识别。在这里采取逐像素特征提取法,方法是对图像进行逐行逐列扫描,当遇到黑色像素时,取其特征值为1,当遇到白色像素时,取其特征值为0。这样扫描结束后就形成一个维数与图像中像素点的个数相同的特征向量矩阵。3.2.BP神经网络3.2.1.BP算法的多层感知器采用BP算法的多层感知器是至今为止应用最广泛的神经网络,在多层感知器的应用中,一般习惯将单隐层感知器称为三层感知器,所谓三层包括了输入层、隐层和输出层。三层BP神经网络如图2所示。图2三层BP网三层感知器中,输入向量为,隐层输出向量为,输出层输出向量为,期望输出向量为,输入层到输出层的权值为,隐藏层到输出层的权值矩阵为7,各层之间的信号关系如下:对输出层有:对隐藏层有:上式中,变换函数f(x)均为单极性sigmoid函数F(x)具有连续可导的特点,以上共同构成三层感知器的数学模型3.2.2.BP算法过程(1)初始化对权值矩阵W、V赋随机数,将样本模式计数器p和训练次数计数器q置为1,误差E置0,学习率η设为0~1内的小数,网络训练后达到的精度设为一个正的小数。(2)输入训练样本对,计算各层输出用当前样本对X,d序列赋值(3)计算网络输出误差设共有P对训练样本,网络对于不同的样本具有不同的误差:采用均方根误差作为总误差:8(4)计算各层误差信号(5)调整各层权值(6)检查是否对所有样本完成一次轮训若p,P,计数器p、q增1,返回步骤(2),否则转步骤(7)。(7)检查网络总误差是否达到精度要求BP学习算法的流程如图3所示。图3BP学习算法的流程图初始化给定输入向量和目标输出求隐层和输出层各单位输出求目标值与实际输出偏差E求隐层单元误差求误差梯度权值学习E满足要求?全部E满足要求结束YYN93.3.BP神经网络设计与训练3.3.1.BP神经网络的设计方法按照BP神经网络设计方法选用两层BP网络。采用newff函数来建立BP网络。其输入节点数为16×16=256,隐层传输函数为Sigmoid函数。假设用一个输出节点表示10个数字,则输出层传输函数为pureline,隐层节点数为)10~1(1256aa,取25。3.3.2.神经网络仿真程序设计构造训练样本集,并构成训练所需的输入向量p和目标向量t.通过画图工具获得数字。本例构造了新宋体12号、8号字体各10个,黑体12号、8号各10个,及宋体加粗18号字体。3.3.3.神经网络测试。由于图像处理的复杂性,对于不同噪声的污染选择不同的方法,选择没有噪声的数字进行测试。选择训练样本中的任意数据进行测试,结构非常正确。选择生成的新宋体8号大小的数字进行测试。结果正确,选择其他类型的字体进行测试,则结果不是完全正确。4.仿真实验的结果简单起见,只对含有单独数字的图片样本进行识别,不涉及分割字符等前期处理。使用BP网络进行数字识别的流程如下:首先利用大量的训练样本来训练网络,以得到以文件形式保存的权值。训练样本为精心选择的可以很好地反映样本可分特性的已知数据。将训练样本图片进行特征提取后,就可以送入BP网络进行训练。其次,训练完BP网络后就可以用它对未知数据进