数字图像处理与识别实验报告.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字图像处理与识别实验报告

数字图像处理与识别实验报告 实验题目:手写数字识别 实验目的:使用神经网络图像识别方法对鼠标滑动输入的手写数字进行训练和识别,使计算机能够识别0~9十个数字。了解机器学习和神经网络原理并且将其应用在图像处理识别中。 实验方法:基于反向传播(BP)神经网络方法 BP拓扑网络结构: BP网络包含输入层、隐含层和输出层,每层包含了许多并行运算的神经元,层与层之间的神经元采用全互连方式,当样本输入网络后,各神经元的激励值由输入层经各隐含层向输出层传播。然后计算目标输出与实际输出的误差,并按照误差减小的方向,从输出层逐层修正各连接权值,最后回到输入层,如此反复直到达到期望的输出。 这种信息的正向传递和误差的反向传播过程,就是BP网络每一层权值不断调整过程,也就相当于网络的学习过程。它的实质是计算误差信号的最小值,采用的是梯度下降算法,按误差函数的负梯度方向修改权值。本实验中可以将训练与测试同步结合起来,测试的过程中也在不断的学习。 本次实验采用的是神经网络中的监督式学习,也就是说外部环境有一个监督元。它能为一组输入提供期望得到的输出,系统可以根据实际输出与目标输出的差值反馈给权重来调节权重的值,这一差值也就是误差信号。在试验中,系统每次做出一个预测,会提问你预测的是否正确,若正确则不用对参数进行重新训练,若错误,则需要输入正确的值,系统对参数进行训练,这就是一个监督学习的方式。 基于BP神经网络的数字识别算法步骤为: 初始化神经单元参数。包括输入层、隐藏层和输出层节点数量,本次实验的输入层是400(20×20的灰度值),隐藏层是26,输出层是10,设置最大迭代次数为50. 加载训练数据集。将已经训练过的数字图像数据导入进来。我输入的是一个20×20像素的手写数字图像,将其转化为灰度图,取400个像素值作为输入层的值。实验中需要大量的训练数据,对神经网络中的参数进行训练。本实验,下图为输入的黑白手写数字图像。 初始化训练参数。这里是采取的随机生成两组权重参数。 迭代找误差最小值对应的训练参数。梯度下降算法找误差最小值,再反馈回参数。 实验结果: (1)识别阿拉伯数字“3” (2)识别中文数字“三” (3)识别错误时进行修正训练 分析讨论: 这是一个可以边测试边学习的过程,随着输入数据的增加,识别率也会逐渐变高,可以收入大量不同人写的数字,避免全部由一个人手写,这样系统随着训练就愈发的能识别各种不同字迹的数字。 识别的正确与否与手写数字的大小和位置有一定关系,写的偏小或者写在边角识别不准确。 系统具有自学习过程,我原本训练的是阿拉伯数字3,后来尝试加入中文数字三,经过反复训练,系统对于3和三都能正确识别。 附录:Matlab重点程序 %%开启图形视窗 case start, FigHandle = figure(WindowButtonDownFcn,NumberDrawdown,Color,black); axis([1 imSize 1 imSize]); % 设定图轴范围% axis off; grid off; box on; %将图轴加上图框 title(手写体输入框); % 按键回调函数调用,判断结论是否正确,若不正确加入训练集重新训练 uicontrol(Parent,FigHandle,Position,[360 6 70 30],String,识别,Callback,...[exa=(rgb2gray(frame2im(getframe(gca))));,B =imresize(exa,[20 20]);,...BB =double(B)./255;,pred = predict(Theta1, Theta2, reshape(BB,1,400));,correct(reshape(BB,1,400),pred);,training]); uicontrol(Parent,FigHandle,Style,pushbutton,Position,[270 6 70 30],String,训练,Callback,training); uicontrol(Parent,FigHandle,Style,pushbutton,Position,[450 6 70 30],String,清除,Callback,cla); 训练部分: %% ================ Part 1:设置神经单元参数 ================ input_layer_size = 400; % 20×20 输入灰度值 hidden_layer_size = 26; % 26个隐藏层单元 num_labels = 10;

文档评论(0)

feixiang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档