图像识别基于BP神经网络的手写字体识别matlab源码含GUI界面
Posted Matlab走起
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像识别基于BP神经网络的手写字体识别matlab源码含GUI界面相关的知识,希望对你有一定的参考价值。
人工神经网络是人工智能研究的一种方法。实际上人工神经网络(Artificial Neural Netwroks,简称ANN)是对人类大脑系统的一种仿真,简单地讲,它是一个数学模型,可以用电子线路来实现,也可以用计算机程序来模拟,由大量的、功能比较简单的形式神经元互相连接而构成的复杂网络系统,用它可以模拟大脑的许多基本功能和简单的思维方式。尽管它还不是大脑的完美无缺的模型,但它可以通过学习来获取外部的知识并存贮在网络内,可以解决计算机不易处理的难题,特别是语音和图像的识别、理解、知识的处理、组合优化计算和智能控制等一系列本质上是非计算的问题。
生物神经元:
生物神经元模型就是一个简单的信号处理器。树突是神经元的信号输入通道,接受来自其他神经元的信息。轴突是神经元的信号输出通道。
信息的处理与传递主要发生在突触附近。神经元细胞体通过树突接受脉冲信号,通过轴突传到突触前膜。当脉冲幅度达到一定强度,即超过其阈值电位后,突触前膜将向突触间隙释放神经传递的化学物质(乙酰胆碱),使位于突触后膜的离子通道(Ion Channel)开放,产生离子流,从而在突触后膜产生正的或负的电位,称为突触后电位。
突触有两种:兴奋性突触和抑制性突触。前者产生正突触后电位,后者产生负突触后电位。一个神经元的各树突和细胞体往往通过突触和大量的其他神经元相连接。这些突触后电位的变化,将对该神经元产生综合作用,即当这些突触后电位的总和超过某一阎值时,该神经元便被激活,并产生脉冲,而且产生的脉冲数与该电位总和值的大小有关。脉冲沿轴突向其他神经元传送,从而实现了神经元之间信息的传递。
神经网络
连接方式
按照连接方式,可划分为前向神经网络与反馈(递归)神经网络。
前向神经网络:
反馈神经网络:
学习方式
按照连接方式,可分为有导师学习神经网络与无导师学习神经网络。
有导师学习神经网络:
外界存在一个教师,对给定的一组输入,提供应有的输出(标准答案),学习系统可根据实际输出与标准答案之间的差值来调整系统参数。
无导师学习神经网络:
学习系统按照环境提供数据的某些统计规律来调节自身参数。
♦强化学习:
环境对系统输出结果只给出评价信息(奖或惩),系统通过强化受奖动作来改善自身性能。
BP神经网络(向后传播算法)
Backpropagation is a common method of teaching artificial neural networks how to perform a given task.
It is a supervised learning method, and is a generalization of the delta rule. It requires a teacher that knows, or can calculate, the desired output for any input in the training set.
Backpropagation requires that the activation function used by the artificial neurons (or "nodes") be differentiable.反向传播是教授人工神经网络如何执行给定任务的一种常用方法。
它是一种监督学习方法,是delta规则的推广。它要求教师知道或能够计算出训练集中任何输入所需的输出。
反向传播要求人工神经元(或“节点”)使用的激活函数是可微的。
对于多层网络,由于有隐层后学习比较困难,限制了多层网络的发展,BP算法的出现解决了这一困难。
BP算法的原理
对于多层前馈型网络,网络中有两种信号在流通。
①工作信号,施加的输入信号向前传播直到在输出层产生实际的输出信号,是输入信号和权值的函数。
②误差信号,网络实际输出与应有输出间的差值,它由输出层开始逐层向后传播。
BP网络主要有两个阶段:
①信号前传阶段
②误差后传阶段
构造多层前向神经网络
BP神经网络的优缺点
function varargout = MainForm(varargin)
% MAINFORM MATLAB code for MainForm.fig
% MAINFORM, by itself, creates a new MAINFORM or raises the existing
% singleton*.
%
% H = MAINFORM returns the handle to a new MAINFORM or the handle to
% the existing singleton*.
%
% MAINFORM('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in MAINFORM.M with the given input arguments.
%
% MAINFORM('Property','Value',...) creates a new MAINFORM or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before MainForm_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to MainForm_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help MainForm
% Last Modified by GUIDE v2.5 22-Dec-2013 09:58:50
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @MainForm_OpeningFcn, ...
'gui_OutputFcn', @MainForm_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before MainForm is made visible.
function MainForm_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to MainForm (see VARARGIN)
% Choose default command line output for MainForm
handles.output = hObject;
clc;
axes(handles.axes1); cla reset; box on; set(gca, 'XTickLabel', '', 'YTickLabel', '');
axes(handles.axes2); cla reset; box on; set(gca, 'XTickLabel', '', 'YTickLabel', '');
axes(handles.axes3); cla reset; box on; set(gca, 'XTickLabel', '', 'YTickLabel', '');
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes MainForm wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = MainForm_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
clc;
axes(handles.axes1); cla reset; box on; set(gca, 'XTickLabel', '', 'YTickLabel', '');
axes(handles.axes2); cla reset; box on; set(gca, 'XTickLabel', '', 'YTickLabel', '');
axes(handles.axes3); cla reset; box on; set(gca, 'XTickLabel', '', 'YTickLabel', '');
handles.file1 = [];
handles.file2 = [];
handles.result = [];
[filename, pathname] = uigetfile({'*.jpg;*.tif;*.png;*.gif', 'All Image Files';...
'*.*', 'All Files' }, '选择图像1', ...
fullfile(pwd, 'images\\\\实验图像1\\\\a.tif'));
if isequal(filename, 0)
return;
end
handles.file1 = fullfile(pathname, filename);
guidata(hObject, handles);
Img1 = imread(fullfile(pathname, filename));
axes(handles.axes1);
imshow(Img1, []);
完整代码或者仿真咨询添加QQ1575304183
以上是关于图像识别基于BP神经网络的手写字体识别matlab源码含GUI界面的主要内容,如果未能解决你的问题,请参考以下文章
图像识别基于BP神经网络的手写字体识别matlab源码含GUI界面
数字识别基于matlab BP神经网络不同字体0-9数字识别含Matlab源码 1863期
手写数字识别基于matlab GUI BP神经网络手写数字识别系统含Matlab源码 1639期
字符识别基于matlab BP神经网络字符识别含Matlab源码 1358期