主要内容
近年来,人工神经网络技术取得了巨大的发展,它所具有的优势:固有的并行结构和并行处理、知识的分布存储、容错性、自适应性、模式识别能力,为手写体数字识别开辟了新的途径。
数字识别作为模式识别的一个重要分支,在邮政、税务、交通、金融等行业的实践活动中有着及其广泛的应用。
数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值。一方面,阿拉伯数字是世界各国通用 的符号,因此,数字是一个重要枢纽。在符号识别领域, 数字识别为这一领域提供了一个算法研究的平台。另一方 面,数字的识别方法很容易推广到其它一些相关问题,特 别是对英文字母的识别,但到目前为止机器的识别本领还 无法与人的认知能力相比,这仍是一个有难度的开放问题。
模式识别 (Pattern Recognition)是对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程。它是信息科学和人工智能的重要组成部分。而数字识别作为模式识别的一个分支。在日常生活和科研中具有十分重要的作用。数字识别的算法一般是采用以知识、神经网络、人工智能为基础的模板匹配法、轮廓多边形相关、傅立叶系数法等方法来进行识别的。以上方法识别效率高,但是实现较为复杂。
图像输入
灰度转化
二值化
图像锐化
归一化
去除噪声
图1 图像处理流程
经过预处理,把原来大小不同、分布不规律的各字符变成大小一样、排列整齐的字符。下面要从预处理完的字符中提取最能体现这一个字符的特征向量,将提取出的训练样本中的特征向量代入BP网络中就可以对BP网络进行训练。提取出待识别的样本中特征向量代入训练好的BP网络中就可以进行识别。在这里采取逐像素特征提取法,方法是对图像进行逐行逐列扫描,当遇到黑色像素时,取其特征值为1,当遇到白色像素时,取其特征值为0。这样扫描结束后就形成一个维数与图像中像素点的个数相同的特征向量矩阵。
3.2. BP神经网络
3.2.1. BP算法的多层感知器
图2 三层BP网
采用BP算法的多层感知器是至今为止应用最广泛的神
经网络,在多层感知器的应用中,一般习惯将单隐层感知器称为三层感知器,所谓三层包括了输入层、隐层和输出层。
知器
(反向)逐层“传播”输出层的误差,以间接算出隐层误差。分两个阶段:
正向过程
a ( k )
f ( n
BP
算法
( k ) )
j j
n ( k )
i
w ( k
) a ( k
1 )
w ( k ) a
( k 1 )
j j i j i
BP
算法
法
1 S 2 1 T
j
J s s e
2 S
( t j
( t
2 S
a ) ( t a )
w
J
J
n j
J
a ( k
1 )
j w n w n
j j j j
BP
算法
J
局部梯度
J a j
( t
a ) f ' ( n )
j
j n
j
a j n j
j j j
扩展delta 学习规则
w j j
a ( k 1 )
( t j
' ( n
) a ( k 1 )
1 ' e n
a f
( n )
1 e n
f ( n )
(1
e n ) 2
a (1 a )
w j
( t j
j (1
a j ) a
( k 1 )
BP
后层的全部单元
J
i
j
J
n ( k 1 )
a j
都受nj的影响
n j i n i
w f ' ( n )
a j
n j
nj w ni i
i j i j
i
aj ji
w
a ( k
1 )
(
w f
' ( n
) )a
( k 1 )
j j i j i j
i
δj δi
w
ji
局部梯度的反向传播
BP
算法
初始值选择
W ( 0 )
a k ( t )
j
( t j
j (1
a j )
j
a j (1
a j )
i
w j ii
w i j
j a i
w i j ( t
1 )
w i j ( t )
3.2.2.BP算法过程
图3 BP学习算法的流程图
(1)BP神经网络的设计方法
按照BP神经网络设计方法选用两层BP网络。采用newff函数来建立BP网络。其输入节点数为16×16=256,隐层传输函数为Sigmoid函数。假设用一个输出节点表示10个数字,则输出层传输函数为pureline,隐层节点数为 ,取25。
(2)神经网络仿真程序设计
构造训练样本集,并构成训练所需的输入向量p和目标向量t. 通过画图工具获得数字。本例构造了新宋体12号、8号字体各10 个,黑体12号、8号各10个,及宋体加粗18号字体。
(3)神经网络测试。
由于图像处理的复杂性,对于不同噪声的污染选择不同的方法,选择没有噪声的数字进行测试。选择训练样本中的任意数据进行测试,结构非常正确。选择生成的新宋体8号大小的数字进行测试。结果正确,选择其他类型的字体进行测试,则结果不是完全正确。
图4 数字0的识别效果 图5 数字4的识别效果
本课题结合神经网络技术,对数字识别问题进行了探讨和研究,主要研究成果如下:(1)针对数字数据,首先进行了灰度化、二值化、平滑去噪、归一化、细化等常规预处理,然后对处理完的数字图像进行特征提取, 提取了能体现字符特点的特征向量。(2)针对数字识别问题,研究了BP神经网络分类器的建立和识别过程。
仿真结果表明,对于字体和字号与训练样本集相同 的测试样本,无论图像中的数字在什么位置,都可以识 别出来,而对于字体和字号与训练样本集不同的测试样 本,只有一部分能正确识别。并且对于带有噪声的数字, 运行程序的实验结果是不理想的,所以本课题程序有待 于进一步的整理和调试。为提高识别率,可以增加训练 样本,或通过增加字体的特征向量等途径来解决。
基于BP神经网络的数字识别
主要内容
近年来,人工神经网络技术取得了巨大的发展,它所具有的优势:固有的并行结构和并行处理、知识的分布存储、容错性、自适应性、模式识别能力,为手写体数字识别开辟了新的途径。
数字识别作为模式识别的一个重要分支,在邮政、税务、交通、金融等行业的实践活动中有着及其广泛的应用。
数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值。一方面,阿拉伯数字是世界各国通用 的符号,因此,数字是一个重要枢纽。在符号识别领域, 数字识别为这一领域提供了一个算法研究的平台。另一方 面,数字的识别方法很容易推广到其它一些相关问题,特 别是对英文字母的识别,但到目前为止机器的识别本领还 无法与人的认知能力相比,这仍是一个有难度的开放问题。
模式识别 (Pattern Recognition)是对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程。它是信息科学和人工智能的重要组成部分。而数字识别作为模式识别的一个分支。在日常生活和科研中具有十分重要的作用。数字识别的算法一般是采用以知识、神经网络、人工智能为基础的模板匹配法、轮廓多边形相关、傅立叶系数法等方法来进行识别的。以上方法识别效率高,但是实现较为复杂。
图像输入
灰度转化
二值化
图像锐化
归一化
去除噪声
图1 图像处理流程
经过预处理,把原来大小不同、分布不规律的各字符变成大小一样、排列整齐的字符。下面要从预处理完的字符中提取最能体现这一个字符的特征向量,将提取出的训练样本中的特征向量代入BP网络中就可以对BP网络进行训练。提取出待识别的样本中特征向量代入训练好的BP网络中就可以进行识别。在这里采取逐像素特征提取法,方法是对图像进行逐行逐列扫描,当遇到黑色像素时,取其特征值为1,当遇到白色像素时,取其特征值为0。这样扫描结束后就形成一个维数与图像中像素点的个数相同的特征向量矩阵。
3.2. BP神经网络
3.2.1. BP算法的多层感知器
图2 三层BP网
采用BP算法的多层感知器是至今为止应用最广泛的神
经网络,在多层感知器的应用中,一般习惯将单隐层感知器称为三层感知器,所谓三层包括了输入层、隐层和输出层。
知器
(反向)逐层“传播”输出层的误差,以间接算出隐层误差。分两个阶段:
正向过程
a ( k )
f ( n
BP
算法
( k ) )
j j
n ( k )
i
w ( k
) a ( k
1 )
w ( k ) a
( k 1 )
j j i j i
BP
算法
法
1 S 2 1 T
j
J s s e
2 S
( t j
( t
2 S
a ) ( t a )
w
J
J
n j
J
a ( k
1 )
j w n w n
j j j j
BP
算法
J
局部梯度
J a j
( t
a ) f ' ( n )
j
j n
j
a j n j
j j j
扩展delta 学习规则
w j j
a ( k 1 )
( t j
' ( n
) a ( k 1 )
1 ' e n
a f
( n )
1 e n
f ( n )
(1
e n ) 2
a (1 a )
w j
( t j
j (1
a j ) a
( k 1 )
BP
后层的全部单元
J
i
j
J
n ( k 1 )
a j
都受nj的影响
n j i n i
w f ' ( n )
a j
n j
nj w ni i
i j i j
i
aj ji
w
a ( k
1 )
(
w f
' ( n
) )a
( k 1 )
j j i j i j
i
δj δi
w
ji
局部梯度的反向传播
BP
算法
初始值选择
W ( 0 )
a k ( t )
j
( t j
j (1
a j )
j
a j (1
a j )
i
w j ii
w i j
j a i
w i j ( t
1 )
w i j ( t )
3.2.2.BP算法过程
图3 BP学习算法的流程图
(1)BP神经网络的设计方法
按照BP神经网络设计方法选用两层BP网络。采用newff函数来建立BP网络。其输入节点数为16×16=256,隐层传输函数为Sigmoid函数。假设用一个输出节点表示10个数字,则输出层传输函数为pureline,隐层节点数为 ,取25。
(2)神经网络仿真程序设计
构造训练样本集,并构成训练所需的输入向量p和目标向量t. 通过画图工具获得数字。本例构造了新宋体12号、8号字体各10 个,黑体12号、8号各10个,及宋体加粗18号字体。
(3)神经网络测试。
由于图像处理的复杂性,对于不同噪声的污染选择不同的方法,选择没有噪声的数字进行测试。选择训练样本中的任意数据进行测试,结构非常正确。选择生成的新宋体8号大小的数字进行测试。结果正确,选择其他类型的字体进行测试,则结果不是完全正确。
图4 数字0的识别效果 图5 数字4的识别效果
本课题结合神经网络技术,对数字识别问题进行了探讨和研究,主要研究成果如下:(1)针对数字数据,首先进行了灰度化、二值化、平滑去噪、归一化、细化等常规预处理,然后对处理完的数字图像进行特征提取, 提取了能体现字符特点的特征向量。(2)针对数字识别问题,研究了BP神经网络分类器的建立和识别过程。
仿真结果表明,对于字体和字号与训练样本集相同 的测试样本,无论图像中的数字在什么位置,都可以识 别出来,而对于字体和字号与训练样本集不同的测试样 本,只有一部分能正确识别。并且对于带有噪声的数字, 运行程序的实验结果是不理想的,所以本课题程序有待 于进一步的整理和调试。为提高识别率,可以增加训练 样本,或通过增加字体的特征向量等途径来解决。