基于BP神经网络的衣服识别,BP神经网络详细原理,BP神经网络图像识别神经网络案例之19

news2024/12/23 13:30:05

目标

背影
BP神经网络的原理
BP神经网络的定义
BP神经网络的基本结构
BP神经网络的神经元
BP神经网络的激活函数,
BP神经网络的传递函数
数据
神经网络参数
基于BP神经网络 性别识别的MATLAB代码
效果图
结果分析
展望

背影

人靠衣服马靠鞍,通过穿衣可以一定程度的对人群进行分类,可以应用到大数据识别的一个方面,本文通过BP神经网络识别衣服类别。

BP神经网络的原理

BP神经网络的定义

人工神经网络无需事先确定输入输出之间映射关系的数学方程,仅通过自身的训练,学习某种规则,在给定输入值时得到最接近期望输出值的结果。作为一种智能信息处理系统,人工神经网络实现其功能的核心是算法。BP神经网络是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称为BP算法,它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。

BP神经网络的基本结构

基本BP算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。正向传播时,输入信号通过隐含层作用于输出节点,经过非线性变换,产生输出信号,若实际输出与期望输出不相符,则转入误差的反向传播过程。误差反传是将输出误差通过隐含层向输入层逐层反传,并将误差分摊给各层所有单元,以从各层获得的误差信号作为调整各单元权值的依据。通过调整输入节点与隐层节点的联接强度和隐层节点与输出节点的联接强度以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。

bp神经网络的神经元

神经网络是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
神经网络由多个神经元构成,下图就是单个神经元的图1所示:
在这里插入图片描述
。。。。。。。。。。。。。。。。。。。。。。。。图1 ,神经元模型

bp神经网络激活函数及公式

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/29edde342c3945939ad5945145ca8509.png在这里插入图片描述

BP神经网络传递函数及公式

图2是Sigmoid函数和双极S函数的图像,其中Sigmoid函数的图像区域是0到1,双极S函数的区间是正负1,归一化的时候要和传递函数的区域相对应,不然,可能效果不好
神经网络就是将许多个单一的神经元联结在一起,这样,一个神经元的输出就可以是另一个神经元的输入。
例如,下图就是一个简单的神经网络:在这里插入图片描述
在这里插入图片描述

基于BP神经网络的衣服识别

基本模型通过

首先建立图像数据集,然后提取图像特征,并标记标签,以图像特征为输入,以衣服类别为输出,进行建模训练测试,实现衣服的识别分类

数据

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

神经网络参数

三层神经网络,传递函数logsig , tansig,训练函数自适应动量因子梯度下降函数,学习率0.1,学习目标0.0001,最大迭代次数5000

MATLAB编程代码
clc;clear;close all; format compact
%% 加载数据
%% 训练数据预测数据提取及归一化
%数据由各文件下im_.m生成,先将图片转换为大小为100100的灰度图,再将1001000排列成110000的特征数据集
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)) 3ones(1,size(shortsleeve,1)) 4ones(1,size(short,1)) 5ones(1,size(longuette,1)) 6ones(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

%随机提取150个样本为训练样本,48个样本为预测样本
[m n]=sort(rand(1,198));
P_train=input(n(1:150)😅‘;
T_train=output(n(1:150)😅’;
P_test=input(n(151:198)😅‘;
T_test=output(n(151:198)😅’;

% %输入数据归一化
% P_train=P_train/255;
% P_test=P_test/255;
%% 建立网络
s1=25;%隐含层节点
net_bp=newff(P_train,T_train,s1);
% 设置训练参数
net_bp.trainParam.epochs =5000;
net_bp.trainParam.goal = 0.0001;
net_bp.trainParam.lr = 0.1;
net_bp.trainParam.showwindow = 1;
%% 训练并测试BP网络
net_bp = train(net_bp,P_train,T_train);%训练

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(J
J1)/length(J)
figure
stem(J,‘bo’);
grid on
hold on
plot(J1,‘r*’);
legend(‘测试输出’,‘真实标签’)
title(‘BP神经网络做6分类’)
xlabel(‘样本数’)
ylabel(‘分类标签’)
hold off

效果图

在这里插入图片描述

在这里插入图片描述

结果分析

从效果图上看,BP神经网络能很好的实现对衣服类别的识别,BP神经网络是一种成熟的神经,相对于其他神经网络,拥有很多的训练函数,传递函数,可以调节的参数非常多,对各种问题都可以达到一个比较理想的效果,关键看如何调试参数,选择训练传递函数,有疑问或者其他应用方面,欢迎大家扫描下面的二维码

展望

针对神经网络供工具箱,可以自己写函数的代入并原本的工具箱函数,可以有很多种改进方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/370911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab字符串相关操作-拼接、格式化

常见的有三种方法:向量拼接、strcat函数和sprintf函数1、向量拼接在matlab中字符串本质上也是一个向量,可以通过矩阵运算来实现字符串的拼接,这里随便输入两个字符串a1和b1,用矩阵形式进行拼接:a1 I love;b1 Matlab…

Web项目部署环境搭建:JDK + Tomcat + IDEA

Web项目部署环境搭建:JDK Tomcat IDEA1.java JDK1.1 下载安装1.2 配置环境变量1.3 检查安装成功2. TomCat2.1 下载安装2.2 配置环境变量2.3 检查安装成功3.IDEA3.1 下载安装3.2 永久可得3.3 IDEA部署Tomcat出来混总是要还的,记得大学本科四年&#xff…

Protobuf 逆向解析两种方法

Protobuf 逆向解析两种方法一、Protobuf 的特征二、解析.bin文件显示原始数据法一:用 blackboxprotobuf 模块解析法二:使用 protoc 解析工具一、Protobuf 的特征 案例网址 Protocol buffers是一种语言无关、平台无关、可扩展的序列化结构数据的方法&…

计算机网络 — UDP协议(看这一篇就可以

UDP协议UDP是传输层的重要协议之一,另一重要协议为TCP协议。两者对比:TCP协议复杂,但传输可靠。UDP协议简单,但传输不可靠。UDP协议全称为:User Datagram Protocol(用户数据报协议)。它是一个简…

嵌入式 STM32 使用C语言打开读取歌曲目录

目录 一、C语言目录库函数 1、打开一个目录文件opendir() 2、readdir();读取目录下文件 3、建立链表保存读到的文件名 一、C语言目录库函数 目录库函数链接:http://wjhsh.net/qiny1012-p-8405394.html 1、打开一个目录文件opendir() opendir()函数…

JavaScript BOM操作

目录 前言 window 对象 location 对象 navigator 对象 screen 对象 history 对象 前言 BOM(Browser Object Model)指的是浏览器对象模型,它是 JavaScript 和浏览器之间的接口。通过 BOM,JavaScript 可以与浏览器窗口交互&…

【Linux】重定向原理dup2缓冲区

文章目录重定向原理输出重定向关于FILE解释输出重定向原理追加重定向输入重定向dup2缓冲区语言级别的缓冲区内核缓冲区重定向原理 重定向的本质就是修改文件描述符下标对应的struct file*的内容 输出重定向 输出重定向就是把本来应该输出到显示器的数据重定向输出到另一个文…

自己制作投票链接网上投票链接制作可以投票的链接制作

近些年来,第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放,更多人选择微信投票小程序平台,因为它有非常大的优势。1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…

RK3568平台开发系列讲解(设备驱动篇)Pinctrl子系统详解

🚀返回专栏总目录 文章目录 一、pinctrl子系统结构描述二、重要的概念三、主要的数据结构和接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢我们知道在许多soc内部包含有多个pin控制器,通过pin控制器的寄存器,我们可以配置一个或者一组引脚的功能和特性。Linux…

K8S篇之pod及生命周期

文章目录Pod 概览pod使用方式Pod 中如何管理多个容器Pod 和控制器Pod 模板Pod 更新与替换静态 Pod容器探针pod的生命周期Pod 阶段容器状态容器重启策略Pod 状况pod readinessGates容器探针检查机制execgrpchttpGettcpSocket探测结果探测类型livenessProbe(存活探针&…

【JDK8新特性之Lambda表达式-案例实操】

一.JDK8新特性之Lambda表达式-案例实操 之前我们学习了Stream流相关的内容,如果想看的同学可以看一下之前的文章,接下来我们就来学习和Lambda表达式有关的内容。 二.Lambda表达式案例实操 2.1 最原始创建线程案例版本 创建一个新的线程,指定…

[docker]Sealer简介

文章目录安装创建集群清理集群本机免密登录镜像构建与运行KubefileSealer ImageClusterfilesealer是阿里开源的一款分布式应用打包交付运行的解决方案;通过把分布式应用及其所依赖的数据库、中间件等一起打包成一个集群镜像,解决复杂应用的交付问题。安装…

阿里云服务器部署SpringBoot+Vue项目(宝塔面板傻瓜式操作)

准备工作 一台服务器(我用的是阿里云)SpringBoot项目的jar包Vue项目的dist包 一、购买服务器 然后重置实例密码。 远程连接 登陆成功后安装宝塔面板 二、安装宝塔面板(无账号的注册一个账号) 地址:https://www.bt.cn/new/download.html 选择对应的镜像、不知道…

简易项目:servlet实现个人博客(超级详细)

成品展示博客登录页2.博客预览页博客详情页4.博客编写发布页5.可访问网址http://43.143.248.172:8080/blog_system/login.html用户名:zhangsan密码:123确认需求1.1核心功能1.1.1用户登陆和注销这一部分需要满足用户的登入和注销操作,同时需要判断用户名和密码的正确…

【ArcGIS Pro二次开发】(8):图层(Layer)的基本操作

在ArcGIS中,图层(Layer)是地理数据的集合。可以在 ArcGIS Pro中将很多不同类型的数据表示为图层。 图层通常包含矢量(要素)或栅格数据。 图层的类型取决于您拥有的数据类型、其基础结构以及其他一些变量。 一、图层(Layer)的基本操作示例 以…

华为OD机试题,用 Java 解【矩阵最大值】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

python-在macOS上安装python库 xlwings失败的解决方式

问题:python库 xlwings安装失败 今天,看到网上有wlwings库,可以用来处理excel表格,立刻想试一试。结果,安装这个python库失败了。经过排查,问题解决。 安装过程和错误提示: 我用最简单直接的…

【linux】进程间通信——system V

system V一、system V介绍二 、共享内存2.1 共享内存的原理2.2 共享内存接口2.2.1 创建共享内存shmget2.2.2 查看IPC资源2.2.3 共享内存的控制shmctl2.2.4 共享内存的关联shmat2.2.5 共享内存的去关联shmdt2.3 进程间通信2.4 共享内存的特性2.5 共享内存的大小三、消息队列3.1 …

【Virtualization】Windows11安装VMware Workstation后异常处置

安装环境 Windows 11 专业版 22H2 build 22621.1265 VMware Workstation 17 Pro 17.0.0 build-20800274 存在问题 原因分析 1、BIOS未开启虚拟化。 2、操作系统启用的虚拟化与Workstation冲突。 3、操作系统启用内核隔离-内存完整性保护。 处置思路 1、打开“资源管理器”…

MyBatis学习笔记(六) —— MyBatis的各种查询功能

6、MyBatis的各种查询功能 6.1、查询一个实体类对象 SelectMapper.java接口 /*** 根据用户id查询用户信息* param id* return*/ User getUserById(Param("id") int id);SelectMapper.xml <!--User getUserById(Param("id") int id)--> <selec…