logo资料库

卷积神经网络手写体识别设计论文.docx

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
一、引言
(一)字符识别概述
二、训练过程
(一)模板图像预处理
1图像格式处理
2图像大小处理
(二)训练过程
1训练样本概述
2训练过程描述
3神经网络算法
(三)训练结果
三、汉字识别测试
(一)识别测试
目 录 摘 要·······································································1 关键词·······································································1 Abstract·······································································1 Key words·······································································1 一、引言·······································································2 (一)字符识别概述································································2 (二)基于 MATLAB 手写汉字识别系统设计流程·································2 二、训练过程·······································································2 (一)模板图像预处理·····························································2 (二)训练过程···································································3 (三)训练结果···································································5 三、汉字识别测试·································································6 (一)识别测试···································································6 (二)识别测试结果分析···························································7 4 系统结果分析总结····························································9 附 录······································································10 参考文献·······································································11
基于 MATLAB 的卷积神经网络 手写体识别 田晓森 【摘 要】:手写体汉字识别是一种利用计算机自动辨认出手写体汉字的技术, 是基于光学字符识别领域的一个应用方向。手写体汉字识别有着很高的实用价值, 除此之外,手写体汉字识别还具有全世界通用的符号、识别种类较少、有助于作 深入分析等特点,因此人们在手写体汉字识别领域投入了极大的关注。 本文研究的工作主要集中在图像预处理、图像的特征提取、训练和图像识别,并 实现一个完整的基于 C/S 模式的远程手写体汉字识别系统—服务器端子系统的 开发。 【关键词】:手写体汉字识别;二值化;区域分割;网格法特征提取;模板匹配 The System Design of Handwritten Recognition Based On MATLAB Tian Xiaosen [Abstract]The handwritten word recognition is a technology, which auto recognizes the handwriting Arabian word via computers, and a applied orientation in the Optical Character Recognition technology. The handwritten word recognition has a high practical value, in addition, the handwritten word recognition also has the world's universal symbols, identify types of small, contribute to in-depth analysis of the characteristics, so people in the field of handwritten word recognition invested a great deal of attention. This study is mainly concentrated in the image preprocessing, image feature extraction , training and image recognition, and to achieve a complete based on MATLAB handwriting recognition system-server system. [Keywords] Handwritten word recognition; Binarization; Zone division; Mesh method of feature extraction ; Template matching 1
一、 引言 (一)字符识别概述 手写汉字识别(Handwritten Word Recognition,简称 HWR)是光学字符识别的一个分 支,它的任务是把手写汉字通过非键盘方式输入到计算机中,以便作进一步的处理和应用, 给计算机建立视觉系统,自动辨识人用笔写在纸(介质)上的汉字。它属于模式识别、人工 智能的一个重要分支,涉及到模式识别和图像处理、人工智能、统计决策理论、模糊数学、 组合数学、信息论、计算机等学科;同时也涉及心理学等,是介于基础研究与应用研究之间 的一门综合性的技术,在办公室、机器翻译等方面具有重大实用意义。手写体汉字的识别是 人们研究较为深入的一个领域。文字识别作为计算机技术的一个领域在许多的环境当中都有 着非常广泛的应用。文字识别是新一代智能计算机接口的重要组成部分。近二十年来,国内 外对各种字符进行了广泛深入的研究,研究出了许多非常有效的识别算法,与此同时用于各 种字符识别的应用软件也越来越丰富。 (二) 基于 MATLAB 手写汉字识别系统设计流程 预处理 样本训练 训练样本输入 卷积神经网络 训练样本 特征库 输出 识 别 图 1.1 系统流程图 二、 训练过程 (一)模板图像预处理 预处理是一个良好的识别系统必不可少的环节。预处理如果处理得不太好,整个系统的 识别率会在很大程度上降低。对于一般手写体汉字识别而言,预处理的方法包括平滑、去噪、 二值化、归一化、细化等等。本文所研究的主要是在纸上写的手写体汉字进行识别,所用预 处理的方法是图像格式处理和图像大小处理。 1 图像格式处理 由于 BMP 图像涵盖信息更为全面,可以为后续的识别提供充足的资源,所以将图像格式 统一处理为 BMP 图像文件 2 图像大小处理 在手写体数字识别过程中,由于是基于 MATLAB 的软件平台去完成卷积神经网络的识别, 2
MATLAB 在对图像识别时往往是依据矩阵来进行识别,这时就需考虑到图像的大小,即像素 的纵横比,在处理图像大小过程中,可以采用图片工具将图片以恒定纵横比截取保存,即可 保证图像的大小一致 (二)训练过程 1 训练样本概述 在建立一个模式识别系统时,为了训练每个汉字的模型,通常需要将该系统各个汉字采 集的样本数据作为训练数据。为了测试系统的性能,也需要采集一些样本数据作为测试数据。 在采用相同的特征和识别器的条件下,训练数据决定了训练出的模型的性能,测试数据则影 响对系统性能的评价。训练数据和测试数据构成了一个模式识别系统在建立阶段可用的数据。 2 训练过程描述 为了训练好每个汉字的模型,需要选择不同的人分别书写每个汉字。本系统采用文件的 方式存储在训练过程中提取每个人书写的每个数字的特征。选择 10 个人在系统的输入区中, 分别书写 506 个汉字。 3 神经网络算法 人工神经网络源于人脑神经系统的一类模型,是模拟人工智能的一条重要途径,具有模 拟人的部分形象思维的能力。它是由简单信息处理单元(人工神经元)互联组成的网络,能接 受处理信息,网络的信息处理由处理单元间的互相作用来实现,它是通过把问题表达成处理 单元间的连接权来处理。 第 m 层隐层的节点与第 m-1 层的节点的局部子集,并具有空间连续视觉感受野的节点 (就是 m-1 层节点中的一部分,这部分节点在 m-1 层都是相邻的)相连。CNN 通过加强神 经网络中相邻层之间节点的局部连接模式(Local Connectivity Pattern)来挖掘自然图像(中 的兴趣目标)的空间局部关联信息。如图 3.1 所示。 图 3.1 m+1 层的节点与它下面一层的节点有着相似的连接属性,所以 m+1 层的节点仍与 m 层 中 3 个相邻的节点相连,但是对于输入层连接数就变多了,在本图中是 5。这种结构把训练 好的滤波器构建成了一种空间局部模式根据上面图,多层堆积形成了滤波器,它也变得更具 有全局性了。比如,在上图中,第 m+1 层能够对宽度为 5 的非线性特征进行编码。CNN 中, 每一个稀疏滤波器 hi 在整个感受野中是重复叠加的,这些重复的节点形式了一种特征图 (feature map),这个特种图可以共享相同的参数,比如相同的权值矩阵和偏置向量。 图 3.2 3
如图 3.2,属于同一个特征图的三个隐层节点, 梯度下降算法仍然可以用来训练这些共 享的参数,只需要在原算法的基础上稍作改动即可。共享权重的梯度可以对共享参数的梯度 进行简单的求和得到。 图 3.3 为卷积神经网络结构图: 图 3.3 卷积神经网络结构 第一层:数据输入层:输入为 32*32 的矩阵图片。这里需要注意的点:数据的归一化, 这里的归一化是广义的,不一定要归到 0-1,但要是相同的一个区间范围,一般我们的灰度 图为 0-255。其次,数据的去均值,如果样本有非零的均值,而且与测试部分的非零均值不 一致,可能就会导致识别率的下降。 第二层:卷积层 c1:卷积层是卷积神经网络的核心,通过不同的卷积核,来获取图片 的特征。卷积核相当于一个滤波器,不同的滤波器提取不同特征。 第三层:pooling 层:基本每个卷积层后边都会接一个 pooling 层,目的是为了降维。一 般都将原来的卷积层的输出矩阵大小变为原来的一半,方便后边的运算。另外,pooling 层 增加了系统的鲁棒性,把原来的准确描述变为了概略描述,矩阵大小为 14*14,必然有一部 分信息丢失,但一定程度上防止了过拟合。 第四层:卷积层:与之前类似,但这里不是全连接,在之前的特征中进一步提取特征, 对原样本进行更深层次的表达。 第五层:pooling 层:与之前类似。 第六层:卷积层(全连接):这里有 120 个卷积核,这里是全连接的。将矩阵卷积成一 个数,方便后边网络进行判定。 第七层:全连接层:和 MLP(多层神经网络)中的隐层一样,获得高维空间数据的表达。 第八层:输出层:这里一般采用 RBF(高斯函数)网络,每个 RBF 的中心为每个类别的 标志,网络输出越大,代表越不相似,输出的最小值即为网络的判别结果。 我们考虑的是如何用 Matlab 内置的图像处理函数去实现上采样和下采样的操作。对于 上采样,imresize 函数可以搞定,但需要很大的开销。一个比较快速的版本是使用 Kronecker 乘积函数 kron。通过一个全一矩阵 ones 来和我们需要上采样的矩阵进行 Kronecker 乘积, 就可以实现上采样的效果。对于前向传播过程中的下采样,imresize 并没有提供在缩小图像 的过程中还计算 nxn 块内像素的和的功能,所以没法用。一个比较好和快速的方法是用一个 全一的卷积核来卷积图像,然后简单的通过标准的索引方法来采样最后卷积结果。例如,如 果下采样的域是 2x2 的,那么我们可以用 2x2 的元素全是 1 的卷积核来卷积图像。然后再卷 积后的图像中,我们每个 2 个点采集一次数据,y=x(1:2:end,1:2:end),这样就可以得到了两 倍下采样,同时执行求和的效果。 训练样本库局部图如下: 4
图 3.4 训练样本局部图 Matlab 中对 sigmoid 函数进行 inline 的定义会更快,其实不然,Matlab 与 C/C++等等语 言不一样,Matlab 的 inline 反而比普通的函数定义更非时间。所以,我们可以直接在代码中 使用计算 sigmoid 函数及其导数的真实代码。 (三)训练结果 训练好的样本会生成一个数据库文件,当再次输入一个新的手写字体时,这时程序会自 动与训练好的数据库中的模板去进行匹配,图 3.5 为数据库生成图: CNN 的训练主要是在卷积层和子采样层的交互上,其主要的计算瓶颈是: 1)前向传播过程:下采样每个卷积层的 maps; 2)反向传播过程:上采样高层子采样层的灵敏度 map,以匹配底层的卷积层输出 maps 的大小; 3)sigmoid 的运用和求导。 CNN 代码需要多个相互配合才能成功完成手写汉字识别的模板库训练,用 CNN 代码去训 练模板库时,往往会出现诸多问题,在确保 MATLAB 时最新版本的情况下需考虑训练模板库 的可识别性,图 3.3 为训练程序运行结果示意图,由图 3.4 可见最终训练结果可以达到百分 之百: 图 3.3 训练程序运行图 5
图 3.4 训练结果 在此需说明的是,数据库生成后,在文件夹仅有数据库和主函数的情况下,程序仍可正 图 3.5 生成数据库文件 常运行,大大节省了存储空间。 三、汉字识别测试 (一)识别测试 模式识别最基本的研究问题是样品与样品之间相似性测试问题。判断样品之间的相似度 常采用近邻准则,即将待分类样品与标准模板进行比较,看跟哪个模板匹配程度更好些,从 而确定待测样品的分类。近邻法则在原理上属于模板匹配。它将训练样品集中的每个样品都 作为模板,用测试样品与每个模板做比较,看与那个模板最相似,就按最近似的模板的类别 作为自己的类别。图 4.2 为手写汉字的识别结果,系统最多可输出 9*9 个汉字: 图 4.2 图像识别结果 6
(二)识别测试结果与分析 训练好的样本会生成一个数据库文件,当再次输入一个新的手写字体时,这时程序会自 动与训练好的数据库中的模板去进行匹配,如图 3.2 为训练的目标误差曲线图,由图可见, 我们设置的可接受误差为 0.01,随着模板库的不断训练,误差曲线不断下降,最终趋近于我 们的设定,并且逐渐低于设定值,则可见我们训练的结果是成功的,由上述的图 3.4 更可以 直观的看出识别率达到百分之 98 到百分之百: 图 5.1 目标误差曲线图 由图 5.2 可见,系统可同时识别 9*9 个汉字,不断测试发现,如下图所示,识别结果无 差错,识别率极高 7
分享到:
收藏