文档库 最新最全的文档下载
当前位置:文档库 › 基于BP网络的数字识别

基于BP网络的数字识别

基于BP网络的数字识别
基于BP网络的数字识别

课程设计任务书

学生姓名:专业班级:

指导教师:工作单位:

题目: 模式识别

初始条件:MATLAB 软件

要求完成的主要任务:

利用BP(Back-propagation)网络对于10个阿拉伯数字(用七段码表示)进行训练,将训练好的网络对于污染的数字进行识别。

要求:学习BP算法;将数字用7维矢量表示;设计BP网络(7输入1输出);参考matlab神经网络工具箱

时间安排:

序号设计内容所用时间

1 布置任务0.5天

2 项目设计实践7天

3 答辩0.5天

合计2周

指导教师签名:年月日

系主任(或责任教师)签名:年月日

目录

摘要 (1)

Abstract (2)

1 绪论 (3)

2. BP神经网络 (4)

2.1 人工神经元模型 (4)

2.2 BP 网络介绍 (4)

2.3 BP 算法原理 (5)

2.4 BP 网络的数学推导过程 (6)

2.4.1 BP 网络的前馈计算 (6)

2.4.2 BP 网络权系数的调整规则 (7)

2.5 BP 网络学习算法的计算步骤 (10)

3. MATLAB 神经网络部分 (12)

3.1 MATLAB 神经网络工具箱函数介绍 (12)

3.2 几种BP 神经网络中的重要函数和基本功能 (12)

3.3 BP 神经网络几种重要函数的介绍 (13)

4程序设计及仿真结果 (16)

4.1 神经网络的设计 (16)

4.2 程序设计 (17)

4.3仿真结果 (19)

5心得与体会 (24)

附录 (25)

参考文献 (28)

致谢 (29)

摘要

随着模式识别技术在当代高科技领域的发展,人工神经网络技术也有了突飞猛进的进步,并在各个领域有了广泛的应用,字符识别是模式识别理论的一个重要应用领域,是实现智能人机接口的重要途径。本文结合神经网络和字符识别做简单的讨论和研究。

本文首先对神经网络的相关知识做了概括性的介绍,主要包括人工神经网络的基本原理、神经元、人工神经元的模型、以及神经网络的学习过程。在本设计中,选用的BP网络是带有一个隐含层的两层BP网络。网络在选取各个试验参数时采用了前人总结的有效的经验公式,并在实际的操作过程中做了进一步的调整。

最后在MATLAB 环境下,编写了进行字符识别的程序,并且进行了仿真。关键词:神经网络,字符识别,BP 网络,学习

Abstract

With the the development of pattern recognition technology in contemporaryhigh-tech fields, Artificial neural network technology has advanced by leaps andbounds of progress, In various fields and have a wide range of applications, Theoryof character recognition is an important pattern recognition applications, Intelligentman-machine interface is an important way. In this paper, character recognition neural network and simple discussion and research.

This article first neural network to do a general knowledge of the introduction,Include artificial neural network the basic principles of neurons, artificial neuronmodels, as well as neural network learning process. In this design, the BP networkis selected with a two-tier system of hidden layer BP network. Network in theselected test parameters used in all the previous experience of an effective sum up the formula, and in the actual operation of the process of further adjustments.

Finally, in the MATLAB environment, preparation of procedures for character recognition, and simulation.

Key words: neural network,character recognition,BP neural network ,learning

1 绪论

人工神经网络特有的非线性适应性信息处理能力,克服了传统人工智能方法对于直觉(如模式,语音识别,非结构化信息处理方面)的缺陷,使之在神经专家系统,模式识别,智能控制,组合优化,预测等领域得到成功应用。人工神经网络与其他传统方法相结合,将推动人工智能和信息处理技术不断发展。近年来,人工神经网络与正向模拟人类认知的道路上更加深入发展,与模糊系统、遗传算法、进化机制等结合,形成计算智能,成为人工智能的一个重要方向,将在实际应用中得到发展。人工神经网络模拟人类部分形象思维的能力,是模拟人工智能的一条途径。特别是可以利用人工神经网络解决人工智能研究中所遇到的一些难题。人工神经网络理论的应用已经渗透到多个领域,在计算机视觉、模式识别、智能控制、非线性优化、自适应滤波相信息处理、机器人等方面取得了可喜的进展。

人工神经网络模型发展到今日已有百余种模型,建造的方法也是多种多样,有出自于热力学的、数学方法的、模糊以及混沌方法。对于有规则的网络结构比较适合我们习惯的简洁分析方法。由于网络拓扑结构的规则性,限制了系统的自由性和无序运动,因而可以采用非效力学的其它方法。如对于前馈拓扑结构的人工神经网络,可使用感知器算法、误差反传递算法、竞争学习算法等。尽管如此,鉴于人工神经网络从本质上体现了分布系统的基本性质,所以分布系统的理论和方法均适合人工神经网络的研究。

另外,使用神经网络的优点是能够自适应样本数据,当数据中有噪声,形变和非线性时,它也能够正常工作,很容易继承现有的领域知识,使用灵活,能够处理来自多个资源和决策系统的数据;提供简单工具进行自动特征选取,产生有用的数据表示。

本文讨论的即是人工神经网络的一种在字符识别中的应用。字符识别的研究在模式识别领域中仍具有理论和实践意义, 通过对BP 神经网络的学习, 利用有效的BP 算法完成了对具有一定规范的字符的模式识别。

2. BP 神经网络

2.1 人工神经元

模型

图2.1人工神经元模型

(1) 连接权

连接权对应于生物神经元的突触,各个人工神经元之间的连接强度由连接权的权值表示,权值为正表示激活,为负表示抑制。 (2) 求和单元

求和单元用于求取各输入信号的加权和(线性组合)。 (3) 激活函数

激活函数起非线性映射作用,并将人工神经元输出幅度限制在一定的范围内,一般限制在(0,1)或(-1,1)之间。激活函数也称传输函数。

此外,还有一个阀值k θ.以上作用可分别用数学式表达出来,即:

∑==p

j j kj k x w u 1

,k k k k u net v θ-== ,)(k k v y φ=

式中,x1,x2……xp 为输入信号,相当于生物神经元的树突,为人工神经元的输入信息;w1,w2……wk 为神经元k 的权值;Uk 为线性组合效果;φ ()为激活函数, yk 为神经元k 的输出,它相当于生物神经元的轴突,为神经元的输出信息。

2.2 BP 网络介绍

1986 年.D.E.Rumelhart 和J.L.McClellang 提出了一种利用误差反向传播

训练算法的神经网络,简称BP 网络。是一种有隐含层的多层前馈网络,系统地解决了多层网络中隐含单元连接权的学习问题。

如果网络的输入节点数为M ,输出节点为L ,则此神经网络可看成是从M 维欧式空间到L 维欧式空间的映射。这种映射是高度非线性,其主要用于: (1)模式识别与分类:用于语言,文字,图像的识别,医学特征的分类与诊断等。本课题即用到此功能。

(2)函数逼近:用于非线性控制系统的建模,机器人的轨迹控制及其他工业控制等。

(3)数据压缩:用于编码压缩和恢复,图像数据的压缩和存储以及图像特征的抽取等。

2.3 BP 算法原理

BP 学习算法的基本原理是梯度最速下降法,它的中心细想是调整权值使网络总误差最小。也就是采用梯度搜索技术,以期使网络的实际输出值与期望输出值的误差均方值为最小。网络学习过程是一种误差边向后传播边修正权系数的过程。

设有一个m 层的神经网络,并在输入层加有样本X ;设第k 层的i 神经元的输入总和表示为U k

i ,输出X k

i ;从第k —1 层的第j 个神经元到第k 层的第i 个神经元的权系数为Wij 各个神经元的激发函数为f ,则各个变量的关系可用下面有关数学式表示:)(U X k i k i f =,∑-=j

k j

ij k i X

U W 1。

多层网络运用BP 学习算法时,实际上包含了正向和反向传播两个阶段。在正向传播过程中,输入信息从输入层经隐含层逐层处理,并传向输出层,每一层神经元的状态只影响下一层神经元的状态。如果在输出层不能得到期望输出,则转入反向传播,反向传播时,把误差信号按原来正向传播的通路反向传回,并对每个隐层的各个神经元的权系数进行修改,以望误差信号趋向最小。

将上一层节点的输出传送到下一层时,通过调整连接权系数来达到增强或削弱这些输出的作用。除了输入层节点外,隐含层和输出层的节点的净输入是前一层节点输出的加权和。每个节点的激活程度由它的输入信号,激活函数和节点的

偏置(或阀值)来决定。但对于输入层,输入模式送到输层节点上,这一层节点的输出即等于其输入。这种网络没有反馈存在,运行方向是单向的,所以它是一种非线性映射关系。

图2.2BP 网络模型

2.4 BP 网络的数学推导过程

2.4.1 BP 网络的前馈计算

在训练网络的学习阶段,设有N 个训练样本,先假定用其中的某一个样本p 的输入|输出模式对{ Xp}和{Tp }对网络进行训练,隐含层的第i 个神经元在样本p 的作用下的输入为i M

j p

j ij i M

j p

j ij p

i x o net w w θθ-=-=∑∑==1

1

. (2-1)

式中,x p j 和o p

j 分别为输入节点j 在样本p 作用时的输入和输出,对输入节点而言两者相当;wij 为输入层神经元j 与隐含层神经元i 之间的连接权值;

i θ为隐含层神经元i 的阀值;M 为输入层节点数,即输入的个数。

隐含层的第i 个神经元的输出为:)(net o p

i p

i g = (2-2) 式中,g (i )为激活函数。 对于Sigmoid 型激活函数]

/)(ex p[11

)(01θθ+-+=

x x g (2-3)

式中,参数1θ表示偏值,正的1θ使激活函数水平向左移动;

0θ的作用是调节Sigmoid 函数形状的,较小的 0θ使Sigmoid 函数逼近一个阶跃限幅函数,而较大的0

θ将使Sigmoid 函数变得较为平坦。隐含层激活函数:

)1()](1)[()(o o net net net p

i p

i p

i p

i p

i g g g -=-= (2-4)

隐含层第i 个神经元输出o p

i 将通过权系数向前传播到输出层第k 个神经元并作为它的输入之一,而输出层第k 个神经元的总输入为:

k q

i p

i ki p k

o net

w θ-=∑=1

(2-5)

式中,Wki 为隐含层神经元i 与输出层神经元k 之间的连接权值;k θ为输出层神经元k 的阀值; q 为隐含层的节点数。 输出层第k 个神经元的实际输出为:

)(net o

p

k p

k

g = (2-6)

输出层激活函数)(net p

k g 的微分函数为

)1()](1)[()(o o net net net p

k p

k p

k p

k p

k g g g -=-= (2-7)

若其输出与给定模式对的期望输出t p

k 不一致,则将其误差信号从输出端反向传播回来,并在传播过程中对加权系数不断修正,直到在输出层神经元上得到所需要的期望输出值t p

k 为止。对样本p 完成网络权系数的调整后,再送入另一样本模式对进行类似学习,直到完成N 个样本的训练学习为止.

2.4.2 BP 网络权系数的调整规则

对于每一样本p 的输入模式对的二次型误差函数为:

2

1)(21∑=-=i k p

k p k o t Jp (2-8)

则系统对所有N 个训练样本的总误差函数为:

2

111)(21∑∑∑===-==N p L k p

k p k N

p o t Jp J (2-9)

式中, N 为模式样本对数; L 为网络输出节点数。

一般来说,基于Jp 还是基于J 来完成加权系数空间的梯度搜索会获得不同的结果。在Rumelhart 等人的学习加权的规则中,学习过程按使误差函数Jp 减小最快的方向调整加权系数直到获得满意的加权系数集为止。这里的加权系数的修正时顺序操作的,网络对各模式对一个一个地顺序输入并不断进行学习,类似于生物神经网络的处理过程,但不是真正的梯度搜索过程。

o net

o net net net

p

i

p k

k q i p i ki ki p k

ki p

k p

k

ki ki Jp w w Jp

w Jp

w Jp w ??-=-?????-=?????-=??-=?∑=ηθηηη

)(1(1)输出层权系数的调整

权系数应按Jp 函数梯度变化的反方向调整,使网络逐渐收敛。根据梯度法,

可得输出层每个神经元权

系数的修整公式为

(2-10)

式中,η 为学习速率,η > 0。 定义:

)1()()()(o o o t net o t net o o net p

k p k p k p k p k p k p k p

k

p k

p

k p

k

p k

g Jp

Jp --=?-=?????-

=??-

(2-11)

因此输出层任意神经元k 的加权系数修整公式为:

o o t o o o p

i p k p k p k p k p i p k wki ))(1(--==?ηηδ (2-12) 式中,o p

k 为输出节点k 在样本p 作用时的输出;o p

i 为隐含节点i 在样本p 作用时的输出;t p

k 为在样本p 输入输出对作用时输出节点k 的目标值。 2)隐含层权系数的调整

根据梯度法,可得隐含层每个神经元权系数的修整公式为:

o

o net o net net net p

i

p

i p i

p i

i M j p

i

ij p i

ij p

i p i

j ij Jp

w wij Jp w Jp wi Jp w δηη

θηηη=???-=-?????-=?????-=??-=?∑=)(1

(2-13)

式中,η 为学习速率,η > 0。

)1()(o o o net o net o o net p

i p i

p i

p

i p

i

p

i

p i

p

i p

i

p i

Jp g Jp Jp

Jp -????-=???-

=?????-

=??-=η

δ

(2-14) 由于隐含层一个单元输出的改变会影响与该单元相连接的所有输出单元的输入,

即Wki

ki L k p

k

q

i k p

i ki p i

L

k p

k p

i

p

k L

k p

k

p

i

L k P K

w Jp w Jp

Jp

Jp net o o net o net net o ?=====∑???-

=-??

???-=?????-=??-

=∑∑

1

1

1

1

1

)()(δθ (2-15)

因此,隐含层的任意神经元i

的加权系数修正公式

为:o o o o

p

j ki L

k p k p

i p i p j

p

i

w wij ))(1(1

?-==?∑=δδηη (2-16)

式中, o p

i 为隐含节点i 在样本p 作用时的输出, o p

j 为输入节点j 在样本p 作用时的输出,即输入节点j 的输入(因对输入节点两者相当)。 输出层的任意神经元k 在样本p 作用时的加权系数改进公式为:

o p

i p k ki ki k w k w δη+=+)()1( (2-17) 隐含层的任意神经元i 在样本p 作用时的加权系数改进公式为:

o

p j

p

i

ij ij k w k w δη+=+)()1( (2-18)

对于给定的一个样本p ,可根据误差要求调整网络的加权系数使其满足要求;对于给定的另一个样本,再根据误差要求调整网络的加权系数使其满足要求,直到所有样本作用下的误差都满足要求为止。这种计算过程称为在线学习过程。

如果学习过程按使误差函数J 减小最快的方向调整加权系数,采用类似的推导过程可得输出层和隐含层的任意神经元k 和i 在所有样本作用时的加权系数

增量公式为:o p

k

N

p p

k ki ki k w k w ∑=+=+1

)()1(δη (2-19)

o

p j

N

p p

i

k wij k wij ∑=+=+1

)()1(δη (2-20)

式中,δp

k 和 δp i

的计算方法同上,即

))(1(o t o o p

k p k p k p k p k

--=δ (2-21)

))(1(1

ki t

k p

k p

i p

i p i

w o o ?-=∑=δδ

(2-22)

根据式(2-19)和(2-20)所得权的修正是在所有样本输入后,计算完总的误差后进行的,这种修正称为批处理学习或称为离线学习。批处理修正可保证其总误差J 向减少的方向变化,在样本多的时候,它比在线学习的收敛速度快。

因此,BP 网络的学习可采用两种方式,即在线学习和离线学习。在线学习是对训练集内每个模式对逐一更新网络权值的一种学习方式,其特点是学习过程中需要较少的存储单元,但有时会增加网络的整体输出误差,以上推导即为在线学习过程。因此,使用在线学习时一般应使学习因子足够小,以保证用训练集内每个模式训练一次后,权值的总体变化充分接近于最快速下降。所谓离线学习也成为批处理学习,是指用训练集内所有模式依次训练网络,累加各权值修正量并统一修正网络权值的一种学习方式,它能使权值变化沿最快速下降方向进行。

2.5 BP 网络学习算法的计算步骤

BP 算法的步骤:

(1)初始化:置所有的加权系数为最小的随机数;

(2)提供训练集:给出顺序赋值的输入向量x1,x2,x3,...xn和期望的输出向量t1,t2,t3....tn;

(3)计算实际输出:按式(2-1)到式(2-7)计算隐含层,输出层各神经元的输出;

(4)按式(2-8)或(2-9)计算期望值与实际输出的误差;

(5)按式(2-17)或式(2-19)调整输出层的加权系数Wki;

(6)按式(2-18)或式(2-20)调整隐含层的加权系数ij w ;

(7)返回计算(3)步,直到误差满足要求为止。

BP学习算法的流程图:

图2.3 BP 学习算法的流程图

初始化

给定输入向量和目标输出

求隐层和输出层各单位输

求目标值与实际输出偏差

求隐层单元误差

求误差梯度 权值学习

E 满足要求?

全部E 满足要求

结束

Y

Y

N

3. MATLAB 神经网络部分

3.1 MATLAB 神经网络工具箱函数介绍

利用神经网络能解决许多传统方法无法解决的问题。神经网络在很多领域中都有应用,可实现各种复杂的功能。这些领域包括商业及经济估算、自动检测和监视、计算机视觉、语音处理、机器人和自动控制、优化问题、工业生产等。神经网络是一门发展很快的学科,其应用领域也会随其发展有更大的拓宽。本章将介绍MATLAB 神经网络工具箱的应用。MATLAB 神经网络工具箱提供了丰富的演示实例,用MATLAB 语言构造了典型的神经网络的激活函数,编写了各种网络设计与训练的子程序。网络的设计者可以根据自己的需要调用工具箱中有关神网络设计的训练程序。

MATLAB 神经网络工具箱提供了许多进行神经网络设计和分析的工具函数,这给用户带来了极大的方便,即使不了解算法的本质,也可以直接应用功能丰富的函数来实现自己的目的。有关这些工具函数的使用可以通过help 命令得到。

随着MATLAB 软件版本的提高,其对应的神经网络工具箱的内容也越来越丰富。它包括许多现有的神经网络新成果,涉及的网络模型有感知机神经网络、线性神经网络、BP神经网络、径向神经网络、自组织神经网络、学习向量量化神经网络、Elman 神经网络、Hopfield 神经网络等。本章将着重介绍MATLAB 中BP 神经网络的应用问题。

3.2 几种BP 神经网络中的重要函数和基本功能

(1)MATLAB 神经网络工具箱的运用

MATLAB 神经网络工具箱提供了大量的进行BP 网络分析和设计的工具箱函数。在MATLAB 工作空间的命令行输入help backprop ,便可得到与BP 神经网络相关的函数,进一步利用help 命令又能得到相关函数的详细介绍。下面将介绍本次设计几种BP 神经网络的重要函数和基本功能。

(2)BP 神经网络中的重要函数和基本功能

函数名功能

tansig()双曲正切S 型(Tan-Sigmoid)传输函数

purelin()线性(purelin)传输函数

logsig()对数S 型(Log-Sigmoid)传输函数

learnbp()BP 学习规则

learnbpm()含动量项规则的快速BP 学习规则

initff()对BP 神经网络进行初始化

trainbp()利用BP 算法训练前向网络

trainbpx()利用快速BP 算法训练前向网络

simuff()BP 神经网络进行仿真

3.3 BP 神经网络几种重要函数的介绍

(1)BP 学习规则函数learnbp()

BP 神经网络学习规则为调整网络的权值和偏值使网络误差的平方和达到最小。这是通过在梯度下降法最陡方向上不断地调整网络的权值和偏值来达到的,计算网络输出层的误差矢量导数,然后反馈回网络,直到每个隐含层的误差导数都达到要求,这可根据函数deltatan()、deltalin()、和deltalog()计算。根据BP 准则,每一层的权值矩阵w 利用本层的误差导数矢量和输入向量来更新。该函数的调用格式为[dW,dB]=learnbp(X,delta,lr)。

式中,X 为本层的输入向量;delta 为误差导数矢量;lr 为学习速率;dW 为权值修正阵;dB 为偏值修正向量。

(2)含动量项规则的BP 学习规则函数learnbpm()

为了提高BP 算法的学习速度并增加算法的可靠性,在BP 学习算法中引进了动量因子。它使权值的变化等于上次权值的变化与这次由BP 准则引起的变化之和,这样可将动量加到BP 学习中,上一次权值变化的影响可由动量常数来调整。动量法降低了网络对于误差局面局部细节的敏感性,有效地抑制网络趋于局部极小。而自适应学习率也可以使训练时间大大缩短。当动量项常数为0 时,说

明权值的变化仅由梯度决定;当动量项常数为1 时,说明新的权值变化仅等于上次权值变化,而忽略掉梯度想。该函数的调用格式为

[dW,dB]=learnbpm(X,delta,lr,D,dw,db)

式中,X 为本层的输入向量;delta 为误差导数矢量;lr 为自适应学习速率;

D 为动量常数;dw 为上一次权值修正阵;db 为上一次偏值修正向量;dw 为本次权值修正阵;db为本次偏值修正向量。

(3)BP 神经网络初始化函数initff()

在设计一个BP 网络时,只要已知网络的输入网络的取值范围、各层的神经元的个数及传输函数,就可以利用初始化函数initff()对BP 神经网络网络进行初始化。函数initff()可最多对三层神经网络进行初始化即可得到每层的权值和偏值。其调用格式为[W1,B1,W2,B2]=initff(Xr,S1,’Tf1’,S2,’Tf2’)

[W1,B1,W2,B2]=initff(Xr,S1,’Tf1’,S2,’Tf2’,S3,’Tf3’)

式中,Xr 为一个向量矩阵,它决定了输入向量的最小值和最大值的取值范围;S,Si 为各层神经元的个数;Tf,Tfi 为各层的传输函数;W 和Wi 为初始化后各层权值矩阵;B 和Bi 为初始化后各层的偏值向量。另外,输出层神经元的个数S 或Si 可以用对应的向量T来代替,此时输出神经元数根据T 中的行数来设置。

(4)利用BP 算法训练前后网络函数trainbp()

BP 神经网络学习规则为调整网络的权值和偏值使网络误差的平方和为最小。这是通过在梯度下降方向上不断地调整网络的权值和偏值来达到的。该函数的调用格式为

[W1,B1,W2,B2,te,tr]=trainbp(w1,b1,’Tf1’w2,b2,’Tf2’,X,T,tp)

式中,w 和W(及wi 和Wi)分别为训练前后的权值矩阵;b 和B(及bi 和Bi)分别为训练前后的偏值向量;te 为实际训练次数;tr 为网络训练误差平方和的行向量;Tf 和Tfi为传输函数;X 为输入向量;T 为目标向量;tp=[disp_frep max_epoch err_goal lr]是训练控制参数,其作用是设定如何进行训练,其中tp 1)显示间隔次数,默认值为25;tp

2)显示最大循环次数,默认值为100;tp

3)为目标误差平方和,默认值为0.02;tp

4)为学习速率,默认值为0.01.。

(5)利用快速BP 算法训练前向网络函数trainbpx()

使用动量因子时,BP 算法可找到更好的解,而自适应学习率也可以使训练时间大大缩短。该函数的调用格式为

[W1,B1,W2,B2,te,tr]=trainbpx(w1,b1,’Tf1’,w2,b2,’Tf2’,X,T,tp)

式中,w 和W(及wi 和Wi)分别为训练前后的权值矩阵;b 和B(及bi 和Bi)分别为训练前后的偏值向量;te 为实际训练次数;tr 为网络训练误差平方和的行向量;Tf 和Tfi 为传输函数;X 为输入向量;T 为目标向量;tp 是训练控制参数,其作用是设定如何训练。

(6)BP 神经网络仿真函数simuff()

BP 神经网络由一系列网络层组成。每一层都从前一层得到输入数据。

Simuff()函数可仿真最多三层前向网络。其调用格式为

y=simuff(X,w,b,’Tf’,)或[y1,y2]=simuff(X,w1,b1,’Tf1’,w2,b2,’Tf2’)

式中,X 为输入向量;w,wi 为权值矩阵;b,bi 为偏值矩阵;Tf,Tfi 为传输函数;y,yi为各层的输入向量矩阵

4程序设计及仿真结果

4.1 神经网络的设计

(1)输入层的设计

本课题首先需要识别0,1,2...,9,0共10个阿拉伯数字,题目要求用七段码来表示,故用矢量

[0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0; % 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1; % 2 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1; % 3 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0; % 4 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1; % 5 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1; % 6 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1; % 7 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1; % 8 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1; % 9 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1]; % 0 来表示1,2,3,4,5,6,7,8,9,0.有七个输入,故输入层需要35个神经元。

(2) 隐含层的设计

网络的识别能力的高低与隐含层神经元个数的设计合理与否有很大的关系。到目前为至还没有数学公式证明应该怎么样确定隐含层的神经元数目使得网络达到最优。经验表明,隐层神经元数目太少,可能训练不出来,或者训练出的网络不强壮,容错能力(泛化能力)太差;数目太多又使学习训练时间太长,误差也不一定最佳。根据经验公式:a n m L ++=,其中m 为输出神经元的个数,n 为输入神经元的个数,a 为[1,10]之间的整数。此经验公式对小规模BP 网络适用。对于本次设计的规模可用a L ++=1035≈7+a ,通过运行结果,比较各自误差确定a=2,最佳的隐含层神经元数目为9个。 (3)输出层的设计

因为此网络是要识别0-9一共10个阿拉伯数字,故需要设置10个输出神经元来确定识别结果。

4.2 程序设计

(1)使用函数newff创建一个两层网络。

S1=10;

[R,Q]=size(number);

[S2,Q]=size(targets);

P=number;

net=newff(minmax(P),[S1 S2],{‘logsig’’logsig’},’traingdx’);

net.LW{2,1}=net.LW{2,1}*0.01;

net.b{2}=net.b{2}*0.01;

为了使产生的网络对输入向量有一定的容错能力,最好的办法是既使用理想的信号和又使用带有噪声的信号对网络进行训练。我们的具体做法是先用理想的输入信号对网络进行训练,直到平方和误差足够小。

接下来,使用10组理想信号和带有噪声的信号对网络进行训练。在输入带有误差的向量时,要输入两倍重复的无误差信号,这样做的目的是为了保证网络在分辨理想输入向量时的稳定性。

在网络进行了上述的训练以后,网络对无误差的信号可能也会采用对付带有噪声信号的办法。这样做就会付出较大的代价。因此,我们可以再一次训练网络。这一次就只使用理想的向量进行训练。这样就可以保证在输入端输入理想数字信号时,网络能够最好地对其做出反应。

以上所有的训练都是使用BP网络来实现的。网络学习的速率和冲量参数设置为自适应改变。使用函数trainbpx进行快速训练。

(2).无噪声的训练

开始时使用无噪声的信号对网络进行训练。当训练时间达到5000个时间单位或者是网络平方和误差小于0.001时停止网络的训练。输入训练样本为:number1=

[0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0; % 1

1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1; % 2

1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1; % 3

1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0; % 4

1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1; % 5

1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1; % 6

1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1; % 7

1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1; % 8

1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1; % 9

1 1 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1]; % 0

的转置。

输出目标向量为:

targets =

[ 1 0 0 0 0 0 0 0 0 0

0 1 0 0 0 0 0 0 0 0

0 0 1 0 0 0 0 0 0 0

0 0 0 1 0 0 0 0 0 0

0 0 0 0 1 0 0 0 0 0

0 0 0 0 0 1 0 0 0 0

0 0 0 0 0 0 1 0 0 0

0 0 0 0 0 0 0 1 0 0

0 0 0 0 0 0 0 0 1 0

0 0 0 0 0 0 0 0 0 1]

训练过程误差变化情况可通过MATLAB进行观察。

下面进行无噪声训练,训练结束条件:最大次数5000,误差平方和为0.001;

P=number;

T=targets;

net.performFcn='sse';

net.trainParam.goal=0.001;

net.trainParam.show=10;

net.trainParam.epochs=5000;

net.trainParam.mc=0.95;

[net,tr]=train(net,P,T);

(3).含有噪声信号的训练

为了保证设计的网络对噪声不敏感,可用理想的数字向量和加了噪声的数字表向量分别训练网络。设置向数字表加入的噪声信号平均值分别为0.1和0.2。

基于知识库的手写体数字识别

HUNAN UNIVERSITY 课程模式识别 题目基于知识库的手写体数字识别学生姓名 学生学号

专业班级 学院名称 2016 年6 月25 日

基于知识库的手写体数字识别 1案例背景: 手写体数字识别是图像识别学科下的一个分支,是图像处理和模式识别研究领域的重要应用之一,并且具有很强的通用性。由于手写数字的随意性很大,如笔画粗细、字体大小、倾斜角度等因素都有可能直接影响到字符的识别准确率,所以手写体数字识别是一个很有挑战性的课题。在过去的数十年中,研究者们提出了许多识别方法,并取得了一定的成果。在大规模数据统计如例行年检、人口普查、财务、税务、邮件分拣等应用领域都有广阔的应用前景。 本案例实现了手写阿拉伯数字的识别过程,并对手写数字识别的基于统计的方法进行了简要介绍和分析。本文实现的手写字体识别程序具有手写数字图像读取、特征提取、数字模板特征库以及识别功能。 2 理论基础: 2-1手写字体识别方法: 手写体数字识别是一个跨学科的复杂问题,综合了图像处理、模式识别、机器学习等多个领域的知识,其识别过程一般包含图像预处理、特征提取、分类器的设定及其后处理等组成。处理流程如图2-1所示。

图2-1 手写体数子识别流程图 2-2 图像预处理 手写体数字识别的首要工作是图像预处理。在图像预处理过程中需要解决的主要问题有:定位、图像二值化、平滑化(去噪)H J、字符切分、规范化等。图像二值化是指将整个图像呈现出明显的黑白效果。待识别的手写体数字图像在扫描过程中,常会带来一些噪声,用不同的扫描分辨率得到的数字图像,其质量也各不相同,故而要先将这些干扰因素排除掉。另外,还需要正确分割整幅文档图像中的手写体数字,而分割后的数字大小、字体常各不相同,故还需进行归一化处理。 2-3 特征提取 特征提取的目的是从经过预处理后的数字图像中,提取出用以区分与其它数字类别的本质属性并数值化,形成特征矢量的过程。常见的手写体数字特征有:模板特征、统计特征、结构特征和变换特征。 2-4 分类器 不同的分类方式对应不同的分类器,可选的分类器有神经网络、支持向量机

毕业论文计算机手写数字识别技术完整版

毕业论文计算机手写数 字识别技术 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

合肥学院 2007届毕业设计(论文) 基于模板匹配算法的字符识别系 设计(论文)题 目 统研究与实现 院系名称计算机科学与技术系 专业(班级)计算机科学与技术 2003级1班 姓名(学号)宋飞(0) 指导教师赵大政 系负责人袁暋 二O O七年五月二十三日 摘要 自从计算机问世以来,让机器具有模式识别能力一直是计算机科学家们的努力方向。研究表明,对视觉和听觉信息的处理过程,不仅仅是一个感知过程,也是一个认知过程。因此,研究模式识别,是理解人类智能的本质的重要途径。字符识别是一个传统和典型的模式识别问题,脱机手写数字识别是一个典型的大类别的模式识别问题。手写体数字具有不同字符字型相差不大、相同字符有多种不同写法、数字没有上下文关系等等特点,使得脱机手写体数字识别成为识别领域最大的难题和最终的目标。在这种大类别识别的研究中,传统上大多采用模板匹配的方法来解决问题。而在模板匹配算法中,得计算其特征值。图像需要经过二值化,细化等预处理。 关键字模板匹配;特征值;细化;二值化 ABSTRACT Since computer appeared, it has been an effort direction for scientist to let the computer has the ability of pattern recognition. Researching indicates that the procedure to deal with seeing and hearing not only a procedure of perception but also cognition. Therefore, studying pattern recognition is an important way in understanding the mankind’s intelligence

离散Hopfield神经网络的联想记忆-数字识别

1.实现1,2在加噪声之后的识别 array_one=[-1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 1 -1 -1 -1 -1; ... -1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 1 -1 -1 -1 -1;... -1 -1 -1 -1 1 1 -1 -1 -1 -1;-1 -1 -1 -1 1 1 -1 -1 -1 -1]; array_two=[-1 1 1 1 1 1 1 1 1 -1;-1 1 1 1 1 1 1 1 1 -1;... -1 -1 -1 -1 -1 -1 -1 1 1 -1;-1 -1 -1 -1 -1 -1 -1 1 1 -1;... -1 1 1 1 1 1 1 1 1 -1;-1 1 1 1 1 1 1 1 1 -1;... -1 1 1 -1 -1 -1 -1 -1 -1 -1;-1 1 1 -1 -1 -1 -1 -1 -1 -1;... -1 1 1 1 1 1 1 1 1 -1;-1 1 1 1 1 1 1 1 1 -1 ]; T=[array_one;array_two]'; net=newhop(T); noisy_array_one=array_one; noisy_array_two=array_two; for i=1:100 a=rand; if a<0.1 noisy_array_one(i)=-array_one(i); noisy_array_two(i)=-array_two(i); end end noisy_one={(noisy_array_one)'}; identify_one=sim(net,{10,10},{},noisy_one); identify_one{10}' noisy_two={(noisy_array_two)'}; identify_two=sim(net,{10,10},{},noisy_two); identify_two{10}' subplot(3,2,1) Array_one=imresize(array_one,20); imshow(Array_one) title('standard number 1') subplot(3,2,2) Array_two=imresize(array_two,20); imshow(Array_two) title('standard number 2') subplot(3,2,3) Noisy_array_one=imresize(noisy_array_one,20); imshow(Noisy_array_one) title('noisy number 1') subplot(3,2,4) Noisy_array_two=imresize(noisy_array_two,20); imshow(Noisy_array_two) title('noisy number 2')

手写数字识别的实现

燕山大学 课程设计说明书 题目:手写数字识别的实现 学院(系):电气工程学院 年级专业: 08-自动化仪表 学号: 080103020179 学生姓名:付成超 指导教师:林洪彬程淑红 教师职称:讲师讲师 2010年 12 月 24 日

燕山大学课程设计(论文)任务书 院(系):电气工程学院基层教学单位:自动化仪表系 学号080103020179 学生姓名付成超专业(班级)自动化仪表设计题目手写数字识别实现 设 计技术参数 通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 设计要求 设计图像中不同数字的识别方法,可以先从两个数字的识别开始,尽量实现多个不同数字的识别。设计中应该有自己的思想、设计体会 工作量1.分析图像特征,查阅相关资料,根据图像的特征提出解决问题的思路。2.查阅相关资料,学会MATLAB的编程方法 3.根据解决思路,编辑程序,根据调试结果,修改相应思路,找出最佳解决方案 工作计划周一分析图像,查阅各种资料,提出可行的解决方案。周二熟悉MATLAB软件,学会软件的简单编程方法。 周三根据可行的方法,编写程序,调试并修改方案。周四根据调试结果,选取最佳方案并完成设计论文。周五进一步完善设计论文,准备论文答辩。 参考资料[] MICHAEL SIPSER著,张立昂等译,《计算理论导引》,机械工业出版社,2000。 [2] 王晓龙,关毅等编,《计算机自然语言处理》,清华大学出版社,2005。 [3] R.C.Gonzales等著,阮秋崎等译,《数字图像处理》,电子工业出版社,2002。 [4] 王文杰等编,《人工智能原理》,人民邮电出版社,2003。 指导教师签字基层教学单位主任签字 2010年 12 月 24 日

基于某某BP神经网络地手写数字识别实验报告材料

基于BP神经网络的手写体数字图像识别 PT1700105 宁崇宇 PT1700106 陈玉磊 PT1700104 安传旭 摘要 在信息化飞速发展的时代,光学字符识别是一个重要的信息录入与信息转化的手段,其中手写体数字的识别有着广泛地应用,如:邮政编码、统计报表、银行票据等等,因其广泛地应用范围,能带来巨大的经济与社会效益。 本文结合深度学习理论,利用BP神经网络对手写体数字数据集MNIST进行分析,作为机器学习课程的一次实践,熟悉了目前广泛使用的Matlab工具,深入理解了神经网络的训练过程,作为非计算机专业的学生,结合该课题掌握了用神经网络处理实际问题的方法,为今后将深度学习与自身领域相结合打下了基础。

1 引言 从计算机发明之初,人们就希望它能够帮助甚至代替人类完成重复性劳作。利用巨大的存储空间和超高的运算速度,计算机已经可以非常轻易地完成一些对于人类非常困难的工作,然而,一些人类通过直觉可以很快解决的问题,却很难通过计算机解决,这些问题包括自然语言处理、图像识别、语音识别等等,它们就是人工智能需要解决的问题。 计算机要想人类一样完成更多的智能工作,就需要掌握关于这个世界的海量知识,很多早期的人工智能系统只能成功应用于相对特定的环境,在这些特定环

境下,计算机需要了解的知识很容易被严格完整地定义。 为了使计算机更多地掌握开放环境下的知识,研究人员进行了很多的尝试。其中影响力很大的一个领域就是知识图库(Ontology),WordNet是在开放环境中建立的一个较大且有影响力的知识图库,也有不少研究人员尝试将Wikipedia中的知识整理成知识图库,但是建立知识图库一方面需要花费大量的人力和物力,另一方面知识图库方式明确定义的知识有限,不是所有的知识都可以明确地定义成计算机可以理解的固定格式。很大一部分无法明确定义的知识,就是人类的经验,如何让计算机跟人类一样从历史的经验中获取新的知识,这就是机器学习需要解决的问题。 卡内基梅隆大学的Tom Michael Mitchell教授在1997年出版的书籍中将机器学习定义为“如果一个程序可以在任务T上,随着经验E的增加,效果P 也可以随之增加,则称这个程序可以从经验中学习”。逻辑提取算法可以从训练数据中计算出每个特征和预测结果的相关度,在大部分情况下,在训练数据达到一定数量之前,越多的训练数据可以使逻辑回归算法的判断越精确,但是逻辑回归算法有可能无法从数据中学习到好的特征表达,这也是很多传统机器学习算法的共同问题。 对机器学习问题来说,特征提取不是一件简单的事情。在一些复杂问题上,要通过人工的方式设计有效的特征集合,需要很多的时间和精力,甚至需要整个领域数十年的研究投入。既然人工无法很好地抽取实体中的特征,那么是否有自动的方式呢?深度学习解决的核心问题就是自动地将简单的特征组合成更加复杂的特征,并使用这些特征解决问题。 因为深度学习的通用性,深度学习的研究者往往可以跨越多个研究方向,甚至同时活跃于数个研究方向。虽然深度学习受到了大脑工作原理的启发,但现代深度学习研究的发展并不拘泥于模拟人脑神经元和人脑的工作原理,各种广泛应用的机器学习框架也不是由神经网络启发而来的。 MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。 MNIST是一个非常有名的手写体数字识别数据集,被广泛用作机器学习的入门样例,它包含了60000张图片作为训练数据,10000张图片作为测试数据,每一张图片代表了0~9中的一个数字,图片的大小为28x28,且数字会出现在图片的正中间。本文以该数据集为例,基于Matlab来分析BP神经网络的性能。 2 运行环境 本设计在Windows 10 下进行设计、主要利用Matlab工具环境,进行模拟演示。

手写数字识别系统的设计与实现

] 手写数字识别系统的设计与实现 摘要本手写数字识别系统是一个以VISUAL STUDIO C++ 为编译环境,使用MFC进行图形图像界面开发的系统。主要功能是通过在点击手写数字识别菜单下的绘制数字标签弹出的绘制数字窗口中完成数字的手写,在此窗口中可以进行数字的保存及清屏,然后通过文件菜单中的打开标签打开所绘制的数字,从而进行数字的预处理,其中包括灰度化及二值化处理,然后进行特征提取,最后实现数字的识别。本系统的界面设计友好,流程正确,功能也较为完善。实验结果表明,本系统具有较高的识别率。 关键词:绘制数字;预处理;特征提取;特征库;数字识别 / ;

目录 前言 (1) 概述 (2) 1 需求分析 (4) 功能需求分析 (4) , 性能需求分析 (4) 数据需求分析 (5) 相关软件介绍 (5) 2 手写数字识别系统的设计与基本原理 (6) 系统整体功能模块设计 (6) 手写数字识别系统的基本原理 (6) 数字图像的绘制 (6) 图像的预处理 (6) ) 图像的特征提取 (7) 特征库的建立 (8) 图像数字的识别 (8) 3 手写数字识别系统程序设计 (8) 数字图像的绘制 (8) 数字的特征提取 (15) 模板特征库的建立 (18) 数字的识别 (20) (

总结 (23) 致谢 (24) 参考文献 (25)

前言 自上世纪六十年代以来,计算机视觉与图像处理越来越受到人们的关注,并逐渐成为一门重要的学科领域。而作为它们的研究对象的数字图像,也因为它含有研究目标的丰富信息而成为越来越重要的研究对象。图像识别的目标是用计算机自动完成某些信息的处理,用来替代人工去处理图像分类及识别的任务。 手写数字识别是图像识别学科下的一个分支,是图像处理和模式识别领域研究的课题之一,由于其具有很强的实用性一直是多年来的研究热点。由于手写体数字的随意性很大,例如,笔画的粗细,字体的大小,倾斜等等都直接影响到字符的正确识别,所以手写体数字识别是一个很有挑战性的课题。在过去的数十年中,研究者们提出了许多的识别方法,取得了较大的成果。手写体数字识别实用性很强,在大规模数据统计(如例行年检,人口普查),财务,税务,邮件分拣等等应用领域中都有广阔的应用前景。本课题拟研究手写体数字识别的理论和方法,开发一个小型的手写体数字识别系统。 在研究手写体数字识别理论和方法的基础上,开发这样一个小型的手写体数字识别系统需要完成以下主要方面的研究与设计工作:手写数字绘制的问题、数字的预处理问题、特征提取问题、特征库的建立问题、数字识别问题。

基于神经网络的手写数字识别系统的设计与实现

中南大学 本科生毕业论文(设计) 题目基于神经网络的手写数字 识别系统的设计与实现

目录 摘要 (Ⅰ) ABSTRACT (Ⅱ) 第一章绪论 (1) 1.1手写体数字识别研究的发展及研究现状 (1) 1.2神经网络在手写体数字识别中的应用 (2) 1.3 论文结构简介 (3) 第二章手写体数字识别 (4) 2.1手写体数字识别的一般方法及难点 (4) 2.2 图像预处理概述 (5) 2.3 图像预处理的处理步骤 (5) 2.3.1 图像的平滑去噪 (5) 2.3.2 二值话处理 (6) 2.3.3 归一化 (7) 2.3.4 细化 (8) 2.4 小结 (9) 第三章特征提取 (10) 3.1 特征提取的概述 (10) 3.2 统计特征 (10) 3.3 结构特征 (11) 3.3.1 结构特征提取 (11) 3.3.2 笔划特征的提取 (11) 3.3.3 数字的特征向量说明 (12) 3.3 知识库的建立 (12) 第四章神经网络在数字识别中的应用 (14) 4.1 神经网络简介及其工作原理 (14) 4.1.1神经网络概述[14] (14) 4.1.2神经网络的工作原理 (14) 4.2神经网络的学习与训练[15] (15) 4.3 BP神经网络 (16) 4.3.1 BP算法 (16) 4.3.2 BP网络的一般学习算法 (16)

4.3.3 BP网络的设计 (18) 4.4 BP学习算法的局限性与对策 (20) 4.5 对BP算法的改进 (21) 第五章系统的实现与结果分析 (23) 5.1 软件开发平台 (23) 5.1.1 MATLAB简介 (23) 5.1.2 MATLAB的特点 (23) 5.1.3 使用MATLAB的优势 (23) 5.2 系统设计思路 (24) 5.3 系统流程图 (24) 5.4 MATLAB程序设计 (24) 5.5 实验数据及结果分析 (26) 结论 (27) 参考文献 (28) 致谢 (30) 附录 (31)

手写体数字识别系统

石河子大学 信息科学与技术学院毕业论文 课题名称:手写体数字识别系统设计 学生姓名: 学号: 学院:信息科学与技术学院 专业年级:电子信息工程2007级 指导教师: 职称: 完成日期:二○一一年六月十一日

手写体数字识别系统设计 学生: 指导教师: [摘要] 随着科学技术的迅速发展,在邮政编码、统计报表、财务报表、银行票据等处理大量字符信息录入的场合,手写数字识别系统的应用需求越来越强烈,如何将数字方便、快速地输入到计算机中已成为关系到计算机技术普及的关键问题。本文设计实现了一个基于Matlab软件的手写体数字识别系统,采用模块化设计方法,编写了摄像头输入、直接读取图片、写字板输入三个模块,利用摄像头等工具,将以文本形式存在的手写体数字输入进计算机,完成对手写体数字图片的采集,并设计了一种手写数字识别方法,对手写体数字图像进行预处理、结构特征提取、分类识别,最终以文本形式输出数字,从而实现手写体数字的识别。 [关键词] 预处理,结构特征提取,分类识别,手写体数字识别 I

Handwritten Digit Recognition System Students: Teacher: Abstract:With the rapid development of science and technology, in zip code, statistics, reports, financial statements, Bank bills dealing with a large number of characters, such as information recorded occasions, handwritten digit recognition system of requirement has become stronger and stronger, how easily and quickly the number entered in the computer has become a key issue relates to the popularization of computer technology. This article design implementation has a based on Matlab software of handwriting body digital recognition system, used module of design method, write has camera entered, and directly read pictures, and write Board entered three a module, using camera, tools, will to text form exists of handwriting body digital entered into computer, completed on handwriting body digital pictures of collection, and design has a handwriting digital recognition method, on handwriting body digital image for pretreatment, and structure features extraction, and classification recognition, eventually to text form output digital, to implementation handwriting body digital of recognition. Key words: Pretreatment, structure feature extraction, classification and recognition, handwritten digit recognition. II

基于神经网络方法的字符识别方法

论文写作与规范 题目:基于神经网络方法的字符识别方法 学号: 210802102 专业:计算机系统结构 姓名:靳飞飞 2009 年 1 月 9日

基于神经网络方法的字符识别方法 靳飞飞 (中国海洋大学信息科学与工程学院, 山东青岛266071) 摘要:字符识别是模式识别领域的一项传统的课题,这是因为字符识别不是一个孤立的问题,而是模式识别领域中大多数课题都会遇到的基本问题,并且在不同的课题中,由于具体的条件不同,解决的方法也不尽相同,因而字符识别的研究仍具有理论和实践意义。这里讨论的是用神经网络方法实现基于照相的数字图像的字符识别的问题。并且通过模板匹配的方法作为参照,以体现神经网络在处理模式识别问题上的优势。由于人工神经网络的非线性以及并行性和鲁棒性等特点,在上述领域,其取得了以往传统算法无法获得的成功。 关键词:神经网络;字符识别;图像处理 Character recognition based on neural network Jin Feifei (College of Information Science and Engineering,Ocean University of China,Qingdao 266071,China) Abstract:Character recognition is a traditional problem in the field of pattern recognition, for it is rather an isolated task than a fundamental problem in most work of pattern recognition area, with which we have various methods to deal in terms of specific conditions. That means the pursuit of character recognition is of great significance both in theory and in practice .The goal of this paper is using neural network to recognize characters on digital image based on camera. It also can be seen, in the paper, the advantage of neural network compared with the template matching method. Because its nonlinearity, parallel and strong, in these fields mentioned above, artificial neural network has achieved the success which other traditional algorithms can not reach. Key word: neural network, character recognition, image processing 1引言 字符识别是模式识别领域的一项传统的课题,这是因为字符识别不是一个孤立的问题,

手写数字识别的原理及应用

手写数字识别的原理及应用 林晓帆丁晓青吴佑寿 一、引言 手写数字识别(Handwritten Numeral Recognition)是光学字符识别技术(Optical Character Recognition,简称OCR)的一个分支,它研究的对象是:如何利用电子计算机自动辨认人手写在纸张上的阿拉伯数字。 在整个OCR领域中,最为困难的就是脱机手写字符的识别。到目前为止,尽管人们在脱机手写英文、汉字识别的研究中已取得很多可喜成就,但距实用还有一定距离。而在手写数字识别这个方向上,经过多年研究,研究工作者已经开始把它向各种实际应用推广,为手写数据的高速自动输入提供了一种解决方案。 二、研究的实际背景 字符识别处理的信息可分为两大类:一类是文字信息,处理的主要是用各国家、各民族的文字(如:汉字,英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:邮政编码、统计报表、财务报表、银行票据等等,处理这类信息的核心技术是手写数字识别。这几年来我国开始大力推广的“三金”工程在很大程度上要依赖数据信息的输入,如果能通过手写数字识别技术实现信息的自动录入,无疑会促进这一事业的进展。因此,手写数字的识别研究有着重大的现实意义,一旦研究成功并投入应用,将产生巨大的社会和经济效益。 三、研究的理论意义 手写数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值: 1.阿拉伯数字是唯一的被世界各国通用的符号,对手写数字识别的研究基本上与文化背景无关,这样就为各国,各地区的研究工作者提供了一个施展才智的大舞台。在这一领域大家可以探讨,比较各种研究方法。 2.由于数字识别的类别数较小,有助于做深入分析及验证一些新的理论。这方面最明显的例子就是人工神经网络(ANN)------相当一部分的ANN模型和算法都以手写数字识别作为具体的实验平台,验证理论的有效性,评价各种方法的优缺点。 3.尽管人们对手写数字的识别已从事了很长时间的研究,并已取得了很多成果,但到目前为止机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题(Open problem)。

手写体数字识别系统的设计与实现

大学生研究计划项目 论文报告 项目名称:_手写体数字识别系统的设计与实现 负责人:_________ _______________ 学院/专业:_____ ______ 学号:____ ________ 申请经费:_____ _________________ 指导教师:______ _______ 项目起止时间:2011年6月-2012年3月

摘要 手写体数字识别系统依托计算机应用软件为载体,利用C++程序设计的相关知识,运用模块设计等相关技术,最终完成手写体设计系统的程序综合设计。 关键字:手写体数字处理模式识别程序设计 一、论题概述 模式识别是六十年代初迅速发展起来的一门学科。由于它研究的是如何用机器来实现人(及某些动物)对事物的学习、识别和判断能力,因而受到了很多科技领域研究人员的注意,成为人工智能研究的一个重要方面。 字符识别是模式识别的一个传统研究领域。从50年代开始,许多的研究者就在这一研究领域开展了广泛的探索,并为模式识别的发展产生了积极的影响。 字符识别一般可以分为两类:1.联机字符识别;2.光学字符识别(Optical Chara- cter Recognition,OCR)或称离线字符识别。在联机字符识别中,计算机能够通过与计算机相连的输入设备获得输入字符笔划的顺序、笔划的方向以及字符的形状,所以相对OCR来说它更容易识别一些。但联机字符识别有一个重要的不足就是要求输入者必须在指定的设备上书写,然而人们在生活中大部分的书写情况是不满足这一要求的,比如人们填写各种表格资料,开具支票等。如果需要计算机去认识这些己经成为文字的东西,就需要OCR技术。比起联机字符识别来,OCR不要求书写者在特定输入设备上书写,它可以与平常一样书写,所以OCR 的应用更为广泛。OCR所使用的输入设备可以是任何一种图像采集设备,如CCD、扫描仪、数字相机等。通过使用这类采集设备,OCR系统将书写者已写好的文字作为图像输入到计算机中,然后由计算机去识别。由于OCR的输入只是简单的一副图像,它就不能像联机输入那样比较容易的从物理特性上获得字符笔划的顺序信息,因此OCR是一个更具挑战性的问题。 数字识别是多年来的研究热点,也是字符识别中的一个特别问题,它是本文研究的重点。数字识别在特定的环境下应用特别广泛,如邮政编码自动识别系统,税表和银行支票自动处理系统等。一般情况下,当涉及到数字识别时,人们往往要求识别器有很高的识别可靠性,特别是有关金额的数字识别时,如支票中填写

手写数字识别实践指导手册

手写数字系统实践指导手册 1 问题描述 设计一个简单的手写数字识别系统,能够识别手写输入的数字1-9并且能够识别选中的文本文件中的数字,应具有简单方便的操作界面,输入输出等。 1.1功能需求分析 通过分析,以及从用户的角度考虑,系统应该具有以下功能: (1)数字的手写输入。作为一个手写数字识别系统,首先应该能够让用户过绘制窗口进行数字绘制,系统得到用户的手写输入进行处理。 (2)直接选择文件。用户还可以选择系统中的文本文件进行处理。 (3)数据预处理。包括计算数据大小、二值化、格式化处理等。 (4)数字提取。将经过二值化后的图像中的个数字区域进行提取,只有能够将数字进行准确的提取,才能将其一一识别。 (5)基准库的选择与建立。选择一个可供系统训练和测试的样本库非常重要,本系统的训练集和测试集选择的是《机器学习实战》中所给的数据。 (6)识别数字。经过训练集进行训练后,使用knn算法对需要识别的数字识别。 2 数据集获取 ●任务要求: 从网上爬取或者下载适合进行手写数字识别系统的训练集和测试集 ●实践指导: 方式一:自己从网上找适合的数据下载 方式二:推荐数据集:“手写数字数据集的光学识别”一文中的数据集合,该文登载与2010年10月3日的UCI机器学习资料库中https://www.wendangku.net/doc/b014111424.html,/ml

3 功能设计与实现 3.1手写数字识别系统结构图: 图一:系统结构图 3.2识别用户选择手选文件功能设计与实现 ●任务要求: 用户可以自己从电脑中选择文本文件进行识别。 ●实践指导: KNN分类器的构造思路及原理如下: 1)选择训练集和测试集。系统所采用的数据集选用的是“手写数字数据集的光学识别”一文中的数据集合。0-9每个数字大约有200个训练数据20个测试数据。数字的文本格式如图所示。

手写体数字识别方法的研究与实现

手写体数字识别方法的研究与实现 摘要 1引言 手写体数字识别是文字识别中的一个研究课题,是多年来的研究热点,也是模式识别领域中最成功的应用之一。由于识别类型较少,在实际生活中有深远的应用需求,一直得到广泛的重视。近年来随着计算机技术和数字图像处理技术的飞速发展,数字识别在电子商务、机器自动输入等场合已经获得成功的实际应用。尽管人们对手写数字的研究己从事了很长时间的研究,并己取得了很多成果,但到目前为止,机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题,所以对手写数字识别的进一步研究,寻求如何更高效更准确更节能地实现手写数字的自动录入和识别的解决方案对提高经济效益、推动社会发展都有深远的意义。 近年来, 人工神经网技术发展十分迅速, 它具有模拟人类部分形象思维的能力, 为模式识别开辟了新的途径, 成了模拟人工智能的一种重要方法,特别是它的信息并行分布式处理能力和自学习功能等显著优点, 更是激起了人们对它的极大的兴趣。BP(Back Propagation)网络是神经网络中一种,是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,可以很好地解决非线性问题,在函数逼近、模式识别和数据压缩等方面都有很广泛的应用。我们在认真地研究了神经网络的基本原理和机制的基础上, 结合手写体数字识别这一具体课题, 提出了用BP神经网络方法来实现手写体数字 识别的方案。 2手写体数字识别概述 2.1手写数字识别简述 模式识别是六十年代初迅速发展起来的一门学科。由于它研究的是如何用机器来实现人及某些动物对事物的学习、识别和判断能力,因而受到了很多科技领域研究人员的注意,成为人工智能研究的一个重要方面。 字符识别是模式识别的一个传统研究领域。从50年代开始,许多的研究者就在这一研究领域开展了广泛的探索,并为模式识别的发展产生了积极的影响。 手写体数字识别是多年来的研究热点也是字符识别中的一个特别问题。手写体数字识别在特定的环境下,如邮政编码自动识别系统,税表和银行支票自动处理系统等一般情况。当涉及到数字识别时,人们往往要求识别器有很高的识别可靠性,特别是有关金额的数字识别时,如支票中填写的金额部分,更是如此。因此针对这类问题的处理系统设计的关键环节之一就是设计出高可靠性和高识别率的手写体数字识别方法。这个领域取得了飞速的发展,部分是由于更好的学习算法,部分是由于更优良的训练集。美国国家科学学会(NIST)建立了

数字识别的主要算法

BP神经网络识别手写数字 1.图像的预处理 对手写数字图像样本灰度化处理,二值化处理,归一化调整等预处理。其中二值化处理利用greythresh函数得到图像的全局阈值,然后使用im2bw将灰度图像转换为二值图像。 Ibw = im2bw(I1,greythresh(I1)); --Ibw为二值化图像的存储矩阵。 bw2 = edu_imgcrop(Ibw); %找到图像边界 [y2temp x2temp] = size(bw); x1=1; y1=1; x2=x2temp; y2=y2temp; % 找左边空白 cntB=1; while (sum(bw(:,cntB))==y2temp) x1=x1+1; cntB=cntB+1; end

% 左边 cntB=1; while (sum(bw(cntB,:))==x2temp) y1=y1+1; cntB=cntB+1; end % 上边 cntB=x2temp; while (sum(bw(:,cntB))==y2temp) x2=x2-1; cntB=cntB-1; end % 下边 cntB=y2temp; while (sum(bw(cntB,:))==x2temp) y2=y2-1; cntB=cntB-1; end bw2=imcrop(bw,[x1,y1,(x2-x1),(y2-y1)]); --对图像进行裁剪,使边框完全贴近字符。 归一化处理将图片归一化为28×28像素点阵图。 2.特征提取 将经过预处理的后的数字图像中提取最能体现这个字符特点的特征向量,然后提取出训练样本中的特征向量带入BP网络中就可以对网络进行训练。可以采用逐像素特征提取方法提取数字样本的特征向量。归一化后的图像形成一个28 28 的布尔矩阵,依次取每列的元素转化为784×1的列矩阵,及数字字符的特征向量。还可以对每幅单个手写体图像进行边缘裁剪后,将裁减后的二值图像

神经网络应用于手写数字识别-matlab说课讲解

神经网络应用于手写数字识别-m a t l a b

实验报告 实验课程:管理运筹学 实验名称:神经网络应用于手写数字识别-matlab 学生姓名: 指导教师: 实验时间: 2018年1月16日

实验要求: 运用matlab编程进行神经网络进行手写数字识别。 小组成员: 姓名学号 实验过程: 一、BP神经网络 神经网络是由很多神经元组成,可以分为输入,输出,隐含层。 BP神经网络的特点:信号前向传递,信号反向传播。若输出存在误差,根据误差调整权值和阈值,使网络的输出接近预期。 在用BP神经网络进行预测之前要训练网络训练过程如下: 1.网络初始化:各个参数的确定包括输入,输出,隐含层的节点数,输入和隐含,隐含和输出层之间的权值,隐含,输出层的阈值,学习速度和激励函数。 2.计算隐含层输出 3.计算输出层输出 4.误差计算 5.权值更新 6.阈值更新 7.判断迭代是否结束 二、模型建立 数据集介绍: 数据集包含0-9这10个数字的手写体。是放在10个文件夹里,文件夹的名称对应存放的手写数字图片的数字,每个数字500张,每张图片的像素统一为28*28。 识别流程: 首先要对数据进行处理,这个主要是批量读取图片和特征提取的过程,特征提取的方法很多,这里只挑选最简单的来实现,然后是训练出一个神经网络的模型,最后用测试数据进行测试。为了方面,这里的神经网络的创建,训练和测试采用matlab函数来实现。

训练 运行流程: 1.确定神经网络的输入,输出。 输入是BP神经网络很重要的方面,输入的数据是手写字符经过预处理和特征提取后的数据。预处理有二值化,裁剪掉空白的区域,然后再统一大小为70*50为特征提取做准备。特征提取采用的是粗网格特征提取,把图像分成35个区域,每个区域100像素,统计区域中1像素所占的比例。经过预处理特征提取后,28*28图像转成1*35的特征矢量。提取完5000张图片后,依次把所有的特征存于一个矩阵(35*5000)中。 2.神经的网络的训练 用matlab的rands函数来实现网络权值的初始化,网络结构为输入层35,隐藏层34,输出层10,学习速率为0.1,隐藏层激励函数为sigmoid函数。随机抽取4500张图片提取特征后输入,按照公式计算隐含层和输出层输出,误差,更新网络权值。 3.神经网络的预测 训练好神经网络之后,用随机抽取的500个数字字符对网络进行预测,输入特征向量,计算隐含层和输出层输出,得到最后预测的数据。同时计算每个数字的正确率和全体的正确率。最后得到的总体正确率为0.8620。 主函数:

手写数字识别系统的设计与实现

手写数字识别系统的设计与实现 摘要本手写数字识别系统是一个以VISUAL STUDIO C++ 6.0为编译环境,使用MFC进行图形图像界面开发的系统。主要功能是通过在点击手写数字识别菜单下的绘制数字标签弹出的绘制数字窗口中完成数字的手写,在此窗口中可以进行数字的保存及清屏,然后通过文件菜单中的打开标签打开所绘制的数字,从而进行数字的预处理,其中包括灰度化及二值化处理,然后进行特征提取,最后实现数字的识别。本系统的界面设计友好,流程正确,功能也较为完善。实验结果表明,本系统具有较高的识别率。 关键词:绘制数字;预处理;特征提取;特征库;数字识别

目录 前言 (1) 概述 (2) 1 需求分析 (4) 1.1 功能需求分析 (4) 1.2 性能需求分析 (4) 1.3 数据需求分析 (5) 1.4 相关软件介绍 (5) 2 手写数字识别系统的设计与基本原理 (6) 2.1 系统整体功能模块设计 (6) 2.2 手写数字识别系统的基本原理 (6) 2.2.1 数字图像的绘制 (6) 2.2.2 图像的预处理 (6) 2.2.3 图像的特征提取 (7) 2.2.4 特征库的建立 (8) 2.2.5 图像数字的识别 (8) 3 手写数字识别系统程序设计 (8) 3.1 数字图像的绘制 (8) 3.2数字的特征提取 (15) 3.3 模板特征库的建立 (18) 3.4 数字的识别 (20) 总结 (23)

致谢.................................... 错误!未定义书签。参考文献 (23)

前言 自上世纪六十年代以来,计算机视觉与图像处理越来越受到人们的关注,并逐渐成为一门重要的学科领域。而作为它们的研究对象的数字图像,也因为它含有研究目标的丰富信息而成为越来越重要的研究对象。图像识别的目标是用计算机自动完成某些信息的处理,用来替代人工去处理图像分类及识别的任务。 手写数字识别是图像识别学科下的一个分支,是图像处理和模式识别领域研究的课题之一,由于其具有很强的实用性一直是多年来的研究热点。由于手写体数字的随意性很大,例如,笔画的粗细,字体的大小,倾斜等等都直接影响到字符的正确识别,所以手写体数字识别是一个很有挑战性的课题。在过去的数十年中,研究者们提出了许多的识别方法,取得了较大的成果。手写体数字识别实用性很强,在大规模数据统计(如例行年检,人口普查),财务,税务,邮件分拣等等应用领域中都有广阔的应用前景。本课题拟研究手写体数字识别的理论和方法,开发一个小型的手写体数字识别系统。 在研究手写体数字识别理论和方法的基础上,开发这样一个小型的手写体数字识别系统需要完成以下主要方面的研究与设计工作:手写数字绘制的问题、数字的预处理问题、特征提取问题、特征库的建立问题、数字识别问题。

离散Hopfield神经网络的联想记忆—数字识别

%%清空环境变量 clc clear %%数据导入 load data1array_one load data2array_two %%训练样本(目标向量) T=[array_one;array_two]'; %%创建网络 net=newhop(T); %%数字1和2的带噪声数字点阵(固定法)load data1_noisy noisy_array_one load data2_noisy noisy_array_two %%数字1和2的带噪声数字点阵(随机法)%noisy_array_one=array_one; %noisy_array_two=array_two; %for i=1:100 %a=rand; %if a<0.3 %noisy_array_one(i)=-array_one(i); %noisy_array_two(i)=-array_two(i); %end %end %%数字识别 %identify_one=sim(net,10,[],noisy_array_one'); noisy_one={(noisy_array_one)'}; identify_one=sim(net,{10,10},{},noisy_one); identify_one{10}'; noisy_two={(noisy_array_two)'}; identify_two=sim(net,{10,10},{},noisy_two);

identify_two{10}'; %%结果显示 Array_one=imresize(array_one,20); subplot(3,2,1) imshow(Array_one) title('标准(数字1)') Array_two=imresize(array_two,20); subplot(3,2,2) imshow(Array_two) title('标准(数字2)') subplot(3,2,3) Noisy_array_one=imresize(noisy_array_one,20); imshow(Noisy_array_one) title('噪声(数字1)') subplot(3,2,4) Noisy_array_two=imresize(noisy_array_two,20); imshow(Noisy_array_two) title('噪声(数字2)') subplot(3,2,5) imshow(imresize(identify_one{10}',20)) title('识别(数字1)') subplot(3,2,6) imshow(imresize(identify_two{10}',20)) title('识别(数字2)')

相关文档
相关文档 最新文档