图像识别基于BP神经网络实现手写字母识别matlab源码
Posted Matlab咨询QQ1575304183
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像识别基于BP神经网络实现手写字母识别matlab源码相关的知识,希望对你有一定的参考价值。
一、简介
基于matlab GUI界面BP网络之手写体大写字母识别
人工神经网络概述:
人工神经元模型:
神经网络的分类:
按照连接方式,可以分为:前向神经网络 vs. 反馈(递归)神经网络;
按照学习方式,可以分为:有导师学习神经网络 vs. 无导师学习神经网络;
按照实现功能,可以分为:拟合(回归)神经网络 vs. 分类神经网络。
数据归一化:将数据映射到[0, 1]或[-1, 1]区间或其他的区间。
数据归一化的原因:
1.输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢、训练时间长。
2.数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小。
3.由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数的值域。例如神经网络的输出层若采用S形激活
函数,由于S形函数的值域限制在(0,1),也就是说神经网络的输出只能限制在(0,1),所以训练数据的输出就要归一化到[0,1]区间。
4.S形激活函数在(0,1)区间以外区域很平缓,区分度太小。例如S形函数f(X)在参数a=1时,f(100)与f(5)只相差0.0067。
归一化算法:
1.y = ( x - min )/( max - min );
2.y = 2 * ( x - min ) / ( max - min ) - 1。
部分函数:
参数对BP神经网络性能的影响:
隐含层神经元节点个数
激活函数类型的选择
学习率
初始权值与阈值
交叉验证
训练集
测试集
验证集
留一法
二、源代码
%Example1 手写体大写字母识别
%形成用户界面
clear all;
%添加图形窗口
H=figure('Color',[0.8 0.8 1],...
'position',[400 300 500 400],...
'Name','基于BP神经网络的手写体大写字母识别',...
'NumberTitle','off',...
'MenuBar','none');
%画坐标轴对象,显示原始图像
h0=axes('position',[0.1 0.6 0.3 0.3]);
%添加图像打开按钮
h1=uicontrol(H,'Style','push',...
'Position',[350 300 80 60],...
'String','选择图像',...
'FontSize',14,...
'Call','op');
%画坐标轴对象,显示经过预处理之后的图像
%preprocess
p1=ones(16,16);
bw=im2bw(X,0.5);%转换成二值图像
%用矩形框截取图像
[i,j]=find(bw==0);
imin=min(i);
imax=max(i);
jmin=min(j);
jmax=max(j);
bw1=bw(imin:imax,jmin:jmax);
三、运行结果
四、备注
完整代码或仿真咨询QQ1575304183
以上是关于图像识别基于BP神经网络实现手写字母识别matlab源码的主要内容,如果未能解决你的问题,请参考以下文章
图像识别基于BP神经网络的手写字体识别matlab源码含GUI界面
手写数字识别基于matlab GUI BP神经网络手写数字识别系统含Matlab源码 1639期