版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-PAGEIV-基于BP神级网络的手写数字识别模型设计摘要近年来对手写数字识别的研究一直是递增不减,手写体数字识别的应用性很广,各种数据和编号就是由阿拉伯数字符号组成的,手写数字识别广泛应用于各种行业,例如:编码,报表,票据等等。手写数字识别通常会用到特征辨别,但是此技术还不够成熟,数字识别的准确率还不高。对于处理在不同场景下写有不同的手写数字的资料或手稿,让计算机可以自动识别输入,对数字图像进行处理,进而能够识别出手写数字的研究就显得尤为迫切。我们知道手写数字的书写是没有限制的,不仅数字个数不多,而且每个数字写法非常简单,但是对于不同地区不同人来说,风俗习惯可能会影响对数字的书写。为了提高数字的正确识别率,本文采用BP神经网络的方法。先预处理数字图像,然后对图像进行特征提取,最后,构建识别BP神经网络分类器,并测试网络模型,输出正确的识别结果。训练样本和测试样本的正确识别率分别达到92%和87%,总体来说能很好地对数字进行正确辨认,识别效果很好。关键词:字符识别;预处理;特征提取;BP神经网络目录摘要 III1绪论 11.1研究的背景和意义 11.2字符识别技术的现状 21.3研究目的与内容 31.3.1研究的目的 31.3.2研究的内容 31.3.3组织结构 32理论背景 52.1图像预处理方法 52.1.1字符识别的过程 52.1.2字符识别的方法 62.1.3图像的灰度化 62.1.4图像二值化 62.1.5去噪处理 72.1.6数字倾斜矫正 72.1.7数字图像分割 82.1.8图像的归一化处理 82.1.9图像的细化 82.2特征提取 82.3人工神经网络 92.3.1BP神经网络 92.3.2单一的神经网络 102.3.3神经网络的特点 102.4本章小结 103基于BP神经网络的数字识别算法 113.1算法概述 113.2数字预处理 113.2.1灰度化 123.2.2二值化 123.2.3平滑去噪 123.2.4图像分割 123.2.5细化 133.3特征提取 133.4BP神经网络结构模型参数的选择与确定 133.4.1BP神经网络模型参数选择的重要性 133.4.2输入层和输出层神经元个数的确定 133.4.3隐藏层数与隐藏层神经元个数确定 133.5BP神经网络的网络模型 143.5.1BP神经网络模型的构建 143.5.2BP神经网络算法概述 153.5.3激励函数的选择 153.6本章小结 164实验结果与分析 174.1开发运行环境 174.1.1系统开发环境和运行环境 174.1.2开发工具介绍 174.2手写数字识别 174.3图片数字识别 194.4本章小结 235结论 24参考文献 25致谢 27-PAGE22-1绪论手写数字识别研究从上个世纪开始到现在一直是研究的热点,它的使用价值潜力巨大,在金融、教育等领域应用很广。虽然现在对字符研究有了一定的进步并且相关的手写数字识别产品也已投入应用,但由于不同地区的人书写风格不同,要完全正确地识别手写数字仍然非常困难。使计算机识别纸张上的数字,或者通过输入设备手动输入手写数字,进而完成手写数字的识别,一旦成功应用将大大减少人们对数字的人工识别时间。1.1研究的背景和意义近年来,随着社会的进步和科技的发展,促进了大批新的高新技术的研究,字符识别就是其中的一个研究方向。字符识别作为一个近几十年的新技术,它研发时间虽然不像传统的技术那样长,但是对于它的研究刻不容缓,它不仅仅可以提高工作人员的工作效率节省大量的工作时间,而且字符识别还可以应用在人工智能等方面。例如我国的“三金”项目。此项目的推动很大程度上取决于数据信息的输入,这时能通过字符识别技术自动输入信息,这一定会推动科技的发展。字符识别的发展为中国在相关方面的科技发展和技术进步打下基础。因而,对字符识别的研究就显得意义重大。技术一旦成熟并投入运用,将促进科学的发展。手写数字识别的研究不仅在应用上有很大的价值,而且在理论上也有很大的意义。相对于其他语言来说由于数字的类别少,所以通过研究更简单手写数字,更便于一些新理论的深入分析和验证。通过采用特征匹配和特征识别等技术来处理一些数字,进而识别手写数字。字符识别在理论价值上极其重要。其原因是:一方面,阿拉伯数字被全球每个国家所认可并使用,所以说它的地位不言而喻,当今世界对阿拉伯数字的研究热度只增不减。在字符识别中,字符识别为该领域的算法研究创造了一个新的环境。另一方面,由于数字识别技术研究具有适用性和借鉴性,所以对英文或其他语言识别的相关问题可以借鉴数字识别的方法,但到目前为止,计算机的认知程度还无法与人类的认知相媲美。所以怎样提高计算机识别数字的准确率无疑是一项重大任务。现如今,科技的发展不仅仅需要相关的识别设备,而且我们更需要对数字识别率较好的系统,用来满足人们在生活中的需求。值得欣慰的是,我们已经可以研发出一些简单的识别系统。但是由于识别技术条件的约束,计算机对数字的识别率还无法达到使产品广泛应用。为了提高计算机对字符自动准确的识别,促进了计算机智能化的发展,通过最近几十年的研究,计算机对数字的识别取得了很大的进步。但是由于识别技术条件的约束,计算机对数字的识别率还无法达到使产品广泛应用。因此,为了降低对数字识别的误差,我们必须采用新的方法和手段。最近几十年来,研究人员对人工神经网络技术研究投入了很大的精力,也取得了重大的突破。利用神经网络的并行结构和并行处理的特点,为字符识别开辟了新的道路。1.2字符识别技术的现状早在几十年前,日本的一家公司率先就已经研发出了一种识别产品,这种产品可以分拣邮政编码,这就很好的引领了数字识别的发展潮流。阿拉伯数字应用广泛,它是全球通用的数字,对其研究的热度之高就不言而喻了[1]。人们越来越认识到字符识别研究所带来的巨大效益,对其相关领域的研究成为了一种趋势[2]。字符识别分为两类,一类是联机手写字符识别,另一类是脱机字符识别[3]。联机字符识别的特点是可以实时的对数字进行处理之后进行识别,而脱机字符识别的特点是对字符识别不具有实时性,采取的是非实时的对字符进行识别,相比联机其技术要求更高。在这里主要研究如何使用计算机自动识别纸和其他媒体上手写的阿拉伯数字[4]。近些年来,经过研究人员研究发现,手写数字的数字特征的获取有全局分析和结构分析。模板匹配和特征点提取属于全局分析。结构分析则是提取字符的基本特征,例如:顶点,节点,笔画等[5,6]。通常来说,手写数字的写法不受限制,我们深刻意识到,现如今的很多方案对数字的识别率和准确性还无法满足当今社会发展的需要[7,8]。字符识别的研究对技术的要求很高。主要由于手写数字的书写可能受不同的人在不同的场合或其他环境下的影响,对相同数字书写差距难免很大,要想正确的对这些不同样式的数字进行辨别,这也就极大的考验了对技术的要求[9,10]。其次,我们知道,虽然手写数字的种类不多,虽然只有0-9,一共10个数字,而且他们的笔画简单,不像书写汉字那样复杂,即使是相同的数字其笔迹也有可能会不相同。这就很难开发出一个识别率很高的数字识别系统[11]。为解决这一问题,科研探究人员更需要不断地探索发现新的方法,不断地把已有技术与新技术相互融合,发现更加行之有效的解决方案[12]。1.3研究目的与内容1.3.1研究的目的现如今的识别技术还难以满足当前的实际应用,但是就目前来看,我们对离线手写体数字识别技术的投入很大,在不远的将来其技术一定会取得很大的进步,并且广泛的得到应用。评价一个识别系统的好坏的标准,无疑会包含较高识别率。识别率高受欢迎的程度才会高,倘若没有较高的识别率,研究的价值将会大大的折扣。所以,在当今未完成对数字的理想识别的背景下,如何改进方法提高对数字识别准确率,就显得尤为迫切,识别的准确率越高,才能得到用户的信赖并且在市场上占据一席之地。1.3.2研究的内容本文研究的主要是如何通过快速准确的识别算法,提高字符的识别率,将字符识别应用于实际应用中。首先字符进行预处理,并提取特征。然后建立分类器,并测试网络模型。最后输出正确的识别结果[13]。在识别的过程中,训练样本的选取对BP神经网络的训练至关重要,训练样本数量对数字的识别率影响很大,样本数越多,数字的识别正确率就越高。所以,在本篇论文中,每个数字的训练样本数目为50个,基本上满足对数字训练。1.3.3组织结构全文共分为五章:第一章:简单的对手写数字现如今的背景进行介绍,以及为什么要对数字进行研究,数字识别研究在当今社会有什么具体的意义,对科技发展的影响。并且简要介绍了现如今字符识别的技术方法,最后本文对数字识别研究的目的以及研究的内容进行论述。第二章:理论背景介绍了当今字符识别的相关算法和技术,对字符识别的常规预处理和特征提取的方法进行了阐述说明,提出BP神经网络,引出第三章对数字训练采取的核心算法是BP算法。第三章:全文的核心是BP神经网络算法。对数字进行预处理中的一系列处理。以及对神经网络的结构参数的选择与确定进行了说明,确定了三层神经网络的具体构建的神经元数目,提出了自己的神经模型。第四章:本章主要介绍了系统的开发运行环境,介绍了Matlab软件和其优点,以及展示了对数字处理之后的实验结果,并对实验结果的识别率进行了简略的剖析。第五章:总结全文,对全文研究内容进一步简单叙述,对全文研究的方法和技术以及论文及实现的不足之处进行了说明。MACROBUTTONAcceptAllChangesInDocAndStopTracking2理论背景2.1图像预处理方法2.1.1字符识别的过程现实生活中,人们离不开对字符的识别,而人脑对字符识别的过程大致如下:首先通过眼睛或其他器官从外界环境中捕捉到相关的字符,然后经过不断地训练和学习,让大脑对字符产生记忆,等到下次遇到这个字符时,通过对比之前大脑形成记忆来判断两个字符是否相同,从而完成匹配,这是人类对字符的识别过程。计算机识别字符其实与之类似。在计算机识别字符中,也是需要对字符不断地进行训练,最终完成匹配。这个过程中,一般要经过以下几个处理,如图2-1所示。图2-1识别过程图首先对样本进行准备,接着进行预处理的一系列处理,处理后得的数字图像在大小等方面相对来说比较统一的数字图像后,再提取其重要的特征,然后把提取的特征进行训练,在这里选用BP神经网络,之后进行输出并进行比较。输出的如若不是期望值,可以通过让其权值进行初始化或计算其误差并调整网络的权值,再进行BP网络训练,直到得到我们想要的值为止。2.1.2字符识别的方法在字符识别的发展中,有传统的字符识别算法,也有新的改进的字符识别算法。传统的字符识别算法有统计模式字符识别算法,结构模式字符识别算法,模板匹配等等。新的识别方法有改进的神经网络识别算法等等。单一的传统的字符识别方法在适用上和信息处理上的优缺点较为明显。例如在统计模式识别中:首先按照一定的准则划分区域,只需要判断被识别的数字属于哪一区域,就能判别数字类别。而这种方法在有噪声干扰的时候较为适用,但是其缺点就是在一些含有结构信息的数字的处理中效果不佳。而结构模式识别是一种理想化的方法,其缺点正是统计模式使得的优势,它的抗干扰能力弱。所以说,把这两种方法结合起来应用,对数字的识别应该会更加理想。模板匹配法是一种全局分析算法,首先设定标准形式,按照标准对手写数字进行分类和识别。简单理解起来就是把数字与准备好的模板进行匹配,匹配的相似度越大,则就为这一类。这种方法很容易理解,但是倘若这样逐个数字进行匹配,则花费的时间也就很长。现如今,运用神经网络对字符进行识别,其识别效果会很好。神经网络识别数字图像与人类对数字识别的方法接近,通过一个一个的神经元细胞构建一个多层神经网络,然后通过样本训练,不断地完善其权值和阙值大小,最终各个神经元之间实现一种非线性映射关系。2.1.3图像的灰度化带有彩色的数字图像通过灰度化处理变成灰度图像。灰度化处理常用以下几种方法:第一种方法是先求出RGB的三个分量值,进行比较后,选取最大的一个作为分量值。第二种:和第一种方法类似,在求出三个分量后,把它们相加再求平均值。第三种:彩色的颜色分别用R、G、B来表示,然后带入公式:Y=0.30×R+0.59×G+0.11×B。2.1.4图像二值化二值化处理后的结果有两种。一种为黑另一种为白。对应0或255。提前规划阙值大小,让灰度化处理之后的灰度值与阙值相比较,若前者小,则为0,反之则为255。二值化的公式如下:(2.1)每个点二值化的结果用y(i,j)表示,每个点的灰度值用r(i,j)表示,T用来表示阈值。而阙值分为三类,分别为整体阈值,局部阈值,动态阈值。整体阈值可以事先确定阈值。缺点是它的最佳阈值无法直接确定。但这种方法也有它的优点,就是它不仅快捷而且也很方便。因为数字图像比较清晰,数字轮廓很好,也很难受到其他环境的干扰,总的来说这是一个比较好的二值化方法。局部阙值法适用性易受条件限制,它在照明不均匀的情况下可以使用。我们在选择二值化方法的过程中要灵活选用。局部阈值二值化可能在某些时候可能更加适用,但是局部阈值法也有不足之处,在某些时候局部阙值法实现速度会很缓慢,同时数字笔画的连通性效果也可能不会很好。像素的位置和灰度值,以及像素的坐标位置都有可能会影响阙值的选择。通常,动态阈值法不用于字符识别。因为对于数字图像来说,数字的笔划与背景差异会比较明显,若用动态阈值处理,则计算时间可能会更长。2.1.5去噪处理在图像扫描时,难免会有噪声。可以通过平滑去噪来完成,噪音会影响后续的操作。因此,想要使后续工作更好的进行,则尽可能地去除图像的噪声。后续的字符分割、特征提取等处理,直接受到去噪处理的影响。当前,可提供的方法有中值滤波法,均值滤波法等。值得注意的是,去噪时要正确选用去噪算法,不然可能会使数字图像本身的像素受到影响。去噪的一般原则是:当对图像进行扫描时,观察到与某个黑点有关的黑点的个数,若数量过少,则把这个黑点去掉。在这里使用中值滤波方法。2.1.6数字倾斜矫正书写数字时,并不能保证数字的书写整整齐齐,想要更好的使识别率得到提升,需要采取措施。解决问题的关键可以使用倾斜矫正,因为它可以使每个数字水平对齐。通常最简单有效的方法是通过手动矫正,手动矫正之后可以使得数字图像尽可能精确。还有一种方式可以通过计算来矫正,我们可以计算图像的左右两边黑像素的高度,然后求出图像的倾斜率,来判断数字图像的倾斜程度,进而矫正数字倾斜。2.1.7数字图像分割在实际应用中,我们要处理的数字往往不是单一的一个数字,大多数情况下处理的图像中会有一串数字。显然,倘若对这一串数字直接进行扫描,识别率不仅难以保证,而且处理起来也会很复杂。所以我们要考虑把数字分开处理,这就需要提取单独的数字特征,这时就离不开对图像分割的应用,图像分割之后它可以减少后面对数据量的处理。2.1.8图像的归一化处理数字书写时,难以保证数字的大小一致,而数字大小不一致无疑会增大数字的识别难度,这个时候我们可以对数字进行处理,使各个数字图像转化为大小一致的数字,很显然,这一处理会使后续过程更容易进行。处理数字大小不一致的问题,可采取归一化处理。归一化分为线性归一化和非线性归一化。但是不管采取哪种归一化的方法,都是对原始图像的大小规格进行处理,在这过程中,要格外地注意,数字大小可以改变,但是数字图像的一些重要的特征不能发生改变,否则,可能会影响对数字的正确判定。2.1.9图像的细化通常情况下,每次书写的数字的笔划的粗细程度是难以控制的。每个数字的笔迹的轮廓也有很多不必要的点,这些点会影响识别,怎样既能把这些影响识别的不确定因素去掉又能保证数字的原骨架不变,还能保证笔迹的连通。对数字进行细化操作能很好地解决这个问题。2.2特征提取按照上面的步骤执行之后,最初的不规则的数字图像转化成了我们想要的更加接近标准的数字。接下来就要提取图像的识别特征,主要提取能够识别数字的关键特征。特征提取的措施比较多,一般可按照字符的结构特征或像素特征来提取。特征提取在字符识别的过程中起着至关重要的作用。逐像素特征提取方法是基于像素特征提取的一种。通常特征值为1时,则扫描到的是黑色像素,特征值为0时,扫描到的是到白色像素。算法思想简单易实现,但它的适应性欠缺。但是增加训练样本数可以弥补这一缺陷。即使数字不同,但是数字内部的笔划存在着一种固定的联系。分析字符时采用结构特征提取的方法,可以达到字符识别的目的。字符识别问题是模式分类中研究的问题,计算机是模仿人类的思维过程。事实上,其记忆库的形成就像人类不断地训练学习一样。当把提取出的特征输入网络中,对其训练,训练好的数字与待要识别的数字对象进行对比,特征一致则成功,否则失败。2.3人工神经网络人工神经网络的研究工作具有长远的意义。人脑的信息处理机制在进化中逐渐形成并完善。但是,就目前为止,我们对很多东西的认知还很浅。然而,对人脑神经网络进行了抽象化处理并建立了一个简单的模型,这一方法称为人工神经网络。但是,众所周知,人脑神经网络在很多方面要强于人工神经网络,这个事实毫无争议。人脑的神经元细胞数以亿计,神经元之间相互连接,这也就决定了大脑的结构复杂,能够并行处理大量的信息,具有识别,学习,思考等对外界环境做出回应的功能。而计算机对信息的处理机制和人脑的对信息的处理机制不同,最先的计算机对信息处理的方式简单,按照信息的先后次序依次执行,并且不能同时对多条信息进行处理,处理信息的范围小,在一些智能化处理信息的地方的功能还很不足。倘若能有像大脑对字符信息做出快速识别就显得尤为迫切,而人工神经网络就能在一定程度能够解决这个问题,而人工神经网络的创建理念就在于此。人工神经网络仅仅是人脑的神经进行模仿和抽象,采用一些先进的技术通过计算机完成对数字的识别。若想要更一步的完善人工神经网络,则需要对人脑进一步的了解,这就需要各个研究方向的研究人员齐心合作,也需要采用更加行之有效的检测方法。2.3.1BP神经网络BP神经网络是一种按误差反向传输的神经网络。在人工神经网络中,BP神经网络最受欢迎。神经元之间的拓扑结构通过神经元之间的连接来反映,决定了神经元的性质及其处理信息的能力。神经网络分为前馈神经网络和反馈神经网络[14]。BP神经网络就是前馈神经网络的代表。反馈神经网络作为多层神经网络,可以加权处理非线性可微函数。其实从输入空间到输出空间的非线性映射就是神经网络简单的理解。若要学习或发现变量之间的关系,可以通过调整权重和阈值的方式来实现,进而完成对事物的分类操作。目前,许多的实际应用中已经使用了BP神经网络。然而,通过很多的研究人员的研究发现,提出了一些比较实用的人工神经网络。2.3.2单一的神经网络在单一的神经网络中,把神经元当作一个有值的变量,在这个变量里,我们可以对它输入一个值,之后它就可以通过简单的方法,即线性处理的方法使其近似(赋给一个权重)趋近函数,之后可以得到一个相近似的值,此时这个值是有误差的,并且单一的神经网络误差会更大。所以说,单个神经元或神经元个数过少及隐藏层的层数过少时不利于对数字的识别。不管采用什么样的方法,误差总是不可避免的,但是我们可以通过适当的改变神经元的个数尽可能的减小误差。2.3.3神经网络的特点神经网络有一个重要的特性,它能分布式信息存储。存储的方式比与传统的计算机不同。它的网络修复能力很强。除此之外,它能够自主学习。自主组织也是它的一大特征。神经元的自学习过程中,权值大小的赋值随意性较大,权值的大小与神经元之间的连接强度有关。这种自学习方法无非是模拟人类的学习过程。它在模式识别中的应用是很成功的。2.4本章小结本章主要介绍了数字识别中必要的数字处理。讲述了一些理论背景,提出了具体的方法对数字进行相关的处理,使最初的数字图像一步一步的经处理转变成容易被计算机识别的数字特征。最后,简单阐述了人工神经网络在数字识别的应用。-PAGE42-3基于BP神经网络的数字识别算法3.1算法概述数字识别的整体算法概述:第一步:准备好的数字样本,通过预处理之后,我们会得到数字图像的特征,之后选取识别数字的关键特征。第二步:先经过神经网络的训练,之后进行输出并进行比较。输出的如若不是期望值,可以通过让其权值进行初始化或计算其误差并调整网络的权值,再进行BP网络训练,最终,循环操作,调整最佳的权重和阙值,输出我们想要的结果。算法识别过程如图3-1所示。图3-1BP算法识别过程图3.2数字预处理在数字的预处理中,要执行一系列处理,并尽可能的准备足够多的手写数字,BP神经网络的训练用训练样本来完成,训练之后的识别效果用测试样本来检测。3.2.1灰度化带有彩色的数字图像通过灰度化处理变成灰度图像[15]。其彩色的颜色分别用R、G、B来表示,每个字母代表一种彩色,而Y用来代表数字图像的灰度值。使处理之后的数字图像为灰度图像而不带其它任何彩色,并带入数学表达式:Y=0.11×R+0.59×G+0.3×B。求出Y,把Y的值都等于R、G、B。并用rgb2gray()来实现。如此往复计算就能得出整个灰度化图像。3.2.2二值化二值化采用im2bw()函数来完成,灰度图像的值除以255之后,要与函数im2bw()的阈值进行比较。若前者较大则为白,否则为黑。3.2.3平滑去噪在数字识别的过程中,要扫描数字图像,这就难以保证字体的清晰度,清晰度不高的情况下识别字体比较困难。所以,要想解决这个问题,我们要采取相应的方法,采用中值滤波方法,处理之后会使图像很清晰。3.2.4图像分割图像分割的过程如下:第一步:我们需要确定被处理的数字图像的高度范围。处理方法一般是进行扫描。从图像的底部开始向上进行扫描,遇到数字时(可以认为遇到黑像素)停止扫描,此时可以确定图像的底部位置。而图像的顶部位置的确定是从图像的上方开始扫描,当遇到数字上部时停止扫描,并记录下来此时顶部的位置。这时顶部与底部之间形成的高度差就是数字图像的高度大小。第二步:完成第一步之后,仅仅完成了数字图像的高度大小,此时要完成字符与字符之间的分割。方法是从左往右进行列扫描,开始遇到数字的左侧时作为分割的开始,然后继续往右扫描,当这个字符完全消失时完成一个字符的分割。第三步:完成以上两步后,可以完成一个字符的分割。接着还要进行第二个第三个等等字符的分割,只需要在完成第一步的前提下继续执行第二步就能把所有的字符分割开来。3.2.5细化很多时候我们只会关心线条之间的关系,而不是手写数字中线条的粗细。执行细化操作时,在函数imresize()中,先反色处理最初的图像,之后再返回最初的颜色[16]。3.3特征提取之后进行特征提取,在这里采用逐像素特征提取方法。当特征值为0时,扫描到的是白色像素,当特征值为1时,扫描到的是黑色像素[17]。数字样本的特征提取后,对样本进行分类,一种是训练样本另一种是测试样本。并进行网络训练。3.4BP神经网络结构模型参数的选择与确定3.4.1BP神经网络模型参数选择的重要性BP神经网络的网络模型一般有三层,最左侧为输入层,最右侧为输出层,中间部分为隐藏层[18]。神经网络中神经元越多其性能就越强大,一般来说也就越利于对数字进行识别,识别正确率也就越高。3.4.2输入层和输出层神经元个数的确定数据的维度决定了输入层中的节点数。即使输入层节点数很多,也不能保证每个节点都有实际的意义,另一方面,输入神经元过多,必然会使整个网络训练更加复杂化,不仅仅会使训练时间延长,还可能还会使数字识别受到不利影响。若图像维数为25×25,则输入神经元的数量为625。数字识别研究相对于其他字符识别较为简单,我们仅需要对数字进行识别处理,而数字个数并不多,仅有十个数字,故输出层的神经元个数设为十个。3.4.3隐藏层数与隐藏层神经元个数确定通常情况下,隐藏层的数量影响着网络的准确性。隐藏层的数量越多,发生的错误就越少,但是采用这种方式的后果是会使网络复杂化提升,使得训练的时间延长。一般来说,隐藏层节点数影响训练效果,其节点数越多训练效果越好,最终的误差也就越小。根据我们的实际需求设置合适网络模型。在这里我们参照已有的良好的模型,经过不断对比测试最终构建的隐藏层为双层。双层隐藏层可以学习更多的特征,也更抽象,进而会更加线性相关。但是隐藏层的层数并不是越多越好,过多的话会增加其训练难度,可能会出现“过拟合”,过少会出现“欠拟合”。具体可以通过公式法:第一种方法可以通过公式法:(3.1)(3.2)在上述公式中,输入层神经元数用m表示,隐藏层神经元数目q表示,输出层神经元数目用z表示,其中b为任意满足1-10的常数。第二种方法可以根据几个原则来确定:通常情况下,满足关系m>q>z。或者满足q=2/3(m+z)。不管采用那种方式,都不可能完全合适。最好的方式是通过不断测试。根据以上经验,在双隐层神经元创建中,第一层神经元数量应适当大于第二层神经元数量,这样更好的得到我们想要的结果。这里我们让两层隐藏层神经元个数一共为400个。其中第一层神经元个数为300个,第二层神经元个数为100个。3.5BP神经网络的网络模型3.5.1BP神经网络模型的构建根据上面我们确定的神经元的层数和每层神经元个数创建出我们需要的模型。其模型如图3-2所示:图3-2BP神经网络的网络模型3.5.2BP神经网络算法概述通过BP神经网络一般训练的算法过程原理是:第一步:先自定义一些值,把样本输入到输入层,然后从输入层向隐藏层逐层计算并传入,经过隐藏层的处理之后再向输出层逐层输出。此时,我们便可以把输出的结果与我们想要的结果进行对比。倘若两个结果相同或相似,则符合要求,如若不然,则进行反向处理。第二步:反向处理的过程一般是把第一步输出的误差反向通过某种方式传入到隐藏层,然后由隐藏层再逐层传入到输入层,此时,输入层的各个单元可以收到输出层的误差反馈,然后通过误差分析再从新确定各个权值的大小。第三步:完成第二步之后,再从第一步开始再次执行,如此往返执行,最终有一组最佳的权值,并且可以在输出层输出近似我们期望的结果。3.5.3激励函数的选择在神经网络训练当中,误差是不可避免的,但是很多非线性的关系用线性函数肯定不能很好的进行处理。所以怎样把一个越阶函数变成一个连续的平滑曲线,怎样通过某个函数得到输出后,这些输出构成一个连续的曲线,进而提高表达能力。我们采用一种recticfication函数。这类函数叫做激励函数。最常用的激励函数是Sigmoid函数。如(3.3)所示。(3.3)除此之外还有Tanh函数。如(3.4)所示。(3.4)以及Relu函数等等。如(3.5)所示。(3.5)选取不同的激励函数会有不同的结果,并且结果可能差距很大,所以应该按照自己设计的模型结合自己的所需选择合适的函数。在此,我们选择的是第一种激励函数。3.6本章小结本章节中,采取的是BP神经网络的方法,对数字训练使其无限接近我们所期望的值。首先分析了单一的神经网络的缺陷,根据实际要求,改进了神经元数目,构建了双隐层的神经网络模型。并介绍了BP网络的算法思想,以及训练过程中用到的激励函数等。并在文末论述了BP网络的优点。4实验结果与分析4.1开发运行环境4.1.1系统开发环境和运行环境软件环境:(1)Windows10操作系统。(2)Matlab软件。4.1.2开发工具介绍Matlab是一款应用广泛的数学软件。在此系统设计中,用到的软件是Matlab,它功能强大,数据以矩阵的形式进行处理。Matlab自身的内建函数丰富,可将可视化与数值的计算结合在一起。并且,因为Matlab的结构相比比较开放,则Matlab自身的功能拓展也就变的非常容易,这样一来可以加强对问题的处理能力,Matlab的自身竞争力也会得到很大的提高。Matlab的显著特点是简单便捷。它的功能非常的丰富,可以作为很好程序开发环境,用作程序开发,它的代码和人的思维习惯相符,更好的帮助我们来编写代码。通过使用Matlab实现了一款界面友好,操作简单,使用统一的图形用户界面。Matlab的优势如下:数值计算的处理能力很好,降低了使用者对数学公式的处理,减少了人工投入的精力。用户界面友好,使得学者在学习中更容易掌握。3.处理工具很多,免费提供用户使用等等。4.2手写数字识别打开MATLAB软件,需要进行数据文件的导入,输入数字识别的文件路径,并在命令窗口输入命令charGUI,点击确定即可执行,并弹出数字识别窗口。此窗口可对手写在纸张上的数字或通过输入设备手动输入数字符号进行识别。在手写在纸张上的数字识别中:首先打开图片,选取我们想要识别的数字图片,然后点击预处理操作按钮,再执行特征提取操作,最后完成识别。以数字“3”为例。识别结果如下:图4-1打开手写板图4-2手写结束图4-3预处理图4-4特征提取图4-5识别4.3图片数字识别对纸张上的数字识别,通过输入设备对手动输入的手写数字进行识别过程如下:先打开手写板,手动输入要识别的数字,输入完成后,点击手写结束按钮,再对数字进行预处理和特征提取操作,最后完成识别。同样以数字“3”为例,识别结果如下图所示:图4-6打开图片图4-7预处理图4-8特征提取图4-9识别由于手写体数字的书写规范性要求不是很高,所以很多字体难以识别,因此测试样本的识别率不是很高。所以适当增加训练样本数,来解决这个问题。在训练实验中,每个手写体数字的训练样本为50个,一共500个,其手写体数字识别结果如下表4-1所示:数字样本正确识别数错误识别数正确识别率0500100%149198%246492%347394%448296%5401080%646492%742884%846492%946492%合计4604092%表4-1手写体数字训练结果在测试实验中,在这里为每个手写体数字的测试样本准备50个,一共500个。其手写体数字识的结果如下表4-2所示:数字样本正确识别数错误识别数正确识别率0500100%149198%242884%343786%443786%5381276%643786%744688%842884%941982%合计4356587%表4-2手写体数字测试结果由表可知,本系统对手写体数字识别有较好的识别率,训练样本和测试样本的正确识别率分别达到92%和87%。总体上很好的完成对数字的识别。在进行数字识别中,虽然对大多数数字都能比较好的识别,例如:本系统对数字0和数字1的识别率较高,但是个别数字的正确的识别率不高,其中数字7的错误率较高,系统常常把数字7常常误识为数字1。对数字5的识别率错误率也较高,数字5的笔画与数字6较为相近,从而误把数字5常常识为数字6。造成这种错误的识别原因可能由于标准特征向量距离较小。可以添加标准库,调整参数,从而降低这种识别错误。4.4本章小结本章节是讲述的是系统的配置环境和数字识别的实现部分。我们首先介绍了Matlab软件及环境配置,并构建出友好的GUI用户界面。通过较多训练样本训练,经测试后,得出较好的数字识别率。并对识别产生的误差做出分析。5结论本文在吸收和总结一些优秀的识别方法的基础上,结合自己的系统功能建立了一个能简单识别图片上的数字和通过输入设备输入的手写的数字,基本上能够实现了系统对手写数字的识别功能的要求。采用BP神经网络字符识别算法,它为手写体数字识别提供了一种新的有效途径。本文介绍了图像预处理、字符分割、特征提取、识别方法到系统组成等各个环节对手写体数字识别过程进行了研究,并通过理论分析和实验,证明了该方法的可行性和良好的识别率。但是系统还存在一些不足:实现的识别系统还不完善,手写体数字检测的对象是少数人,很难具有普遍性。其次,识别算法对被识别数字的书写顺序有一定的限制,识别策略不够灵活等等。最后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广东佛山市禅城区教育系统招聘中小学教师100人(第二场编制)笔试参考试题及答案详解
- 川北医学院2026年公开考核招聘工作人员考试备考试题及答案详解
- 2026河北秦皇岛市海港医院选聘19人考试备考题库及答案详解
- 2026北京市大兴区庞各庄镇面向社会第四次全国农业普查招聘14人笔试参考题库及答案详解
- 2026年合肥铁路动车组招聘73名笔试参考题库及答案详解
- 2025年太原市小店区中小学编制教师招聘笔试试题及答案详解
- 2026年福建省厦门高新学校临聘教师10人招聘考试备考题库及答案详解
- 2026上海交通大学巴黎卓越工程师学院新能源方向招聘专职科研人员1人考试备考题库及答案详解
- 2026江苏南京大学YJ20260399化学学院博士后招聘1人考试备考试题及答案详解
- 2025年沈阳市苏家屯区中小学编制教师招聘笔试试题及答案详解
- 营养配餐工作室创新创业
- 2026年国家能源集团河南公司校园招聘笔试参考题库及答案解析
- 肝病与凝血教学课件
- 《2026年》高速收费员岗位高频面试题包含详细解答
- GB/Z 43592.2-2025纳米技术磁性纳米材料第2部分:核酸提取用磁珠的特性和测量规范
- 肿瘤学概论课件
- 手法排痰课件
- 养老护理员体位转换课件
- 2025年大学本科(机器人工程)机器人工程概论试题及答案
- 46566-2025温室气体管理体系管理手册
- 2025年山东能源集团有限公司社会招聘笔试试卷及答案
评论
0/150
提交评论