基于bp神经网络的草莓等级识别,bp神经网络的详细原理,神经网络1000案例之7

神经网络机器学习智能算法画图绘图 神经网络机器学习智能算法画图绘图     2023-04-04     654

关键词:

BP神经网络的原理

人工神经网络无需事先确定输入输出之间映射关系的数学方程,仅通过自身的训练,学习某种规则,在给定输入值时得到最接近期望输出值的结果。作为一种智能信息处理系统,人工神经网络实现其功能的核心是算法。BP神经网络是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称为BP算法,它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小。
基本BP算法包括信号的前向传播和误差的反向传播两个过程。即计算误差输出时按从输入到输出的方向进行,而调整权值和阈值则从输出到输入的方向进行。正向传播时,输入信号通过隐含层作用于输出节点,经过非线性变换,产生输出信号,若实际输出与期望输出不相符,则转入误差的反向传播过程。误差反传是将输出误差通过隐含层向输入层逐层反传,并将误差分摊给各层所有单元,以从各层获得的误差信号作为调整各单元权值的依据。通过调整输入节点与隐层节点的联接强度和隐层节点与输出节点的联接强度以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。

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

。。。。。。。。。。。。。。。。。。。。。。。。图1 ,神经元模型


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

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

草莓等级

草莓为高档果品,又为浆果,所以搞好包装很重要。草莓的包装可根据成熟期和市场情况采用不同的包装形式。一般促成栽培,在元旦至春节前后供应市场的草莓,价格比较高,作为节日的珍贵礼品,目前一般常采用小盒包装,有两种形式,一种是透明小塑料盒包装,盒的规格各地有所不同,河北满城县草莓生产基地,包装盒的规格为12厘米×7.5厘米×2.5厘米,盒内装一层果,可装150克。北京地区包装盒的规格多为18厘米×11厘米×4厘米,每盒可装250克。这样不仅可避免装运过程中草莓的挤压碰撞,保证质量,而且出售时外观美丽,便于携带。另一种小盒包装为白色托盘,质地是聚丙烯,上覆保鲜膜,每小盒装15粒,分两层,重约250克,这种保鲜膜的优点是透明、保鲜、吸湿、透气性好,用这种保鲜包装与小塑料盒包装相比,草莓货架期可延长5~7天,包装的整个过程是小型包装机械作业完成,一般每2秒可包装1小盒,效率很高。无论采用哪种包装,装盒时均应轻拿轻放,边装边剔除霉变或破损果实,将果实按一定顺序、大小、方向整齐地放置,不宜装得太满,顶部留出1厘米左右的空隙,以减少果实破损。在向外运输时,可把小盒装入水果纸箱或塑料箱中,这样能保证果实品质,便于出售和短时间保存。

草莓采摘

现代农业向自动化,智农化,信息化发展,需要实时识别草莓的生长成熟情况,方便管理和机械化采摘,本文用BP神经网络对草莓进行等级识别,包括未成熟的草莓,二级草莓,一级草莓等


MATLAB编程代码如下

clc
clear
close all
load maynet2.mat
addpath 1特级
class1path=dir(‘1特级’);
num1 =[];
for i=1:length(class1path)-2
imgpath=[‘1特级’ class1path(i+2).name];%煤炭的路径
img1=imread(imgpath);%读取图片
[mx1,mx2,mx3] = size(img1);
numx = [reshape(img1(:,:,1),mx1mx2,1) reshape(img1(:,:,2),mx1mx2,1) reshape(img1(:,:,3),mx1*mx2,1)];
[ rgb1 ] =fenge(img1,numx,net,inputps,mx1,mx2);
num1 = [num1;rgb1];
end

addpath 2一级
class1path=dir(‘2一级’);
num2 =[];
for i=1:length(class1path)-2
imgpath=[‘2一级’ class1path(i+2).name];%煤炭的路径
img1=imread(imgpath);%读取图片
[mx1,mx2,mx3] = size(img1);
numx = [reshape(img1(:,:,1),mx1mx2,1) reshape(img1(:,:,2),mx1mx2,1) reshape(img1(:,:,3),mx1*mx2,1)];
[ rgb1 ] =fenge(img1,numx,net,inputps,mx1,mx2);
num2 = [num2;rgb1];

end

addpath 3二级
class1path=dir(‘3二级’);
num3 =[];
for i=1:length(class1path)-2
imgpath=[‘3二级’ class1path(i+2).name];%煤炭的路径
img1=imread(imgpath);%读取图片
[mx1,mx2,mx3] = size(img1);
numx = [reshape(img1(:,:,1),mx1mx2,1) reshape(img1(:,:,2),mx1mx2,1) reshape(img1(:,:,3),mx1*mx2,1)];
[ rgb1 ] =fenge(img1,numx,net,inputps,mx1,mx2);
num3 = [num3;rgb1];

end

save maydata3.mat num1 num2 num3

clc
clear
close all
load maydata1.mat
num=num1;
m = 400;
rand(‘seed’, 0)
n = randperm(size(num,1));
input_train=num(n(1:round(0.5nn)),1:4)';%训练数据的输入数据
output_train=bb(n(1:round(0.5
nn))😅‘;%训练数据的输出数据
input_test=num(n(round(0.5nn+1:nn)),1:4)';%测试数据的输入数据
output_test=aa(n(round(0.5
nn+1:nn)),1)’; %测试数据的输出数据
%选连样本输入输出数据归一化
[inputn,inputps]=mapminmax(input_train);%训练数据的输入数据的归一化
[outputn,outputps]=mapminmax(output_train);%训练数据的输出数据的归一化de
% %初始化网络结构
net06=newff(minmax(inputn),[31,6],‘logsig’,‘tansig’,‘traingdx’);
%net.trainParam.max_fail = 9;
net06.trainParam.epochs=5000;%最大迭代次数
net06.trainParam.lr=0.01;%学习率
net06.trainParam.goal=0.01;%学习目标
%网络训练
net06=train(net06,inputn,outputn);
%% BP网络预测
%预测数据归一化

inputn_test=mapminmax(‘apply’,input_test,inputps);

%网络预测输出
an=sim(net06,inputn_test);

%网络输出反归一化
aoutput=(mapminmax(‘reverse’,an,outputps));
% aoutput(aoutput==max(aoutput))=1;
% aoutput(aoutput<1)=0;
[mx,aoutput] = max(aoutput);
[~,output_test] = max(output_test);

%% 结果分析

figure
plot(aoutput,‘ro’)%预测的结果数据画图-代表虚线,O代表圆圈标识,r代表红色
hold on
plot(output_test,‘k*’)
hold off
legend(‘识别输出六位编码’)%标签
title(‘BP网络预测对比图’,‘fontsize’,12)
ylabel(‘二进制编码’,‘fontsize’,12)%Y轴
save maynet06.mat net06
[cfmat,order] = confusionmat(output_test,aoutput);
mat=cfmat;
k=6;
figure
imagesc(mat); %# Create a colored plot of the matrix values
colormap(flipud(gray)); %# Change the colormap to gray (so higher values are
title(‘混淆矩阵’);
textStrings = num2str(mat(😃,‘%0.02f’); %# Create strings from the matrix values
textStrings = strtrim(cellstr(textStrings)); %# Remove any space padding
[x,y] = meshgrid(1:k);
hStrings=text(x(😃,y(😃,textStrings(😃,‘HorizontalAlignment’,‘center’);
midValue = mean(get(gca,‘CLim’)); %# Get the middle value of the color range
textColors = repmat(mat(😃 > midValue,1,3);
set(hStrings,‘Color’,num2cell(textColors,2)); %# Change the text colors;
set(gca,‘XTick’,1:6,…
‘XTickLabel’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,… %# and tick labels
‘YTick’,1:6,… %同上
‘YTickLabel’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,…
‘TickLength’,[0 0]);

效果图


从效果图上看,BP神经网络能很好的实现对草莓的识别,有利于实现草莓的机械化,智能化种植采摘,实现现代农业。
BP神经网络是一种成熟的神经,相对于其他神经网络,拥有很多的训练函数,传递函数,可以调节的参数非常多,对各种问题都可以达到一个比较理想的效果,关键看如何调试参数,选择训练传递函数,有疑问或者其他应用方面,欢迎大家留言

利用手写数字识别项目详细描述bp深度神经网络的权重学习

...学习入门》(由日本学者斋藤康毅所著陆羽杰所译)中关于神经网络的学习一章来总结归纳一些收获。 本书提出神经网络的学习分四步:1.mini-batch2.计算梯度3.更新参数4.重复前面步骤1.从识别手写数字项目学习神经网络所谓“... 查看详情

毕业设计/matlab系列基于pca和bp神经网络的人脸识别系统(基于ar人脸库)

...在大学毕业设计的时候,在毕业设计中实现了基于PCA和BP神经网络的人脸识别系统,采用matlab语言,采用复杂的AR人脸库,准确率达到了75%以上。AR人脸库的人脸存在光线变化和遮挡,相对ORL人脸库更加复杂。注:需要相关代码可... 查看详情

毕业设计/matlab系列基于pca和bp神经网络的人脸识别系统(基于ar人脸库)

...在大学毕业设计的时候,在毕业设计中实现了基于PCA和BP神经网络的人脸识别系统,采用matlab语言,采用复杂的AR人脸库,准确率达到了75%以上。AR人脸库的人脸存在光线变化和遮挡,相对ORL人脸库更加复杂。注:需要相关代码可... 查看详情

matlab基于bp网络的语言识别(代码片段)

1、内容简介略2、内容说明略3、仿真分析%%清空环境变量clcclear%%训练数据预测数据提取及归一化%下载四类语音信号loaddata1c1loaddata2c2loaddata3c3loaddata4c4%四个特征信号矩阵合成一个矩阵data(1:500,:)=c1(1:500,:);data(501:1000,:)=c2(1:500,:)... 查看详情

基于bp神经网络kmeans聚类和hc模型的火焰特征数据识别算法matlab仿真

目录一、理论基础二、案例背景三、MATLAB程序四、仿真结论分析一、理论基础    为了简化计算,可对 查看详情

基于bp神经网络+hog特征提取的视频中车辆车牌识别算法仿真

步骤一:定位和跟踪       这里,没有直接采用之前的方案,是因为在设计的时候,发现直接采用颜色等直接特征提取然后进行二值化处理的方法,如果视频中出现颜色类似的区域,则很有可能错误的定... 查看详情

字母识别基于matlabbp神经网络英文字母识别含matlab源码2226期

⛄一、BP神经网络英文字母识别1典型前向网络——BP神经网络前向网络是目前研究最多的网络形式之一,它包含输入层、隐层以及输出层,其中隐层可以为一层或者多层,其结构如图1所示.图1BP神经网络模型BP神经网络误差反向传播学... 查看详情

图像识别基于rgb和bp神经网络的人民币识别系统含gui界面(代码片段)

课题介绍    本设计为基于MATLAB的人民币识别系统。带有一个GUI界面。先利用radon进行倾斜校正,根据不同纸币,选择不同维度的参数识别纸币金额,有通过RGB分量识别100元;通过面额图像的宽度识别1元、5元... 查看详情

基于bp神经网络的调制方式识别算法matlab仿真,识别不同snr下的mfsk和mpsk(代码片段)

...基础二、核心程序三、测试结果一、理论基础    人工神经网络无需事先确定输入输出之间映射关系的数学方程,仅通过自身的训练,学习某种规则,在给定输入值时得到最接近期望输出值的结果。作为一种智能信... 查看详情

bp预测基于海鸥算法改进bp神经网络实现数据预测(代码片段)

 一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情

bp预测基于蝙蝠算法改进bp神经网络实现数据预测(代码片段)

 一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情

bp预测基于果蝇算法改进bp神经网络实现数据预测(代码片段)

一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情

bp预测基于灰狼算法改进bp神经网络实现数据预测(代码片段)

一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情

bp预测基于麻雀算法改进bp神经网络实现数据预测(代码片段)

一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情

bp预测基于鲸鱼算法改进bp神经网络实现数据预测(代码片段)

一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情

bp预测基于果蝇算法改进bp神经网络实现数据预测(代码片段)

一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情

bp预测基于灰狼算法改进bp神经网络实现数据预测(代码片段)

一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情

bp预测基于鲸鱼算法改进bp神经网络实现数据预测(代码片段)

一、BP神经网络预测算法简介说明:1.1节主要是概括和帮助理解考虑影响因素的BP神经网络算法原理,即常规的BP模型训练原理讲解(可根据自身掌握的知识是否跳过)。1.2节开始讲基于历史值影响的BP神经网络预... 查看详情