基于matlab的手写体数字识别系统研究

基于matlab的手写体数字识别系统研究

        摘要:随着科学技术的发展,机器学习成为一大学科热门领域,是一门专门研究计算机怎样模拟或实现人类的学习行为的交叉学科。文章在matlab软件的基础上,利用BP神经网络算法完成手写体数字的识别。

        关键词:机器学习;手写体数字识别;BP神经网络

        机器学习是一门多领域交叉学科,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织己有的知识结构,使之不断改善自身的性能。实现机器学习的方法多种多样,常见到的主要有神经网络算法、CNN卷积神经网络算法、RNN循环神经网络算法、EM算法、贝叶斯算法、聚类算法、回归算法、SVM等。本文将利用BP神经网络算法来完成手写体数字的识别[1]。

        1总体方案

        1.1题目分析

        手写体数字识别的实现相对于其他元素的识别,具有许多优势。主要表现在以下几个方面:(1)涉及的识别元素数目少,仅有0〜9共10个元素;(2)训练集合背景多为纸张,受到的环境干扰小;(3)识别元素笔画简单,便于识别;(4)训练集合便于采集。

        在此基础上,之所以选取BP神经网络作为工具来实现手写体数字识别,其优势主要体现在:(1)BP神经网络算法具有很强的非线性拟合能力,可以影射任何的非线性复杂关系;(2)学习规则简单,便于计算机实现[2]。

        1.2总体方案设计

        本次试验是识别手写体数字,大体上可以分为两个阶段来实行,分别是训练神经网络和利用神经网络进行识别(预测)。要进行本次试验,首先要下载一个手写体数字素材库,将随机选取素材库中的一部分素材作为训练样本,提取训练样本的特征并以此对神经网络进行训练,这一阶段过后,会得到一个训练成型的神经网路模型。然后利用总样本除去训练样本所剩下的预测样本进行准确度的检验,观察预测的输出是否符合客观实际,多大程度上符合客观实际。

        如果得到的最终结果具有比较大的准确度,那么本次试验即成功完成。

        通过查阅资料,搜集到了总共5000张每个数字500张的手写体数字图片作为本次实验的素材,随机选取4500张图片作为训练样本,剩下的500张图片作为检验样本[3]。

        2算法基本原理

        本算法以BP神经网络模型为基础,通过构建图像读取模块、特征提取模块、标签构造模块、训练集/测试集划分模块、神经网络构建以及训练模块、神经网络测试模块和正确率计算模块几个主要模块来实现手写体数字识别这一基本功能,接下来分模块对其原理进行叙述[4]。

        2.1图像读取模块

        图像读取模块的功能是对搜集到的素材进行数字化的处理,读取到计算机中的模块。其中我们采取了imread函数将5000张手写体数字图片输入计算机。由于计算机的图像存储规则,最终会得到1X5000=5000个图像矩阵,每个图像矩阵都具有其保存的对应图像的绝大部分信息。这些图像矩阵都保存在Cell型变量中,作为后文应用的基础素材。2.2特征提取块特征提取模块即对获得的数字图像进行特征提取。大致的思路如下。首先将将得到的黑白灰度图像在一个合理阈值的范围内转化为二值图像。其次对上一阶段中获得的5000张数字图像(数字矩阵)每一张图像都进行分块处理,再将每一个小的分块看成是一个具体的单位,统计其中有黑色像素存在的小的像素点的个数,并与总像素点的个数做除法得到存在黑色像素的占比大小,将这个占比大小作为每个具体分块单位的特征数据,计入特征矩阵。

        在本模块中除了进行特征提取,还对图片的大小进行了统一化的裁切处理,方便后面的应用[5]。

        2.3标签构造模块

        标签构造模块的目的就是构造出每个具有特征的数字图像所对应的真实值,即标签。这一点是至关重要的,也是进行新图像识别(分类)的基础。在后面的处理中,无论如何变幻原图像,必须保持其与所对应标签的一致性。只有将一组特征(处理后的数据)与最后的标签对应起来,才能保证神经网络训练的有效性。构造标签矩阵的方法较为多样,在这里就不做赘述。

        2.4训练集/测试集划分模块

        这一模块的主要功能就是划分出训练集与测试集。在这里必须本着随机性均匀性的原则对总的数据集进行划分,这样才能保证最终结果的可靠性。在划分训练集与测试集的同时,需要把标签矩阵的对应元素也同样本数据(特征)一一对应地一并划分,将二者同时作为神经网络训练的输入进行训练。通过这一阶段,我们划分获得了4500个数字图像/对应标签作为训练集,500个数字图像/对应标签作为测试集。

        2.5神经网络的构建及训练模块

        这个模块的主要功能就是对神经网络进行构建与训练。在这一阶段笔者采用Matlab神经网络工具箱中的相关函数对输入其中的4500组数据链接神经网络进行反复训练,最终得到一个成型的神经网络模型用于后文的预测处理。

        2.6神经网络预测模块

        这个模块使用的是全部集合中除去训练集剩下的测试集进行预测判断的。在这一阶段通过simulink仿真将500组测试集对应的预测数据全部输出,以备进行最终的准确度检验。

        2.7准确度检验模块

        将最终的simulink仿真结果保存在一个矩阵中,通过将这个矩阵的元素与对应的客观真实的标签矩阵进行比较,统计出预测正确的数目,再与总预测数目相比较得到预测正确的数目占预测总数目的百分比,最终得到的即为预测的准确度[6]。

        3系统实现

        在算法中,通过unread函数进行图片的读取,读取得到的每个图片的数字信息储存在Cell类型的变量中,然后通过graythresh和im2bw函数获取一个合理的阈值将灰度图转化为二值图像,之后利用imcrop函数对图像的大小统一化处理。接下来进行数字图像的特征提取。通过对数字图像进行分块划分,将原始图像矩阵划分为多个图像子矩阵,同时将划分出的块落(每个子矩阵)当作一个具体的单位点来看待。编写相关函数统计每个子矩阵中黑色像素存在的元素数占总元素数的比值作为对应子矩阵当前点的特征数据,将若干个子矩阵的特征数据组合按照原先划分的位置重新组合成为一个特征矩阵,作为当前图像的特征矩阵进行后续操作。之后进行标签的构造,选用ones函数生成几个子标签矩阵,再通过矩阵的操作生成整个标签矩阵。以从1开始自大到小依次进1的矩阵重新随机排列的元素作为选定训练集与测试集的依据,取前4500作为训练集,取后500作为测试集,这样一来就达到了随机性均匀性的要求。完成了以上几个步骤,接下来进行神经网络的创建和训练。利用神经网络工具箱输入4500组测试数据和其对应的标签,通过srniulmk仿真将神经网络模型成型。有了神经网络模型,就可以编写函数对监测样本进行预测,观察预测结果是否符合客观实际。最终将预测结果与实际结果(实际标签)相比较,统计预测正确结果的个数并计算其占测试样本总数的百分比,得到正确率[7]。

        4实验的缺陷和不足

        本次试验仍存在一些不足之处。(1)由于本次试验采取的是黑白两色的数字进行识别,因此在转换二值图像部分具有较好的效果,若是采用彩色图像则效果欠佳,以至于影响后面的特征提取。(2)本次试验采用的5000张手写体数字图像规格相同、字体大小相同且字体均位于图像正中央,这为成功率作出了较大的贡献。反之若选取杂乱图像,效果必定欠佳。

        5结语

        通过多次利用十折交叉法进行结果检验,本实验最终得到的平均准确率为85.4%。在此条件下可以认为测试结果具有较高的准确率,即手写体数字识别完成良好。

        21世纪是科技与人类社会紧密结合的一个世纪。机器学习作为一个应用广泛的学科领域,无疑走在了科技的前列。相信在未来,手写体数字识别作为一个较狭窄的应用领域,会焕发出其应有的活力。

        [参考文献]

        [1]许欢.李群机器学习模型及应用研究[D].苏州:苏州大学,2007.

        [2]何清,李宁,罗文销,等.大数据下的机器学习算法综述[J].模式识别与人工智能,2014(4):327-336.

        [3]段向军.基于神经网络的预测控制方法研究[D].大庆:大庆石油学院,2005.

        [4]杨梦铎,李凡长,张莉.李群机器学习十年研究进展[J].计算机学报,2015(7):1337-1356.

        [5]朱晓波.基于BP神经网络的手写体数字识别分析与研究[D].武汉:武汉科技大学,2003.

        [6]白天毅.基于神经网络的手写体数字识别关键技术研究[D].西安:西安工业大学,2014.

        [7]黄巧巧.基于BP神经网络的手写数字识别系统研究[D].武汉:华中师范大学,2009.

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值