【交通标志识别】基于GUI BP神经网络交通标志识别【Matlab 218期】
一、简介
1 概述
BP(Back-Propagation)神经网络,也叫做反向传播神经网络,是一种常见的人工神经网络。它是一种有向图模型,由输入层、输出层和一层或多层的隐含层组成。BP神经网络的主要特点是可以进行非线性映射,适合于解决复杂的分类、回归和预测问题。BP神经网络通过反向传播算法,不断地调整权值和阈值,以最小化预测输出与实际输出之间的误差。它的学习过程是有监督的,需要提供训练集来进行网络的训练。BP神经网络应用广泛,例如图像识别、语音识别、自然语言处理、人脸识别、预测模型等领域。
二、 BP算法的基本思想
BP算法(Back-Propagation,反向传播算法)是一种常见的神经网络学习算法,基本思想是通过输入和输出数据,一步步调整网络权值和偏置量,从而实现对网络的训练。
BP算法的基本思想是,首先将输入样本喂给神经网络,得到网络输出结果,然后将输出结果与标准答案进行比较,得出误差值。接着,根据误差值反向传播回每个神经元,调整神经元的权值和偏置量,使误差值逐渐减小,最终达到收敛。这个过程就是反向传播算法的核心。
具体地说,反向传播算法分为两个阶段:前向传播和后向传播。
(1).前向传播
前向传播指的是网络从输入开始,依次计算每个神经元的输出值,直到输出层输出结果,计算过程可以用下面的公式表示:
$$ y=f(\sum_{i=1}^nw_ix_i+b) $$
其中,$y$为神经元的输出值,$w$为权值,$x$为输入值,$b$为偏置量,$f$为激活函数。
(2).后向传播
后向传播指的是,根据输出结果和标准答案之间的误差,计算每个神经元的误差值,并根据误差值调整权值和偏置量,以减小误差。计算过程可以用下面的公式表示:
$$ \delta_j=f'(net_j)\sum_{k=1}^n\delta_kw_{kj} $$
其中,$\delta_j$为神经元的误差值,$f'(net_j)$为激活函数的导数,$net_j$为神经元的输入值,$\delta_k$为后一层神经元的误差值,$w_{kj}$为后一层神经元连接到当前神经元的权值。
通过不断地反复计算前向传播和后向传播,就可以不断地调整神经网络的权值和偏置量,最终实现对网络的训练和学习。
3 BP网络特性分析——BP三要素
我们分析一个ANN时,通常都是从它的三要素入手,即
1)网络拓扑结构;
2)传递函数;
3)学习算法。
- 核心代码
handles.Color = 0;
cd(handles.cd0);
set(handles.text2,'string','');
guidata(hObject, handles);
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%% 提取标志
% 按照颜色来分
Color = 0; % 颜色标记 1是红 2 是蓝 3是黄色
if get(handles.radiobutton3,'Value')
Color = 1;
elseif get(handles.radiobutton4,'Value')
Color = 2;
elseif get(handles.radiobutton5,'Value')
Color = 3;
end
handles.Color = Color;
Image = handles.I;
switch Color
case 1
DI = Image(:,:,1);
GI = (Image(:,:,1)>110 & Image(:,:,2)<150 & Image(:,:,3)<150 ...
& (double(Image(:,:,2))-double(Image(:,:,3)))<50 & ((Image(:,:,1))-double(Image(:,:,2)))>30);
case 2
DI = Image(:,:,3);
GI = (Image(:,:,1)<100 & Image(:,:,2)<150 & Image(:,:,3)>120 ...
& ((Image(:,:,2))-double(Image(:,:,3)))>30);
case 3
DI = rgb2gray(Image);
GI = (Image(:,:,1)>160 & Image(:,:,2)>90 & Image(:,:,3)<90 ...
& (double(Image(:,:,1))-double(Image(:,:,2)))<100 & ((Image(:,:,1))-(Image(:,:,3)))>90);
end
四、运行结果
四、备注
版本:2014a