一种基于深度学习网络的苹果病变图像识别方法与流程

文档序号:12601730阅读:1295来源:国知局
本发明本发明涉及人工神经网络领域,尤其涉及一种基于深度学习网络的苹果病变图像识别方法。
背景技术
:种植果树的农民每年的苹果的生长状况通常都无法科学预知,在出现各种病虫害,腐烂病以及伤疤的时候大都认为是天灾人祸,不能及时对苹果的状况进行处理,有可能会导致苹果减产,收成不好而影响果农的收入。例如,随即抽取上千个苹果,会包括腐烂,病虫害,碰伤以及完好无损的状况,当遇到这些状况时由于数据不能及时得到科学化的处理,会使苹果产生的状况无法得到及时的处理,不能及时处理果树本身存在的问题,施肥,打农药的问题,有可能影响第二年的收成。技术实现要素:本发明所要解决的技术问题是针对
背景技术
的不足提供了一种基于深度学习网络的苹果病变图像识别方法。本发明为解决上述技术问题采用以下技术方案:一种基于深度学习网络的苹果病变图像识别方法,具体包括如下步骤:步骤1,采集苹果样本图像集,所述苹果样本图像集包括无标签图像集以及有标签图像集;步骤2,对步骤1采集的苹果样本图像进行初步的预处理,所述预处理包括裁剪,压缩以及图片灰度化;步骤3,将步骤2初步预处理后的苹果样本图像输入到深度学习网络中;步骤4,多隐藏层首先进行自下向上的非监督学习,然后使用自顶向下的监督学习对深度学习网络的参数进行优化;步骤5,将单输出层输出的特征输入到最大池化和子采样层,对数据进行最大池化,并进行子采样;步骤6,将最大池化和子采样层输出的特征输入到SVM分类器中进行分类,从而将苹果进行分类。作为本发明一种基于深度学习网络的苹果病变图像识别方法的进一步优选方案,在步骤3中,所述的深度学习网络包括单输入层、多隐藏层和单输出层。作为本发明一种基于深度学习网络的苹果病变图像识别方法的进一步优选方案,在步骤4中,所述的多隐藏层所使用的非监督学习方法采用自动编码器进行自学习,以及提取出无标签训练数据的基本图像特征集,具体包含如下子步骤:4.1将图像输入到编码器中,产生相应的特征向量;4.2解码器通过特征向量重构出输入的数据,并且计算重构产生的误差;4.3将编码器和解码器看作是有参数的函数,通过训练获得一组参数使得其平均重构误差最小;4.4逐层训练,将第n-1层的输出作为第n层的输入,再训练第n层,由此得到各层的参数;作为本发明一种基于深度学习网络的苹果病变图像识别方法的进一步优选方案,在步骤6中,SVM分类器的具体分类方法如下:步骤6.1,SVM分类器通过使分类间距最大化来求解最优的分类面;步骤6.1,SVM通过引入核函数,通过非线性变换变换到高维特征空间;步骤6.1,SVM隐层节点数由支持向量所确定,通过凸二次规划的优化问题,可以同时得到隐含层节点数和权值向量;步骤6.1,SVM算法是为二值分类问题设计的,当处理多类问题时就要构造适合的多类分类器,由于苹果样本分为虫咬,碰伤,腐烂,完好四个类,因此选用一对多法来进行多分类。本发明采用以上技术方案与现有技术相比,具有以下技术效果:1、本发明利用深度学习网络非监督学习对图像进行识别,能够准确提取特征,得到最优参数,进行逐层训练减轻了网络训练的难度,提高了分类的准确性;2、本发明采用自编码技术使深度学习网络可以在无监督的条件下进行自学习,解决了带有标签的图像数量较少的问题,不必将每个采集的图像都带上标签,节省了人力物力;3、本发明运用SVM多分类模型进行分类,有利于实现图像数据的不同类型的识别,而不再拘泥于二值分类,能够解决多分类问题;4、本发明通过智能识别苹果图像,将苹果的成长状况进行统计,得到苹果成长的基本走势,科学的预测使得果农可以更有效的处理苹果管理中出现的问题,早发现,早防御,提高产量以及收入。附图说明图1为一种基于深度学习网络的苹果病变图像识别方法的流程图;图2为本发明深度学习网络的解析图;图3为自编码器基本结构图。具体实施方式下面结合附图对本发明的技术方案做进一步的详细说明:下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。如图1所示,本发明的一种基于深度学习网络的苹果病变图像识别方法,包括以下模块:样本图像采集模块,样本图像集处理模块,无监督学习模块,有监督学习模块,分类器训练模块,图像识别模块。主要思想就是将苹果图像数据库的图像输入到深度学习网络中,逐层计算后输出具有代表性的特征,用SVM多分类模型对其进行分类,得出结果。本发明具体步骤如下:步骤1,获得无标签苹果样本图像集和有标签样本图像集作为深度学习网络中的无标签训练数据集和有标签训练数据集。本步骤进一步包括以下子步骤:步骤1.1,采集无标签苹果图像集。无标签苹果图像集包括未经分类标记的目标图像。虫咬苹果500份,腐烂苹果500份,碰伤苹果500份,完好苹果1000份。采集以上数量的苹果图片作为无标签训练图像集。步骤1.2,采集有标签苹果图像集。有标签苹果图像集包括经分类标记的目标图像。虫咬苹果100份,腐烂苹果100份,碰伤苹果100份,完好苹果200份。采集以上数量的苹果图片作为有标签训练图像集。步骤2,对采集的原始苹果图像进行初步的预处理,包括裁剪,压缩以及图片灰度。步骤3,将初步预处理后的数据输入到深度学习网络中。本步骤的深度学习网络包括单输入层、多隐藏层和单输出层。步骤4,隐层首先进行自下向上的非监督学习,然后使用自顶向下的监督学习对深度学习网络的参数进行优化,得到最好的性能和最少的误差。本步骤进一步包括以下子步骤:步骤4.1,将图像输入到编码器中,产生相应的特征向量,或称作编码。步骤4.2,解码器模块通过特征向量重构出输入的数据,并且计算重构产生的误差。步骤4.3,将编码器和解码器看作是有参数的函数,通过训练获得一组参数使得其平均重构误差最小。步骤4.4,逐层训练,将第n-1层的输出作为第n层的输入,再训练第n层,由此得到各层的参数。自编码器是一种将目标值设置为输入值的无监督学习算法,目的是降维和特征提取;直接将输入映射成特征的方法;每一层都包含一个编码器和一个解码器;假设数据集为{x1,x2,x3,....,x(T)};对于数据集中的数据x(i)经过编码器Fθ编码后得到隐含值h(i)=Fθ(x(i)),隐含值被称为特征向量、表示或者编码;将隐含值用来做下一层的输入或者最终特征。特征向量即隐含值经过编码器Gθ编码;编码后即可获得输出值y(i)=Gθ(h(i))=Gθ(Fθ(x(i))),y(i)又被称为输入x(i)的重构,学习的目标值是原始的输入x(i);自编码神经网络尝试学习出一个恒等函数Iθ使得对于数据集{x1,x2,x3,....,x(T)}上的每个样本x(i),有Iθ(x(i))≈x(i),即缩小重构损失;自编码神经网络需要学习出参数θ使得对于整个数据集{x1,x2,x3,....,x(T)},能够得到最小的总重构损失JAE(θ)=ΣiL(x(i),Gθ(Fθ(x(i))))---(1)]]>L(x(i),y(i))会根据输入数据的特点选择,一般会选择输入的负对数似然函数值,以及差的平方||x(i)-y(i)||2,对于二元数据还可以使用交叉熵。编码器Fθ和解码器Gθ有如下形式:Fθ(x(i))=f(Wx(i)+b)(2)Gθ(x(i))=g(W'x(i)+b')(3)其中θ={W,b,W',b'}令W′=WT可以减少参数个数,减小模型的复杂程度;函数f和g选择sigmoid函数。使用随机梯度下降的方法来求解总重构损失的最小化问题。自编码神经网络编码的具体步骤以及原理如下:假设一个没有带类别标签的训练样本集合数据集为{x1,x2,x3,....,x(T)};自编码神经网络是一种无监督学习算法,使用了反向传播算法,并让目标值等于输入值,即y(i)=x(i)。它尝试逼近一个恒等函数,使得输出接近于输入x。这里给隐藏神经元加入稀疏性限制,自编码神经网络可以发现输入数据中的结构;当神经元的输出接近于1的时候认为它被激活,而输出接近于0的时候认为它被抑制,使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。这里使用的神经元的激活函数是sigmoid函数。使用来表示在给定输入为x情况下,自编码神经网络隐藏神经元j的激活度。ρj^=1mΣi=1m[aj(2)(x(i))]---(4)]]>上式表示隐藏神经元j的平均活跃度(在训练集上取平均)。这里近似的加入一条限制:其中,ρ是稀疏性参数,通常是一个接近于0的较小的值(比如ρ=0.03)。想要让隐藏神经元j的平均活跃度接近0.03。为了满足这一条件,隐藏神经元的活跃度必须接近于0。为了实现这一限制,在优化目标函数中加入一个额外的惩罚因子,这一惩罚因子将惩罚那些和ρ有显著不同的情况,从而使得隐藏神经元的平均活跃度保持在较小范围内。惩罚因子:Σj=1s2ρlogρρj^+(1-ρ)log1-ρ1-ρj^---(5)]]>s2是隐藏层中隐藏神经元的数量,而索引j依次代表隐藏层中的每一个神经元。惩罚因子也可以表示为:Σj=1s2KL(ρ||ρj^)---(6)]]>其中是一个以ρ为均值和一个以为均值的两个伯努利随机变量之间的相对熵。相对熵是一种标准的用来测量两个分布之间差异的方法。当时,并且随着与ρ之间的差异增大而单调递增。总体代价函数可以表示为:Jsparse(W,b)=J(W,b)+βΣj=1s2KL(ρ||ρj^)---(7)]]>其中J(W,b)如之前所定义,而β控制稀疏性惩罚因子的权重。项取决于W,b,因为它是隐藏神经元j的平均激活度,而隐藏层神经元的激活度取决于W,b。使用随即梯度下降的方法来求解总重构损失的最小化问题。隐层使用自顶向下监督学习的步骤:包括:通过带标签的数据训练,误差自顶向下传输,对每一层的参数进行微调。步骤5,将输出层输出的特征输入到最大池化和子采样层,对数据进行最大池化,并进行子采样。本步骤进一步包括以下子步骤:步骤5.1,将无标签训练数据的基本图像特征进行最大池化处理,即把特征图像区域的一部分求最大值,即maxpooling。步骤5.2,接着对数据进行子采样,缩小数据处理量。在最大池化和子采样层,设输入特征图为X,输出为Z,对输入X进行池化操作:Zijk=Σpqwpq*Xi,j+p,k+q---(8)]]>wpq是单位矩阵函数过滤器,是一个均匀的权重窗。接着对数据进行子采样,把数据的维度缩小为原来的t分之一。步骤6,利用有标签图像集对SVM(支持向量机)进行有监督学习,输出层输出的特征作为输入数据输入到SVM中,作为一个分类器,从而将苹果进行分类。SVM分类器通过使分类间距最大化来求解最优的分类面。SVM通过引入核函数,通过非线性变换变换到高维特征空间。SVM隐层节点数由支持向量所确定,通过凸二次规划的优化问题,可以同时得到隐含层节点数和权值向量。SVM算法是为二值分类问题设计的,当处理多类问题时就要构造适合的多类分类器,由于苹果样本分为虫咬,碰伤,腐烂,完好四个类,因此选用一对多法(简称OVRSVMs)来进行多分类。一对多法的SVM分类器的具体训练步骤为:苹果图像特征有四类要划分,定义为A,B,C,D,分别代表完好,虫咬,腐烂,碰伤。在抽取训练集的时候,分别抽取A所对应的向量作为正集,B,C,D所对应的向量作为负集;B所对应的向量作为正集,A,C,D所对应的向量作为负集;C所对应的向量作为正集,A,B,D所对应的向量作为负集;D所对应的向量作为正集,A,B,C所对应的向量作为负集。这四个训练集分别进行训练,然后的得到四个训练结果文件,在测试的时候,把对应的测试向量分别利用这四个训练结果文件进行测试,最后每个测试都有一个结果f1(x),f2(x),f3(x),f4(x).于是最终的分类结果便是这四个值中最大的一个。C—支持向量分类机:将训练数据映射到高维空间中,引入松弛变量ξi,C为惩罚参数;映射为:T~={(x~1,y1),...(x~l,yl)}---(10)]]>其中,上式子中:分类面:(w~,x~)+b~=0---(11)]]>minw,b12||w~||2+CΣi=1lξi---(12)]]>s.t.yi((w~,x~i)+b~+1)≥1-ξi,i=1,...l---(13)]]>对偶问题为:minα12Σi=1lΣj=1lyiyjαiαjK(xi,xj)-Σj=1lαj---(14)]]>b*=yj-Σi=1lyiαi*K(xi,xj)0≤αi≤C---(15)]]>f(x)=sgn(Σai*yiK(x,xi)+b*)---(16)]]>此发明数据集有四类,因此需要建立四个支持向量机。识别某一个x分类时,选择gj(x)最大的分类:fj(x)=sgn(gj(x))j∈[1,M](17)gi(x)=Σi=1lαijyiK(x,xi)+bj---(18)]]>本发明的基于深度学习的苹果各种病变的图像识别方法,充分发挥了深度学习自我学习的优势,可以使用无标签图像进行非监督学习,提取图像特征,进而利用分类器对其进行分类。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1