数字图像处理与识别实验报告.doc
4页数字图像处理与识别实验报告 实验题目:手写数字识别实验目的:使用神经网络图像识别方法对鼠标滑动输入的手写数字进行训练和识别,使计算机能够识别0~9十个数字了解机器学习和神经网络原理并且将其应用在图像处理识别中实验方法:基于反向传播(BP)神经网络方法BP拓扑网络结构:BP网络包含输入层、隐含层和输出层,每层包含了许多并行运算的神经元,层与层之间的神经元采用全互连方式,当样本输入网络后,各神经元的激励值由输入层经各隐含层向输出层传播然后计算目标输出与实际输出的误差,并按照误差减小的方向,从输出层逐层修正各连接权值,最后回到输入层,如此反复直到达到期望的输出这种信息的正向传递和误差的反向传播过程,就是BP网络每一层权值不断调整过程,也就相当于网络的学习过程它的实质是计算误差信号的最小值,采用的是梯度下降算法,按误差函数的负梯度方向修改权值本实验中可以将训练与测试同步结合起来,测试的过程中也在不断的学习本次实验采用的是神经网络中的监督式学习,也就是说外部环境有一个监督元它能为一组输入提供期望得到的输出,系统可以根据实际输出与目标输出的差值反馈给权重来调节权重的值,这一差值也就是误差信号。
在试验中,系统每次做出一个预测,会提问你预测的是否正确,若正确则不用对参数进行重新训练,若错误,则需要输入正确的值,系统对参数进行训练,这就是一个监督学习的方式基于BP神经网络的数字识别算法步骤为:a. 初始化神经单元参数包括输入层、隐藏层和输出层节点数量,本次实验的输入层是400(20×20的灰度值),隐藏层是26,输出层是10,设置最大迭代次数为50.b. 加载训练数据集将已经训练过的数字图像数据导入进来我输入的是一个20×20像素的手写数字图像,将其转化为灰度图,取400个像素值作为输入层的值实验中需要大量的训练数据,对神经网络中的参数进行训练本实验,下图为输入的黑白手写数字图像c. 初始化训练参数这里是采取的随机生成两组权重参数d. 迭代找误差最小值对应的训练参数梯度下降算法找误差最小值,再反馈回参数实验结果:(1)识别阿拉伯数字“3” (2)识别中文数字“三” (3)识别错误时进行修正训练分析讨论:(1) 这是一个可以边测试边学习的过程,随着输入数据的增加,识别率也会逐渐变高,可以收入大量不同人写的数字,避免全部由一个人手写,这样系统随着训练就愈发的能识别各种不同字迹的数字。
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; % 10个输出 %% ================ Part 2:加载训练数据集 ================fprintf('Loading and Visualizing Data ...\n')load('data.mat');m = size(X, 1);%% ================ Part 3: 初始化训练参数 ================fprintf('\nInitializing Neural Network Parameters ...\n')initial_Theta1 = randInitializeWeights(input_layer_size,hidden_layer_size);initial_Theta2 = randInitializeWeights(hidden_layer_size, num_labels);initial_nn_params = [initial_Theta1(:) ; initial_Theta2(:)];%% ================ Part 4: 迭代找误差最小对应的参数================fprintf('\nTraining Neural Network... \n')options = optimset('MaxIter', 50); % 迭代50次lambda = 1;costFunction = @(p) nnCostFunction(p, ... input_layer_size, ... hidden_layer_size, ... num_labels, X, y, lambda); % 误差反馈找参数[nn_params, cost] = fmincg(costFunction, initial_nn_params, options);Theta1 = reshape(nn_params(1:hidden_layer_size * (input_layer_size + 1)), ...hidden_layer_size, (input_layer_size + 1));Theta2 = reshape(nn_params((1 + (hidden_layer_size * (input_layer_size + 1))):end), ...num_labels, (hidden_layer_size + 1)); % 分离参数矩阵 / 文档可自由编辑打印。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


