基于BP神经网络的衣服识别,BP神经网络详细原理,BP神经网络图像识别神经网络案例之19
目标
背景
BP 神经网络的工作原理
BP 神经网络的具体定义
BP 神经网络的基本架构
BP 神经网络中的基本单元
如图所示(如图所示)激活函数 (传递函数)(如图所示)
数据集
模型参数设置
基于 BP 神经网络 的 性别识别 MATLAB 代码设计与实现
图片效果展示
分析结果展示
展望未来
背影
人们以衣物区分彼此,类似于马依赖鞍;穿衣作为一种手段,在某种程度上有助于将人群进行分类;这一方法可用于数据分析中的一个领域;本研究采用BP神经网络模型来分析clothing类别。
BP神经网络的原理
BP神经网络的定义
人工神经网络无需预先设定输入与输出之间的数学映射关系,在经过自身训练后就能够根据输入数据生成与预期结果最为接近的输出结果。作为一项智能信息处理技术的人工神经网络核心在于其运行机制——算法体系的设计与优化方法。BP神经网络是一种基于逆向误差传播原理构建的多层前馈型神经网络模型,在这一框架下设计出一种高效的参数优化算法——BP算法,在这种算法指导下完成对模型参数的有效调节以实现最优性能目标的过程中能够有效降低实际运行中的计算复杂度
BP神经网络的基本结构
基本BP算法涉及信号的正向传递与逆向传递两个环节。即计算误差输出时遵循输入至输出的方向。而权值与阈值的调节则从输出层往输入层依次进行。在正向传播阶段, 输入信号通过隐含层影响了后续处理, 并经非线性转换产生了最终的网络响应。若实际响应结果与预期目标存在差异, 则需进入下一步骤——逆向传播过程。该步骤的核心是将系统的总误差分解到各个中间环节中去, 并通过对系统内部各层级之间的相互协调作用, 在这一过程中不断优化各参数配置, 最终的目标是使得系统整体性能达到最优状态。这种优化过程持续进行直至达到设定的最佳状态为止
bp神经网络的神经元
神经网络是模拟动物神经系统行为特征而构建的一种算法数学模型。
这种网络被系统复杂程度所推动,在大量节点之间相互连接的基础上完成信息运算处理。
其中单个神经元的结构如图1所示:

。。。。。。。。。。。。。。。。。。。。。。。。图1 ,神经元模型
bp神经网络激活函数及公式


BP神经网络传递函数及公式
图2展示了Sigmoid函数与双极S型函数的图像曲线,在数学建模中常用于模拟不同类型的非线性关系模式。
其中Sigmoid函数的输出范围限定在0至1之间,在数据处理时需确保其范围与传递函数对应的区域相吻合。
反之若选择双极S型函数则其有效区间为-1至+1之间归一化处理时需确保其范围与传递函数对应的区域一致。
否则可能导致预期效果达不到预期目标。
例如如图所示是一个简单的神经网络模型:
它由多个单层感知器构成每一层之间的信号传递都是有规律可循


基于BP神经网络的衣服识别
基本模型通过
在开始阶段, 我们会构建一个图像数据集. 随后, 我们将从原始图像中提取出丰富的图像特征. 在这一过程中, 我们会对每张图片进行标注处理. 基于提取到的图像特征作为输入, 将会开展模型训练与验证过程. 最终, 我们将实现对服装的识别与分类任务.
数据





神经网络参数
三层神经网络采用三层结构配置激活函数为logsig和tansig类型,并使用自适应动量梯度下降算法进行训练。具体设置为学习速率为\eta= 1/1, 步长系数\alpha= 1\times 1e-4 ,并允许最多迭代五千次
MATLAB编程代码
clc;clear;close all; format compact
%% 加载数据
%% 训练数据预测数据提取及归一化
%数据由各文件下im_____.m生成,先将图片转换为大小为100_ 100的灰度图,再将100_1000排列成1_10000的特征数据集
load trousers %对应标签为1
load skirt%对应标签为2
load shortsleeve %对应标签为3
load short %对应标签为4
load longuette %对应标签为5
load longsleeve %对应标签为6
%%
%6个矩阵合成一个矩阵
data=[trousers;skirt;shortsleeve;short;longuette;longsleeve];%图片数据
input1=double(data)/255;%转为double类型文件,并且归一化
output1=[ones(1,size(trousers,1)) 2_ones(1,size(skirt,1)) 3 ones(1,size(shortsleeve,1)) 4 ones(1,size(short,1)) 5 ones(1,size(longuette,1)) 6 ones(1,size(longsleeve,1))];%6类标签
%%
%由于原始图片转换为100*100,因此每个图片是10000个特征,维度太高这不能直接用于训练bp网络,
%因此首先利用pca降维方法把10000降至D,,根据pareto图看出D=5就差不多了,但是为了怕信息削减过多影响模型,所以D取10比较好,
[PCALoadings,PCAScores,PCAVar] = pca(input1);%利用PCA进行降维
% percent_explained = 100 * PCAVar / sum(PCAVar);
% pareto(percent_explained) %pareto图,只显示前95%的累积分布
% xlabel(‘主成分’)
% ylabel(‘贡献率(%)’)
% title(‘主成分贡献率’)
input=PCAScores(:,1:10);%利用pca进行降维至10维
%把输出从1维变成6维
output=zeros(size(output1,2),6);
for i=1:size(output1,2)
output(i,output1(i))=1;
end
随机选取样本用于训练与预测
输入数据进行归一化处理
%
对P_train数组执行归一化操作
%
对P_test数组执行归一化操作
%% 网络搭建
设置隐含层节点数为25个
%
创建基于P_train和T_train的数据集的新前向神经网络
%% 网络参数设置
设定最大训练迭代次数为5000次
%
设定收敛目标精度为千分之一
%
设定学习率为十分之一
%
启用训练窗口显示功能
%% 网络训练与验证过程
执行BP算法训练过程
save net_bp net_bp PCALoadings
%%训练集准确率
bp_sim = sim(net_bp,P_train);%测试
[I J]=max(bp_sim’,[],2);
[I1 J1]=max(T_train’,[],2);
disp(‘展示BP的训练集分类’)
bp_train_accuracy=sum(JJ1)/length(J)
figure
stem(J,‘bo’);
grid on
hold on
plot(J1,‘r*’);
legend(‘网络训练输出’,‘真实标签’)
title(‘BP神经网络做6分类’)
xlabel(‘样本数’)
ylabel(‘分类标签’)
hold off
%% 测试集准确率
tn_bp_sim = sim(net_bp,P_test);%测试
[I J]=max(tn_bp_sim’,[],2);
[I1 J1]=max(T_test’,[],2);
disp(‘展示BP的测试集分类’)
bp_test_accuracy=sum(JJ1)/length(J)
figure
stem(J,‘bo’);
grid on
hold on
plot(J1,‘r*’);
legend(‘测试输出’,‘真实标签’)
title(‘BP神经网络做6分类’)
xlabel(‘样本数’)
ylabel(‘分类标签’)
hold off
效果图


结果分析
通过观察图像效果可以看出 BP 神经网络能够很好地实现对服装类别的分类。BP 神经网络是一种完善的神经网络模型,在与其它类型的神经网络相比具有丰富的训练功能与灵活的传递机制,并且可以通过大量可调节的参数来优化不同场景下的性能特点。具体而言,在面对各类不同的问题时 BP 神经网络都能展现出良好的适应性和较高的识别精度 关键在于如何进行参数调试以及选择合适的传递函数以获得最佳的效果 有疑问或其他应用场景的朋友欢迎扫描下方二维码进一步交流
展望
基于神经网络的支持工具箱中, 我们可以通过集成自定义函数来补充原本的工具箱功能, 并设计多种优化方案.
