图像识别基于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界面

图像识别基于BP神经网络的手写字体识别matlab源码

图像识别基于BP神经网络的手写字体识别matlab源码

手写数字识别基于matlab GUI BP神经网络手写数字识别系统含Matlab源码 1639期

手写数字识别基于matlab GUI BP神经网络单个或连续手写数字识别系统含Matlab源码 2296期

手写数字识别基于matlab GUI BP神经网络单个或连续手写数字识别系统含Matlab源码 2296期