CN111881987A - 基于深度学习的苹果病毒识别方法 - Google Patents

基于深度学习的苹果病毒识别方法 Download PDF

Info

Publication number
CN111881987A
CN111881987A CN202010759705.7A CN202010759705A CN111881987A CN 111881987 A CN111881987 A CN 111881987A CN 202010759705 A CN202010759705 A CN 202010759705A CN 111881987 A CN111881987 A CN 111881987A
Authority
CN
China
Prior art keywords
model
network
training
apple
layer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010759705.7A
Other languages
English (en)
Inventor
田军委
张震
肖经纬
王沁
赵鹏
苏宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian Technological University
Original Assignee
Xian Technological University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian Technological University filed Critical Xian Technological University
Priority to CN202010759705.7A priority Critical patent/CN111881987A/zh
Publication of CN111881987A publication Critical patent/CN111881987A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

本发明公开了一种基于深度学习的苹果病毒识别方法,在基于深度学习下,通过对原残差网络结构及损失函数进行改进来构建果害识别网络;同时针对小样本下的训练问题,在网络训练过程中结合了迁移学习与分层学习率的策略进行模型训练;并对最终得到模型进行压缩,从而降低模型的部署成本,提高识别效率,为农作物病害识别提供了理论指导与技术支撑。

Description

基于深度学习的苹果病毒识别方法
技术领域
本发明涉及苹果病毒识别领域。
背景技术
农作物病毒识别对于作物的生长具有重要作用。而对于病毒识别有多种方法,传统的图像技术虽然对样本数量要求并不高,但对人力资源的耗费较高,且容易受到经验主义的影响;高光谱图像法能从光谱分布的角度判断农作物情况,但其高昂的造价和较强的设备依赖性使其难以推广使用;而深度学习的方法既克服了手工提取特征的缺点,又能方便的推广到果园中使用,因此采用深度学习的方法来进行苹果的病害检测。
发明内容
发明目的:为了克服现有技术中存在的不足,本发明提供一种基于深度学习的苹果病毒识别方法能有效的解决在苹果病毒识别上的问题的效果。
技术方案:为实现上述目的,本发明的技术方案如下:
基于深度学习的苹果病毒识别方法,苹果病毒识别系统方法如下:
(1)对现有苹果病毒识别算法中神经网络结构参数较多,用来训练苹果病害分类容易导致过拟合的问题,提出一种改进残差网络的神经网络结构,通过优化原有残差网络卷积核组成来减少参数量;并对不同病害特征相似容易误识别的问题,在传统损失函数中加入类间相似惩罚项来提升病害识别准确率;
(2)从神经网络的训练层次出发,在模型参数初始化方案上应用迁移学习,先让模型在包含大量图片的数据集上进行训练,学到先验知识,再将得到的卷积层参数作为苹果病害分类网络卷积层的初始化参数进行微调训练;同时对网络不同深度的层使用分层学习率,从而使网络不同层均能接近或稳定在最优解附近;
(3)使用基于迁移学习和改进残差网络来训练得到苹果病害分类模型,在其基础上对模型进行调整优化,通过网络剪枝和量化来精简模型结构与参数量,在确保精度的情况下大幅缩小模型大小,进一步提高识别模型识别速度,并最终形成一套完整的苹果病害识别系统。
进一步的,所述神经网络结构包括残差网络结构sResNet(small ResidualNetwork);所述残差网络结构sResNet主体由4部分卷积核尺寸不一致的残差块及两层全连接层构成,包含3个输出通道128的残差块、3个输出通道256的残差块、5个输出通道512的残差块、3个输出通道1024的残差块;所述由3个卷积层组成,每层之间使用ReLu作为激活函数,经过残差结构连接后通过最大值池化层输出;输入的原始图像经过预处理后,输入进网络的卷积层,分别经过42层卷积层得到特征表达后,再通过一层全连接层进行特征的加权组合,最终输出对应的类别。
进一步的,所述神经网络结构还包括Sigmoid激活函数和改进的损失函数;
Sigmoid激活函数:
Sigmoid激活函数表达式如下:
Figure BDA0002612728460000021
Sigmoid函数的导数可以通过链式法则求导得到,即:
Sigmoid'(x)=Sigmoid(x)(1-Sigmoid(x)) (3-10)
改进的损失函数:设分别有两个具有不同病害的苹果样本x1、x2对应的病害特征为p1,p2,则有:p1=F(x1,wconv,bconv)
p2=F(x2,wconv,bconv) (3-17)
由于当网络训练好后,权值wconv与偏差bconv将被固化,那么对样本进行分类,有:
Figure BDA0002612728460000022
在原BCE损失函数基础上加入了专门针对相似特征不同类样本的类间相似惩罚项:
Figure BDA0002612728460000023
A可用下式(3-20)计算出:
Figure BDA0002612728460000024
最终改进的损失函数见式3-21:
Figure BDA0002612728460000025
进一步的,验证残差网络结构sResNet和改进的损失函数对模型准确率的提升:
设立4组对比实验:
(1)sResNet+改进损失函数;
(2)sResNet+原损失函数;
(3)ResNet50+改进损失函数;
(4)ResNet50+原损失函数;
模型评价指标则选取精准率(Precision)、召回率(Recall)、F1分数(F1-Score)三个指标来评价模型优劣;三种指标计算方式分别如下:
精准率:
Figure BDA0002612728460000031
式中:tp(true positive)代表真阳性,fp(false positive)代表假阳性;精准率表示所有预测为真的样本中,真正的真样本占的比例;该值越接近1代表性能越好。
召回率:
Figure BDA0002612728460000032
式中:fn(false negative)代表假阴性;召回率表示预测为真的样本占所有真样本的比例;该值越接近1代表性能越好。
F1分数:
Figure BDA0002612728460000033
进一步的,所述迁移学习的网络训练具体实现步骤如下:
(1)搭建神经网络A,加载迁移学习用数据集ImageNet;
(2)对神经网络A权重参数随机初始化,设定学习率、迭代次数等相关参数,然后进行训练;
(3)图片特征提取,加载预训练网络结构的特征权重以及节点计算方法作为目标任务对于神经网络B的特征提取器,然后把经过预处理的农作物病害图像输入预训练卷积模型中,使用向前传播的方式,重新计算出对应的的网络结点取值;
(4)任务分类层,在预训练模型结构后接全连接层来实现苹果病害的分类问题;
(5)损失函数选择使用第三章提出的改进损失函数;
(6)对训练出的模型使用测试集进行准确率测试,验证模型性能。
进一步的,所述分层学习率为:设分类任务中某一类数据集为:{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中x为样本图片,y为该样本对应标签,m为样本数量;设训练出的模型预测函数为:
hθ(z)=g(θ01z12z2+...+θnzn) (4-1)
参数迭代公式如下:
Figure BDA0002612728460000034
进一步的,所述模型压缩流程为:先对原模型进行全连接层参数裁剪,之后对裁剪后的模型进行类型转换,最后输出压缩模型。
进一步的,所述全连接层参数裁剪即网络剪枝的方法如下:
(1)对每个权重均赋予一个常量与之相乘,此常量值取1或0,记作k;
(2)设立一个wn的阈值w,当权重小于该阈值时,令其常量为0,否则为1,由此可以确立一个由m形成的网络结构;
(3)对筛选后的网络进行再训练,当其准确率符合y1>y-ε时,结束训练,即剪枝结束。
进一步的,所述类型转换即量化:将网络中每个权值进行量化,是指将其存储类型转换为整型8位表示。
进一步的,还包括苹果病毒识别分类软件系统;所述苹果病毒识别分类软件系统开发的操作系统为Windows10 64bit,开发语言为C++,开发使用工具为Qt Creator4.11.0Community;所述苹果病毒识别分类软件系统的软件分为前台展示界面即主界面,负责接受图像并进行适当的图像预处理(如调整尺寸缩放),后台则对从前台传入的图像使用压缩后得到的模型进行病害识别,并将识别后的结果输出到前台进行展示。
有益效果:本发明能解决苹果病害识别问题上,通过对原残差网络结构及损失函数进行改进来构建果害识别网络;同时针对小样本下的训练问题,在网络训练过程中结合了迁移学习与分层学习率的策略进行模型训练;并对最终得到模型进行压缩,从而降低模型的部署成本,提高识别效率,为农作物病害识别提供了理论指导与技术支撑。
附图说明
附图1为二维卷积运算示意图;
附图2为加入0元素padding后的same卷积图;
附图3为全连接层计算示意图;
附图4为传统连接结构图;
附图5为残差连接结构图;
附图6为残差块结构图;
附图7为sResNet主体结构图;
附图8为Sigmoid函数图;
附图9Sigmoid函数导数图;
附图10为训练准确率图;
附图11为训练损失图;
附图12为实验结果混淆矩阵图;
附图13为部分识别结果图;
附图14为迁移学习下网络训练图;
附图15为学习率过小对收敛性的影响图;
附图16为学习率过大对收敛性的影响图;
附图17为网络模型结构示意图;
附图18为训练结果混淆矩阵;
附图19为模型压缩流程图;
附图20为识别软件工作流程图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
如附图:基于深度学习的苹果病毒识别方法,苹果病毒识别系统方法如下:
(1)对现有苹果病毒识别算法中神经网络结构参数较多,用来训练苹果病害分类容易导致过拟合的问题,提出一种改进残差网络的神经网络结构,通过优化原有残差网络卷积核组成来减少参数量;并对不同病害特征相似容易误识别的问题,在传统损失函数中加入类间相似惩罚项来提升病害识别准确率;
(2)从神经网络的训练层次出发,在模型参数初始化方案上应用迁移学习,先让模型在包含大量图片的数据集上进行训练,学到先验知识,再将得到的卷积层参数作为苹果病害分类网络卷积层的初始化参数进行微调训练;同时对网络不同深度的层使用分层学习率,从而使网络不同层均能接近或稳定在最优解附近;
(3)使用基于迁移学习和改进残差网络来训练得到苹果病害分类模型,在其基础上对模型进行调整优化,通过网络剪枝和量化来精简模型结构与参数量,在确保精度的情况下大幅缩小模型大小,进一步提高识别模型识别速度,并最终形成一套完整的苹果病害识别系统。
深度学习的神经网络主要结构:
卷积层
卷积层是神经网络中最常见的结构,它一般由多个卷积核组成,其主要作用是对输入的目标进行特征分析,并筛选出其主要特征,从而得到对目标的特征表达。卷积层在某种意义上可以被看作是一种滤波器。
卷积层工作方式是对输入进行卷积。设输入图像X∈RM×N,进行卷积运算的卷积核W∈Rm×n,且m=M,n=N,则卷积运算为:
Figure BDA0002612728460000061
式中:y为卷积后得到的输出结果,i、j为具体的行列数,w为卷积核具体权重,x为图像数字化表示。实际运算中使用互相关运算实现卷积,具体为卷积核从输入的左上角开始,按照从左到右、从上往下的顺序依次进行滑动,卷积计算覆盖的范围与卷积核尺寸相同,每次滑动到一个位置时,卷积核数组就与输入中被覆盖的数组进行按元素相乘再相加,最终得到输出数组中对应的元素。图1以一个二维卷积运算为例,介绍了这种计算方式。其中,输入的尺寸大小为3×3,卷积核尺寸为2×2,输出尺寸大小为2×2,卷积核每次滑动步长(stride)为1,输出的四个元素计算方式为:
37=2×3+1×1+5×2+4×5
51=1×3+5×1+4×2+7×5
51=5×3+4×1+1×2+6×5
76=4×3+7×1+6×2+9×5
同时图1可以看到,经过卷积计算后输入的尺寸发生了变化,相比较原始输入进行了缩小,这种卷积称为valid卷积。假设输入尺寸为xh×xw,卷积核窗口尺寸为kh×kw,则输出尺寸计算方式为:
(xh-kh+1)×(xw-kw+1) (2-2)
由于深层网络包含大量卷积层,若使用这种卷积方式,输入图像的尺寸就会不断减小,分辨率也会随之降低,带来的就是图像特征信息的损失,无异于会影响最终训练出的模型的性能。为了防止这一情况,需要在卷积时对原图像进行填充(padding)。即通过手动添加的方式来保证输出形状的统一性。若高一侧填充ph行,宽pw行,则输出形状将变为:
(xh-kh+ph+1)×(xw-kw+pw+1) (2-3)
即输入尺寸的高与宽分别增加ph和pw。通常会设置ph=kh-1和pw=kw-1来使输入的尺寸不会随着卷积而发生改变,这种情况称为Same卷积,这也使得在构造网络时能方便的推测出每一层的输出形状。若kh为奇数,则会在输出图像高的两侧分别填充
Figure BDA0002612728460000062
行;若kh为偶数,则会在高的一侧填充
Figure BDA0002612728460000063
行,另一端填充
Figure BDA0002612728460000064
行。kw同理。图2展示了对图1的卷积计算进行0元素填充后的same卷积,可以看到输出图像尺寸未发生变化。
卷积运算实际上与互相关运算类似,将互相关运算变为卷积运算只需要将卷积核数组左右和上下都进行翻转,再与输入进行互相关运算即可。
全连接层
全连接层一般位于网络的输出位置,在整个网络中起到分类器的作用。在神经网络中,卷积层和池化层等操作可以看作是对原始输入图像进行特征提取,而全连接层以这些提取出的特征作为输入,并经过加权计算后将其输出到对应类别。具体如图3。由于全连接层是一维度,二维的特征输入无法直接与其计算,故首先要对输入进行扁平拉升(Flatten)处理。
图3中全连接层共5个神经元,若将每个神经元的数字作为连接到其的权重值,则全连接层的计算输出分别为:
2×1+1×1+5×1+4×1=12
2×2+1×2+5×2+4×2=24
2×3+1×3+5×3+4×3=36
2×4+1×4+5×4+4×4=48
2×5+1×5+5×5+4×5=60
其中,每层的输出值代表了特征加权组合后的值,将被用作分类判别。一般全连接层的神经元数量都在成百上千级,可以对输入特征进行详细的划分组合,从而更加准确的将其分类,但由于每一层全连接层均与上一层所有神经元完全连接,这使得其具有很大的参数量,过高的神经元个数会导致模型参数冗余,训练缓慢。
神经网络训练
正向与反向传播算法
反向传播(Back Propagation,BP)算法是神经网络在训练过程中计算神经元参数梯度的方法。它是指输出对输入的反馈求导,与之对应的是正向传播算法,在神经网络中,对于一个输入是通过正向传播来在网络中传递并得到输出。正向传播是指对神经网络的一个输入,按照自底向上的顺序,依次计算网络中不同层的值并存储模型的中间变量(包括输出),这里假设输入是一个特征为
Figure BDA0002612728460000071
的样本,若偏差项b为0,那么网络中间变量计算公式为:
z=W1x (2-14)
其中
Figure BDA0002612728460000072
为网络中间层(即隐藏层)的权重数值,将中间变量
Figure BDA0002612728460000073
输入按照元素运算的激活函数φ后,将得到长度为h的向量即隐藏层变量:
h=φ(z) (2-15)
隐藏层变量h也是一个中间变量。设输出层参数只有权重
Figure BDA00026127284600000810
那么将得到向量长度为q的输出层变量:
o=W2h (2-16)
设损失函数为l,且样本标签为y,则单个输入样本的损失值计算为:
L=l(o,y) (2-17)
同时,给网络添加正则化项,这里选取为常用的L2范数,同时给定超参数λ,则正则化项为:
Figure BDA0002612728460000081
其中矩阵的Frobenius范数(F-范数)等价于将矩阵变平为向量后计算L2范数。最终,模型在给定的数据样本上带正则化的损失为:
J=L+s (2-19)
则J为有关给定数据样本的目标函数。
反向传播则是用来计算神经网络中参数梯度的方法。具体的计算方式则是yikao1微积分中的链式求导法则,即沿着从输出层到输入层的顺序,依次计算并存储目标函数有光神经网络各层的中间变量以及参数的梯度值。设对输入或输出X,Y,Z为任意形状张量的函数Y=f(X)和Z=g(Y),由链式法则,有:
Figure BDA0002612728460000082
这里假设网络中参数同正向传播中一样,分别为W1和W2,则反向传播的计算目标为计算W1和W2的梯度,即
Figure BDA0002612728460000083
Figure BDA0002612728460000084
则按照反向传播算法的定义,使用链式法则依次计算神经网络中间各层的变量和参数的梯度值,计算次序与前向传播中对应中间变量的计算次序相反。首先计算目标函数J有关损失项L和正则项s的梯度,由J的定义可得,其梯度表达式分别为;
Figure BDA0002612728460000085
Figure BDA0002612728460000086
然后,根据链式法则计算目标函数J有关输出层变量的梯度
Figure BDA0002612728460000087
Figure BDA0002612728460000088
接下来计算目标函数中正则项有关两个参数的梯度:
Figure BDA0002612728460000089
Figure BDA0002612728460000091
则根据以上式子结果,可以计算最靠近输出层的模型参数的梯度
Figure BDA0002612728460000092
由链式法则,有:
Figure BDA0002612728460000093
沿着输出层向隐藏层继续使用反向传播算法,则隐藏层变量的梯度
Figure BDA0002612728460000094
的计算为:
Figure BDA0002612728460000095
由于激活元素φ是按元素运算,则中间变量z的梯度
Figure BDA0002612728460000096
的计算需要按元素相乘,即:
Figure BDA0002612728460000097
则最靠近输入层的模型参数的梯度
Figure BDA0002612728460000098
按照链式法则计算为:
Figure BDA0002612728460000099
至此,网络中参数传播和参数梯度传播结束。
Adam优化算法
Adam优化算法是目前使用较为广泛的神经网络优化算法,其从随机梯度下降法中发展而来,并集合了多种算法的优势。
神经网络搭建
残差网络
残差网络相对之前的传统网络结构,它最大的特点是能够实现恒等映射(Identity Mapping),从而解决传统神经网络中无法避免的网络退化(NetworkDegradation)现象,使得深层网络的训练成为可能。
网络退化指的是在神经网络训练过程中损失函数呈现先下架后上升的现象。图4与图5分别展示了传统网络与残差网络两种不同连接方式。
对于图4的传统连接结构,网络输入的x对应输出为F(x),实现恒等映射需要有F(x)=x;对于图5,在传统连接结构基础上加入了短路连接(Shortcut Connection),使得输出变为F(x)+x,此时实现恒等映射的方法转换为拟合F(x)+x=x即F(x)=0。在传统连接中,由于x本身也可能是通过恒等映射计算而得来的,所以对其进行直接拟合较为困难,精度不高;而在残差连接中,拟合对象变为了常数0,相比较之下更容易实现,且精度更高。同时,残差结构也优化了训练中出现的梯度弥散问题:神经网络的参数梯度求导使用的是链式法则,设损失函数为:
Loss=H(xn,wn,bn) (3-1)
式中:xn为第n层输入,wn为第n层权重,bn为第n层偏置;此时,对xn求偏导有:
Figure BDA0002612728460000101
当n很大(即网络足够深)时,对于初始层,其偏导数为:
Figure BDA0002612728460000102
训练时,每层网络的梯度会随着训练次数的增加逐渐减小,当小于1时初始层的偏导会由于连乘变得非常小,导致参数几乎停止更新,训练停滞。而添加残差块后,xn偏导变为:
Figure BDA0002612728460000103
由于
Figure BDA0002612728460000104
恒为正,则xn偏导值恒大于1,避免了网络过深带来的梯度趋于0的情况,使得训练不受层数影响。
更一般的,若将残差块定义为:
xn=F(xn-1,wn-1,bn-1)+xn-1 (3-5)
则对于n*层残差网络(n*>n),递推式3-5,得:
Figure BDA0002612728460000105
由3-6式可以看到,对于残差网络,其顶层可由低于它的层及两层之间残差和表示。此时对于初始层x1,其偏导数可表示为:
Figure BDA0002612728460000106
代入3-6式,有:
Figure BDA0002612728460000111
由于实际训练中,
Figure BDA0002612728460000112
并不会一直为-1,从而保证3-8式不会恒为0,解决了梯度消失问题,且3-8式同时反应出残差网络能使深层的梯度直接传递到低于它的任意层,让训练能够进行。
sResNet构建
在残差网络ResNet-50的基础上,设计出一种小型残差网络结构sResNet(smallResidual Network)。
sResNet网络主体由4部分卷积核尺寸不一致的残差块及两层全连接层构成。其中图6为残差块具体结构,由3个卷积层组成,每层之间使用ReLu作为激活函数,经过残差结构连接后通过最大值池化层输出;图7为sResNet主体结构:包含3个输出通道128、3个输出通道256、5个输出通道512及3个输出通道1024的残差块。输入的原始图像经过预处理后,输入进网络的卷积层,分别经过42层卷积层得到特征表达后,再通过一层全连接层进行特征的加权组合,最终输出对应的类别。
表1列出了sResNet与ResNet-50主体结构对比,可以看出,sResNet相比较ResNet-50减少了约25%的参数量。
表1两种网络主体结构对比
Figure BDA0002612728460000113
Figure BDA0002612728460000121
函数选择与改进
函数选择
通常损失函数的选择会与神经网络输出层(即最后一层)的激活函数搭配使用,能够发挥它们各自最大的特点,对于不同的问题则有不同的组合。
Sigmoid激活函数
Sigmoid激活函数表达式如下:
Figure BDA0002612728460000122
式中x为全连接层输出。由3-9绘制出Sigmoid函数图如图8。可以看到是一条S型的曲线,且对于输入的任意实数都能将其映射到(0,1)之间,从而得到该输入对应的某一类别的概率。同样的,对于一组输入,经过Sigmoid函数计算得到的一组结果其和不为1;
Sigmoid函数是将输入对象映射到(0,1)之间来得到输出对应的某一类别的概率,对于一组输入其概率和不为1,相当于对每一类别都进行了单独判断,并且判断结果不影响其它类别。
Sigmoid函数的导数可以通过链式法则求导得到,即:
Sigmoid'(x)=Sigmoid(x)(1-Sigmoid(x)) (3-10)
其函数图见图9,其在x=0处取得最大值0.25,而后向两边逐渐衰减。
二元交叉熵损失函数
二元交叉熵损失函数的表达式如下:
BCE(x)i=-yilog[fi(x)]-(1-yi)log[-fi(x)] (3-14)
式中:x代表输入;i代表类别个数,yi为第i个类别的真实标签,fi(x)为第i个类别神经网络输出值。分析3-14式,可以看出,对于单个样本,BCE的输出值为一个维度与输出类别相同的向量;当样本实际标签为真即y=1时,BCE中后半段由于(1-y)而变为0,此时表达式实际为:
BCE(x)i=-log[fi(x)] (3-15)
此时若预测值fi(x)趋近于1,即预测偏向于真,由对数函数性质可知式3-15值接近0,产生的损失值几乎可以忽略;若预测值fi(x)输出趋近于0,即预测偏向于假,则式3-15值也会随之增大,产生的损失值也较大;同理可推知预测值为假时损失值变化相反。
同一苹果可能会感染多种果害疾病,并且每种疾病的感染概率应当相互独立,即对于一个需要判别的苹果样本A,其可能具有的疾病类,疾病种类集合{a,b,c},应当对每一个集合中元素进行单独判别。属于分类问题中的多标签问题,故使用Sigmoid激活函数与BCE损失函数作为输出层配置。
改进的损失函数
对BCE损失函数进行改进。神经网络对苹果的病害分类是通过对比卷积层输出的特征来完成的,这里设分别有两个具有不同病害的苹果样本x1、x2对应的病害特征为p1,p2,则有:
Figure BDA0002612728460000131
式中:wconv为网络卷积层权值,bconv为网络卷积层偏差。由于当网络训练好后,权值wconv与偏差bconv将被固化,那么对样本进行分类,有:
Figure BDA0002612728460000132
式中:
Figure BDA0002612728460000133
Figure BDA0002612728460000134
分别对应x1与x2的预测标签,wpred与bpred为分类层的权值与偏差,从3-18式可以看到,最初输入的样本x1与x2的差异性决定了它们对应的预测输出的差值,而真实标签是一个离散值,那么当
Figure BDA0002612728460000135
Figure BDA0002612728460000136
之间的差异小于某一度量时,它们将具有一样的标签。由于果实的不同果害往往存在相似的表达,即x1≈x2,则通过式3-17有p1≈p2,进一步由式3-18知它们的预测输出
Figure BDA0002612728460000137
Figure BDA0002612728460000138
也会相仿,这就使得训练出的模型可能会将它们判别为同一种病害,从而造成误识别,影响后续的作业效果。
解决这一问题的重点在于让神经网络在模型训练过程中就能对相似的输入样本的预测输出值尽可能的增大区分度,即使网络不仅能对误分类的样本产生损失值,对于相似特征的样本也应有损失反馈,从而帮助模型识别。而原始的BCE损失函数只能针对正负样本起效,故提出一种改进的损失函数,它在原BCE损失函数基础上加入了专门针对相似特征不同类样本的类间相似惩罚项:
Figure BDA0002612728460000141
式中:λ为一个常系数,用来控制类间相似惩罚项在损失函数中占的比重;δ为一个值很小的正实数。C为分类类别数,A为该类主要特征空间位置,可用下式(3-20)计算出:
Figure BDA0002612728460000142
式中:p是每个样本经过之前的卷积层提取出的主要特征。分析上述两式:对于同一类别的不同样本,其主要特征具有相似性,则对应的p在特征空间中的分布位置可以看作是在一个集合中,对于一些具有相似特征的不同类样本,它们在空间中的分布会接近这两种集合的分界线,从而使得模型难以准确判断其所属类别;从式3-20中可以看出,每一类别对应A值是通过该类样本经过神经网络卷积层提取后得到的样本特征求平均得到,可以近似认为是该类样本的主要特征在空间中的聚合中心;而式3-19分母中,|Am-An|为不同类样本主要特征聚合中心的绝对距离,该值越大,类m与类n的主要特征聚合点在特征空间中的间距越大,区分度也相应的增大。故在训练过程中,让神经网络优化函数不断的去增加当前训练类别与其余类别的主特征空间间距,即可增加不同类别样本的区分度,从而提升模型准确率。
最终改进的损失函数见式3-21:
Figure BDA0002612728460000143
数据集及预处理
数据集获取
所使用的苹果病害数据样本共包含3类苹果病害,分别为苹果斑点病、苹果腐烂病和苹果锈病。则最终数据集一共有4类。其中,数据集的获取分为人工采集和网上补充两种:人工采集为获得苹果相关果害图像,前往果园实地进行样本收集,并在多种角度下进行拍摄,保证样本丰富性。同时对相对较少的病害数据,为避免不均衡样本造成的模型稳定性差的问题,从网络上收集对应病害图像进行扩充。
三种病害的病状如下:
(1)斑点病
一般在苹果表皮上回由类似于斑点状的小店,在初期的果实上表现出1-2mm的圆斑,周围带有一些红晕,发病到后期会逐渐变为黑褐色,类似于疮痂状。发病位置容易产生裂皮。该病只会在苹果表面发作,对果实有一定的危害性。
(2)腐烂病
该病感染时会在苹果表面产生一些尺寸较小的圆斑,初期颜色位淡褐色,随着生病时长颜色会逐渐变深,且圆斑的轮廓也越来越清晰,并且中心会呈现下凹的情况。当圆斑逐渐扩大时,会在其中心有部分呈圆环状的小黑点,且慢慢会融合到一起,最终导致整个果实腐烂掉,但果实会一直位于树枝上不会脱落。
(3)锈病
该病一般发生于苹果树落花一个月后。首先会在果实顶部产生一种绿色类似于水滴样的变色区域,随着时间推移逐渐向下进行延伸。随后会产生多条错落有致的斑纹,且与果实心室相对。最终这些斑纹颜色会逐渐向铁锈色变化,并伴随着果实表面愈加粗糙,以至于裂开。
数据预处理
虽然我们通过拍摄等方式获取了大量的苹果病害图片,但考虑通过数据扩充的方式来在现有的病害及上进行扩充。由于卷积神经网络在进行卷积运算时具有图像平移不变性和旋转不变性,这使得可以通过对拍摄的图像进行尺寸旋转等方式来增加其数量,从而在原始数据集基础上扩大现有数据集,使网络在训练过程中更加容易收敛。通过对原始数据集使用七种不同的方式来进行数据扩充,分别是:对原始样本左右翻转,方向随机;对原始样本亮度进行调整,倍数0.7-1.3;对原始样本大小进行变换,倍数0.8-1.2;对原始样本尺寸进行裁剪,位置随机;对原始样本进行上下位移,移动距离随机;对原始样本左右位置移动,移动位置随机;对原始样本进行旋转,旋转角度每次10度。则扩充前后数据集数量如表3.2。
表3.2病害图像扩充前后数量
Figure BDA0002612728460000151
Figure BDA0002612728460000161
同时,对病害图像按照3:7的比例划分为测试集与训练集。并对训练集数据进行归一化操作。其数学表达式如公式3-22:
Figure BDA0002612728460000162
式中:μ是指输入样本图像数据的均值,σ是指输入样本图像数据的方差。
实验及结果分析
相关参数及环境
实验环境为:Intel I9-9900K处理器、Nvidia RTX2080TI 11GB显卡、32GB内存;软件平台为Windows 10 64bit操作系统、Tensorflow-GPU 1.14.0、CUDA Toolkit 10.0.130、CUDNN 7.6.4,编程语言为Python。
在搭建好网络结构开始训练前,仍有部分参数需要人为的设定,这些参数称为超参数(Hyperparameters)。所有实验所采用的超参数均保持一致,并列在表3.3中。其中,训练过程中的迭代优化算法使用Adam优化器,该优化器一般需要设置两个超参数:初始学习率与学习率衰减值,它能在迭代过程中自动的对学习率进行衰减调整从而提升训练效果,这里初始学习率设置为0.001,学习率衰减值设定为0.00001;每次迭代的图片批量大小batchsize设为32,实验一共迭代20次,即epochs为20;同时加入dropout来防止模型过拟合,这里dropout设置为0.3,即每次训练均有0.3的神经元不参与训练。
表3.3训练超参数设定
超参数 设定值
优化器 Adam
学习率 0.001
学习率衰减值 0.00001
批量大小 32
迭代次数 20
Dropout 0.3
训练结果与分析
图10和图11为在训练集上进行训练得到的准确率图与损失函数图,两幅图曲线均已进行比率为0.6的平滑。可以看出,经过20次训练后,模型训练准确率达到了约99%,训练损失降低到约0.04,且曲线曲率逐渐稳定,可以认为训练已经收敛。从两条曲线的变化情况来看,在前8次迭代中曲率变化最为明显,说明所设计的网络及对应的损失函数能很好的提取出苹果病害的特征并对其进行分类。
训练过程中的准确度并不能准确反映出模型的分类能力,因为模型可能是过拟合的,即“死记硬背”下了所有的训练集而不是通过学习规律,因此需要用在划分样本时未参与训练的数据来对模型进行检验,并使用混淆矩阵(Confusion Matrix)来评价。它能反映出模型对每一类别样本的区分程度。图12为本研究混淆矩阵图。
从图中可以看出,改进后的残差网络及损失函数训练出的模型具有相当不错的分类效果,其中,对苹果斑点病分类效果最佳,其次为正常苹果与腐烂病,对锈病分类效果相对不佳。图13为部分识别结果图。
同时为研究改进后的残差网络sResNet及损失函数对模型准确率的提升,设立了4组对比实验:
(1)sResNet+改进损失函数
(2)sResNet+原损失函数
(3)ResNet50+改进损失函数
(4)ResNet50+原损失函数
模型评价指标则选取精准率(Precision)、召回率(Recall)、F1分数(F1-Score)三个指标来评价模型优劣。三种指标计算方式分别如下:
精准率:
Figure BDA0002612728460000171
式中:tp(true positive)代表真阳性,fp(false positive)代表假阳性。精准率表示所有预测为真的样本中,真正的真样本占的比例。该值越接近1代表性能越好。
召回率:
Figure BDA0002612728460000172
式中:fn(false negative)代表假阴性。召回率表示预测为真的样本占所有真样本的比例。该值越接近1代表性能越好。
F1分数:
Figure BDA0002612728460000181
由于精准率与召回率是一对相互矛盾的衡量,且都有各自的局限性,单一使用其中一个来评价模型好坏并不合理,综合考虑两者才能客观的对模型进行评价,故引入F1分数。从式3-25可以看出,F1分数综合考虑了精准率与召回率,同样,该值越大代表模型性能越好。表3.4列出了4种不同模型对比结果。
表3.4对比实验在苹果病害上性能对比(单位:%)
实验组合 精准率 召回率 F1-分数
sResNet+改进Loss 92.66 91.34 92.00
sResNet+原Loss 88.94 85.97 87.42
ResNet50+改进Loss 91.96 92.03 91.99
ResNet50+原Loss 89.15 86.33 87.71
可以看到,使用原损失函数的sResNet与ResNet50两模型的精准率与召回率相差不大,两者F1分数也很接近,说明sResNet相比较ResNet50在网络更加轻量化的同时,并未损失精度。在采用了改进损失函数后,sResNet与ResNet50两网络性能均有提升。说明在使用了改进损失函数后,网络在训练时不仅会考虑正负样本之间的差异,也会考虑不同样本之间的差异,并在不断的迭代中,通过原损失函数来减小类内距离、通过加入的类间相似惩罚项来扩大类间距离,从而使得模型具有更好的精准率与召回率,提高模型性能。
对传统残差网络和损失函数在果害分类问题上的不足,设计出一种改进残差网络sResNet及损失函数的果害分类方法。该方法首先通过降低卷积层数与卷积核数来精简网络参数,其次通过类间相似惩罚项使得模型能在训练中尽可能增大不同类之间距离。实验表明,sResNet相比较ResNet50在不损失精度的情况下减小了模型计算量;而改进损失函数能提高病害识别准确率,证明了该方法的有效性。
迁移学习及分层学习率的病毒分类
使用迁移学习的方法来作为网络训练的方法。这种方法的思想是使用从大型数据集上训练出的网络来辅助目标网络的训练;迁移学习就是将这种在大型数据集上训练的网络与我们自己的网络进行“知识迁移”,从而提高自身网络的性能。而迁移后的网络在训练时若设置统一学习率可能会导致网络难以收敛的问题,提出使用分层学习率来代替原有的全局学习率进行训练,并通过对比实验来验证方法的有效性。
采用迁移学习后的网络训练具体实现步骤如下:
(1)搭建神经网络A,加载迁移学习用数据集ImageNet
(2)对神经网络A权重参数随机初始化,设定学习率、迭代次数等相关参数,然后进行训练
(3)图片特征提取。加载预训练网络结构的特征权重以及节点计算方法作为目标任务对于神经网络B的特征提取器,然后把经过预处理的农作物病害图像输入预训练卷积模型中,使用向前传播的方式,重新计算出对应的的网络结点取值。
(4)任务分类层。在预训练模型结构后接全连接层来实现苹果病害的分类问题。
(5)损失函数选择使用第三章提出的改进损失函数
(6)对训练出的模型使用测试集进行准确率测试,验证模型性能。
图14展示了这一过程。
分层学习率
学习率是神经网络超参数的一种,它用来控制网络参数的在训练过程中更新的步幅,需要人为设置。学习率越大,则网络每次迭代参数更新的幅度越大,会越快的接近其最优解或局部最优解;学习率越小,则网络每次迭代参数更新的幅度越小,相对应的会较为缓慢的接近最优解或局部最优解。但过小的学习率会使模型下降速度极其缓慢且难以越过鞍点,耗费较多资源;而过大的学习率会导致参数越过(overshoot)最优解从而导致逐渐发散。图15和图16分别展示了这两种情况
为实现苹果病害识别分类,属于深度学习中的分类问题。设分类任务中某一类数据集为:{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中x为样本图片,y为该样本对应标签,m为样本数量。设训练出的模型预测函数为:
hθ(z)=g(θ01z12z2+...+θnzn) (4-1)
式中:hθ(z)为预测函数,θ为分类层中的权值参数,z为输入到分类层的特征,n为输入的特征数量。式4-1中,分类层权值参数θ是在训练过程中通过损失函数梯度的反向传播来进行迭代,即:
Figure BDA0002612728460000191
式中:α为学习率,J(θ)为损失函数产生的损失值。并且在第一轮迭代之前,θ其值为默认初始化值。令积层参数为[w1,w2,...wl],其中w为每层权重参数的集合向量,l代表层数。通常学习率设定好后会作用于全局,即卷积层与全连接层采用相同的下降速率,但在本文中卷积层参数使用了已经训练好的神经网络模型的卷积层,该部分参数由于经过大量样本训练,具有足够的泛化性,已经能提取出较好的图像特征,可以认为接近最优点,其对应的参数集w更新速率应当缓慢;而全连接层权重参数由于不具有适用性,无法进行迁移学习来初始化参数,需重新训练,则说明刚开始距离函数的最优解较远,其参数更新应较为迅速。若使用统一的学习率来训练,当使用较小的学习率来使之适用于卷积层时,全连接层的参数将难以正常收敛最优点;若增大学习率使其适用于全连接层来保证全连接层的收敛性,则有可能会使卷积层参数超出最优解位置,从而发生振荡导致无法收敛。
为解决该问题,考虑对网络不同位置的层使用不同的学习率:由于卷积层使用了迁移学习后的参数,而一般越靠近输入的浅层,其提取的基础特征具有更广的通用性,对于这部分权重应进行细微的调节即可,故这部分浅层网络使用较低的学习率,对于网络较神的卷积层,其所得到的特征是在浅层网络特征基础上不断的筛选优化的,得到的是一些关于输入图像的高级抽象表示,其通用性较为一般,这部分权重参数距离最优解距离适中,故这部分网络使用中等的学习率,对于全连接层,其对于不同的分类任务具有完全不同的参数,且部分权重参数本身为随机初始化,完全没有训练,可以认为距离最优解最远,故接全连接层使用较大的学习率,则改变后的参数迭代公式如下:
Figure BDA0002612728460000201
式中:wl、wm、θn分别对应网络卷积浅层、卷积深层和全连接层权重参数。
实验及结果分析
相关参数及环境
实验学习率设置如表4.1。
表4.1分层学习率设置
网络层 学习率
卷积层浅层 0.0001
卷积层深层 0.001
全连接层 0.01
神经网络结构同样采用与之前相同的网络,如图17所示。
训练结果分析
由于采用了迁移学习,网络卷积层权值很快就达到了最优解附近,全连接层权值随着迭代过程的进行逐渐朝最优解收敛。
表4.2列出了使用该方法后得到的测试集病害识别准确率,可以看到,具有较为不错的效果。
表4.2迁移学习及分层学习率识别结果
斑点病 腐烂病 锈病 正常苹果 合计
识别成功 148 142 141 144 575
果实数量 150 150 150 150 600
正确率(%) 98.6 94.67 94.0 96.0 95.83
图18则绘制出了对应的训练结果混淆矩阵
图18训练结果混淆矩阵图与图12对比,可以发现,斑点病的识别结果基本没有变化,其余三类识别成功数量均有上升,其中,腐烂病识别成功数量从138上升到142,锈病识别成功数量从130上升到141,正常苹果识别成功数量从140上升到144。为进一步详细分析,设立了两组对比实验,分别为不使用迁移学习的识别结果和使用迁移学习及全局学习率的识别结果,表4.3列出了结果对比。
表4.3三种方法对比结果(单位:%)
斑点病 腐烂病 锈病 正常苹果 平均
未用迁移学习 98.67 92.00 86.67 93.30 92.66
迁移学习 98.00 92.67 84.00 91.30 91.50
迁移学习+分层学习率 98.67 94.67 94.00 96.00 95.83
可以看到使用了迁移学习及分层学习率的方法在除大多类样本上均有识别准确率的提升。分析原因,可以认为在大规模样本训练后的卷积层权重相比较小规模训练得到的权重,能够提取出更一般,更好的图像特征,从而帮助模型进行识别。
基于迁移学习和分层学习率的网络训练方法,该方法首先利用已在大型数据集上训练好的网络模型卷积层参数来作为果害分类模型卷积层初始化参数,其次通过在卷积层与全连接层使用不同学习率来确保模型各层均能更快的达到收敛。实验表明,采取迁移学习的方法能有效降低模型卷积层计算量;而分层学习率能帮助模型更快收敛同时保证卷积层参数处于最优点,能在对比实验中取得准确率提升的效果,证明了该方法的可行性。
模型压缩
网络剪枝是目前使用较多的一种模型压缩方法,该方法认为在一个训练好的神经网络中,一般都存在大量的冗余参数。而网络剪枝正是通过剔除这些参数来对模型进行压缩,从而提升模型性能。
一般直接训练出来的模型在存储时,其权重均是以浮点型的数值存储,即Float32位。当一个网络的神经元个数较多时,浮点型的数值会占据大量的空间导致模型尺寸迅速膨胀。而量化就是将模型的存储方式进行转换,使用占用空间更小的数据类型进行替代,从而降低模型的存储空间,亦或者是对原本的模型编码结构进行改变,使用位数更少的方式进行表示。
卷积层参数是依靠迁移学习基础上微训练而来,其值相对稳定,故进行压缩时应重点考虑全连接层,即可以通过网络剪枝来针对该层进行压缩;同时量化也能方便的完成压缩过程。
模型中,卷积层参数只占总网络参数的一小部分,而全连接层占大部分。故将全连接层作为优化目标,降低其参数量;具体为将训练好的模型从32位浮点型转换为8位整数型。由于整数型相比浮点型没有小数部分,占用空间小。故转换后的模型尺寸会大幅减少,其推理速度(inference speed)也会加快。图19为具体流程图。
对于待压缩的模型A的全连接层,可以将其简化为一个关于输入x和参数wn的函数。若设输出结果为y,即y=f(x,wn)。考虑一个较小的正数ε,令压缩后模型为A1,则当A1对应的输出y1的输出范围不小于y-ε时,就认为该压缩后的模型A1能够替代原始模型A对输入进行表达。为此,需要对网络中的权值进行重要性筛选,这里使用如下方法:
(1)对每个权重均赋予一个常量与之相乘,此常量值取1或0,记作k。
(2)设立一个wn的阈值w,当权重小于该阈值时,令其常量为0,否则为1。由此可以确立一个由m形成的网络结构。
(3)对筛选后的网络进行再训练,当其准确率符合y1>y-ε时,结束训练,即剪枝结束。
剪枝完成后,将网络中每个权值进行量化,即将其存储类型转换为整型8位表示,从而进一步节省尺寸空间。
压缩模型效果对比
表5.1列出了压缩前后模型大小与识别准确率对比。从表中可以看出,使用提出的模型压缩方法,能大幅减少模型占用空间,相比原始模型占用空间,压缩后的模型占用空间约为十分之一。且准确率相比下降的程度微乎其微,说明对性能影响较小。
表5.1压缩前后对比
模型类型 尺寸/MB 准确率% 缩小倍率
原始模型 678 95.83 1x
压缩后模型 62.8 94.69 10.8x
最终算法对比试验
为表明最终得到的压缩后的模型能够适用于苹果病害的分类研究,分别将其与其余算法进行对比比较,其中表5.2列出了使用传统算法手动提取特征并用机器学习方对苹果病害斑点病和腐烂病的分类准确度,其主要是通过分析苹果不同病害的纹理、形状及颜色来提取出特征后使用多分类支持向量机(Multi Support Vector Machine,MSVM)进行分类。其中GCH为全局颜色直方图(Global color histogram),LBP为局部二值模式(Localbinary pattern),ZM为泽尔尼克矩(Zernike moments),CLBP为完全局部二值模式(Completed local binary pattern),CCV为颜色聚合向量(Color coherence vector)。
表5.2与传统算法分类效果对比(单位:%)
斑点病 腐烂病
GCH+LBP+ZM 95.00 91.25
GCH+CLBP+ZM 96.25 90.00
CCV+LBP+ZM 98.75 91.25
CCV+CLBP+ZM 97.50 92.50
本研究模型 98.76 93.39
结果对比可以看到,在斑点病识别上本文方法具有优势,而腐烂病虽效果与传统算法接近,但手动提取特征较为耗时,且若特征有所变化需要重新提取,相比神经网络不具有广泛的适用性。
虽相比高光谱图像来说使用摄像机获取的图像在准确率上无明显优势,但高光谱仪器成本昂贵,大规模推广不现实,难以实际使用。
通过以上对比可以看出,本文方法能够有效提升果实病害分类准确率。相比手工特征提取及高光谱仪具有一定先进性。
苹果病害识别分类软件设计
软件开发环境与主要框架
为更好的利用最终得到的模型来完成苹果病害分类作业,本文将在此基础上设计开发出一个苹果病害识别分类系统。该系统能够接受从外界传入的图像输入,并对输入图像使用得到的模型进行判断。其中,系统开发的操作系统为Windows10 64bit,开发语言为C++,开发使用工具为Qt Creator 4.11.0 Community。整个软件处理流程图如图20所示。
软件主要分为两块:前台展示界面即主界面,负责接受图像并进行适当的图像预处理(如调整尺寸缩放等),后台则对从前台传入的图像使用本章压缩后得到的模型进行病害识别,并将识别后的结果输出到前台进行展示。该软件运行时首先需要用户选择待识别的病害图像,随后软件将对图像进行识别并在右侧输出结果,用户可以通过查看右侧窗口来获取本次识别信息。
使用全连接层权值裁剪和全局权值量化,将其由原来的fp32转换为int8类型。实验表明,转换后的模型大小相比之前大幅减少,并且准确率并没有受到太多影响;同时,由于压缩后的模型为本研究最终模型,故与传统图像处理及高光谱图像这两种目前使用较多的病害识别方法进行了比较,结果表明,得到的模型在便携性、低成本性和识别准确率综合考虑下取得最优结果。
(1)针对要解决的果害分类问题,在现有残差网络的结构基础上,构建出小型残差网络来进行模型训练;同时,在现有损失函数基础上,对于果害图片样本特点,使用类间相似惩罚项来提升模型对于可能具有相似特征的不同类样本的识别准确率。实验表明,小型残差网络能够很好的适应本研究任务,而改进后的损失函数能有效提升准确率。
(2)对于样本数量较小的情况下重头训练一个模型可能会导致网络卷积层的参数不具有提取一般特征的最优能力的问题,提出使用迁移学习方法,首先在样本数量充足的大型数据集上进行网络的训练,待其收敛后将提取出的卷积层参数用作苹果病害分类网络卷积层参数的初始化,从而保证权值已经接近最优解;同时,在网络训练中,考虑使用全局学习率可能会导致已经迁移的卷积层参数振荡问题使用分层学习率方法,保证网络各层均能合理收敛。实验表明,使用迁移学习及分层学习率训练出的模型能进一步提升模型识别准确率。
(3)考虑到模型的实际应用情况,对得到的模型进行进一步的压缩优化。对于占据网络大量参数的全连接层,使用权值裁剪的方法减少冗余;并将模型类型由原始的fp32转换为int8,使模型尺寸大幅减少,且精度得到了保证,并最终与其余传统算法进行了比较,说明了本方法的优越性。
以上是本发明的优选实施方案,对于本技术领域普通技术人员来说,在不脱离本发明原理前提的情况下,还可以做出若干改进和润色,这些改进和润色同样视为本发明的保护范围。

Claims (10)

1.基于深度学习的苹果病毒识别方法,其特征在于,苹果病毒识别系统方法如下:
(1)对现有苹果病毒识别算法中神经网络结构参数较多,用来训练苹果病害分类容易导致过拟合的问题,提出一种改进残差网络的神经网络结构,通过优化原有残差网络卷积核组成来减少参数量;并对不同病害特征相似容易误识别的问题,在传统损失函数中加入类间相似惩罚项来提升病害识别准确率;
(2)从神经网络的训练层次出发,在模型参数初始化方案上应用迁移学习,先让模型在包含大量图片的数据集上进行训练,学到先验知识,再将得到的卷积层参数作为苹果病害分类网络卷积层的初始化参数进行微调训练;同时对网络不同深度的层使用分层学习率,从而使网络不同层均能接近或稳定在最优解附近;
(3)使用基于迁移学习和改进残差网络来训练得到苹果病害分类模型,在其基础上对模型进行调整优化,通过网络剪枝和量化来精简模型结构与参数量,在确保精度的情况下大幅缩小模型大小,进一步提高识别模型识别速度,并最终形成一套完整的苹果病害识别系统。
2.根据权利要求1所述的基于深度学习的苹果病毒识别方法,其特征在于:所述神经网络结构包括残差网络结构sResNet(small Residual Network);所述残差网络结构sResNet主体由4部分卷积核尺寸不一致的残差块及两层全连接层构成,包含3个输出通道128的残差块、3个输出通道256的残差块、5个输出通道512的残差块、3个输出通道1024的残差块;所述由3个卷积层组成,每层之间使用ReLu作为激活函数,经过残差结构连接后通过最大值池化层输出;输入的原始图像经过预处理后,输入进网络的卷积层,分别经过42层卷积层得到特征表达后,再通过一层全连接层进行特征的加权组合,最终输出对应的类别。
3.根据权利要求1所述的基于深度学习的苹果病毒识别方法,其特征在于:所述神经网络结构还包括Sigmoid激活函数和改进的损失函数;
Sigmoid激活函数:
Sigmoid激活函数表达式如下:
Figure FDA0002612728450000011
Sigmoid函数的导数可以通过链式法则求导得到,即:
Sigmoid'(x)=Sigmoid(x)(1-Sigmoid(x)) (3-10)
改进的损失函数:设分别有两个具有不同病害的苹果样本x1、x2对应的病害特征为p1,p2,则有:p1=F(x1,wconv,bconv)
p2=F(x2,wconv,bconv) (3-17)
由于当网络训练好后,权值wconv与偏差bconv将被固化,那么对样本进行分类,有:
Figure FDA0002612728450000021
在原BCE损失函数基础上加入了专门针对相似特征不同类样本的类间相似惩罚项:
Figure FDA0002612728450000022
A可用下式(3-20)计算出:
Figure FDA0002612728450000023
最终改进的损失函数见式3-21:
Figure FDA0002612728450000024
4.根据权利要求1所述的基于深度学习的苹果病毒识别方法,其特征在于,验证残差网络结构sResNet和改进的损失函数对模型准确率的提升:
设立4组对比实验:
(1)sResNet+改进损失函数;
(2)sResNet+原损失函数;
(3)ResNet50+改进损失函数;
(4)ResNet50+原损失函数;
模型评价指标则选取精准率(Precision)、召回率(Recall)、F1分数(F1-Score)三个指标来评价模型优劣,三种指标计算方式分别如下:
精准率:
Figure FDA0002612728450000025
式中:tp(true positive)代表真阳性,fp(false positive)代表假阳性;精准率表示所有预测为真的样本中,真正的真样本占的比例;该值越接近1代表性能越好;
召回率:
Figure FDA0002612728450000026
式中:fn(false negative)代表假阴性;召回率表示预测为真的样本占所有真样本的比例;该值越接近1代表性能越好;
F1分数:
Figure FDA0002612728450000031
5.根据权利要求1所述的基于深度学习的苹果病毒识别方法,其特征在于,所述迁移学习的网络训练具体实现步骤如下:
(1)搭建神经网络A,加载迁移学习用数据集ImageNet;
(2)对神经网络A权重参数随机初始化,设定学习率、迭代次数等相关参数,然后进行训练;
(3)图片特征提取,加载预训练网络结构的特征权重以及节点计算方法作为目标任务对于神经网络B的特征提取器,然后把经过预处理的农作物病害图像输入预训练卷积模型中,使用向前传播的方式,重新计算出对应的的网络结点取值;
(4)任务分类层,在预训练模型结构后接全连接层来实现苹果病害的分类问题;
(5)损失函数选择使用第三章提出的改进损失函数;
(6)对训练出的模型使用测试集进行准确率测试,验证模型性能。
6.根据权利要求1所述的基于深度学习的苹果病毒识别方法,其特征在于,所述分层学习率为:设分类任务中某一类数据集为:{(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中x为样本图片,y为该样本对应标签,m为样本数量。设训练出的模型预测函数为:
hθ(z)=g(θ01z12z2+...+θnzn) (4-1)
参数迭代公式如下:
Figure FDA0002612728450000032
7.根据权利要求1所述的基于深度学习的苹果病毒识别方法,其特征在于:所述模型压缩流程为:先对原模型进行全连接层参数裁剪,之后对裁剪后的模型进行类型转换,最后输出压缩模型。
8.根据权利要求7所述的基于深度学习的苹果病毒识别方法,其特征在于:所述全连接层参数裁剪即网络剪枝的方法如下:
(1)对每个权重均赋予一个常量与之相乘,此常量值取1或0,记作k;
(2)设立一个wn的阈值w,当权重小于该阈值时,令其常量为0,否则为1;由此可以确立一个由m形成的网络结构;
(3)对筛选后的网络进行再训练,当其准确率符合y1>y-ε时,结束训练,即剪枝结束。
9.根据权利要求7所述的基于深度学习的苹果病毒识别方法,其特征在于:所述类型转换即量化:将网络中每个权值进行量化,是指将其存储类型转换为整型8位表示。
10.根据权利要求1所述的基于深度学习的苹果病毒识别方法,其特征在于:还包括苹果病毒识别分类软件系统;所述苹果病毒识别分类软件系统开发的操作系统为Windows1064bit,开发语言为C++,开发使用工具为Qt Creator 4.11.0 Community;所述苹果病毒识别分类软件系统的软件分为前台展示界面即主界面,负责接受图像并进行适当的图像预处理(如调整尺寸缩放),后台则对从前台传入的图像使用压缩后得到的模型进行病害识别,并将识别后的结果输出到前台进行展示。
CN202010759705.7A 2020-07-31 2020-07-31 基于深度学习的苹果病毒识别方法 Pending CN111881987A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010759705.7A CN111881987A (zh) 2020-07-31 2020-07-31 基于深度学习的苹果病毒识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010759705.7A CN111881987A (zh) 2020-07-31 2020-07-31 基于深度学习的苹果病毒识别方法

Publications (1)

Publication Number Publication Date
CN111881987A true CN111881987A (zh) 2020-11-03

Family

ID=73205849

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010759705.7A Pending CN111881987A (zh) 2020-07-31 2020-07-31 基于深度学习的苹果病毒识别方法

Country Status (1)

Country Link
CN (1) CN111881987A (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112580714A (zh) * 2020-12-15 2021-03-30 电子科技大学中山学院 一种以错因强化方式动态优化损失函数的方法
CN112613536A (zh) * 2020-12-08 2021-04-06 燕山大学 一种基于smote和深度学习的近红外光谱柴油牌号识别方法
CN112686268A (zh) * 2020-12-28 2021-04-20 内蒙古科技大学 一种基于SVD-ResNet50神经网络的农作物叶片病症识别方法
CN112749675A (zh) * 2021-01-20 2021-05-04 云南农业大学 一种基于卷积神经网络的马铃薯病害识别方法
CN112883901A (zh) * 2021-03-12 2021-06-01 北京睿芯高通量科技有限公司 一种基于ResNet的天体光谱分类方法及其系统
CN113155851A (zh) * 2021-04-30 2021-07-23 西安交通大学 基于深度学习的覆铜板表面缺陷视觉在线检测方法及装置
CN113240081A (zh) * 2021-05-06 2021-08-10 西安电子科技大学 针对雷达载频变换的高分辨距离像目标稳健识别方法
CN113392853A (zh) * 2021-05-28 2021-09-14 中汽研(天津)汽车工程研究院有限公司 一种基于图像识别的关门声品质测评识别方法
CN113553972A (zh) * 2021-07-29 2021-10-26 青岛农业大学 一种基于深度学习的苹果病害诊断方法
CN113569962A (zh) * 2021-07-30 2021-10-29 昆明理工大学 一种基于TFL-ResNet的残药智能识别方法
CN115410088A (zh) * 2022-10-10 2022-11-29 中国矿业大学 一种基于虚拟分类器的高光谱图像领域自适应方法
CN116502117A (zh) * 2023-04-13 2023-07-28 厦门市帕兰提尔科技有限公司 一种基于ResNet的危险化学品识别方法、装置以及设备
CN117994650A (zh) * 2024-01-18 2024-05-07 江苏绿沐源农业科技有限公司 基于大数据的智能农业管理系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800806A (zh) * 2019-01-14 2019-05-24 中山大学 一种基于深度学习的农作物病害检测算法
CN110210555A (zh) * 2019-05-29 2019-09-06 西南交通大学 基于深度学习的钢轨鱼鳞伤损检测方法
WO2019169816A1 (zh) * 2018-03-09 2019-09-12 中山大学 一种用于精细化识别车辆属性的深度神经网络及训练方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019169816A1 (zh) * 2018-03-09 2019-09-12 中山大学 一种用于精细化识别车辆属性的深度神经网络及训练方法
CN109800806A (zh) * 2019-01-14 2019-05-24 中山大学 一种基于深度学习的农作物病害检测算法
CN110210555A (zh) * 2019-05-29 2019-09-06 西南交通大学 基于深度学习的钢轨鱼鳞伤损检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
肖经纬等: "基于改进残差网络的果害分类方法", 《计算机工程》, pages 1 - 7 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112613536A (zh) * 2020-12-08 2021-04-06 燕山大学 一种基于smote和深度学习的近红外光谱柴油牌号识别方法
CN112580714B (zh) * 2020-12-15 2023-05-30 电子科技大学中山学院 一种以错因强化方式动态优化损失函数的物品识别方法
CN112580714A (zh) * 2020-12-15 2021-03-30 电子科技大学中山学院 一种以错因强化方式动态优化损失函数的方法
CN112686268A (zh) * 2020-12-28 2021-04-20 内蒙古科技大学 一种基于SVD-ResNet50神经网络的农作物叶片病症识别方法
CN112749675A (zh) * 2021-01-20 2021-05-04 云南农业大学 一种基于卷积神经网络的马铃薯病害识别方法
CN112883901A (zh) * 2021-03-12 2021-06-01 北京睿芯高通量科技有限公司 一种基于ResNet的天体光谱分类方法及其系统
CN113155851A (zh) * 2021-04-30 2021-07-23 西安交通大学 基于深度学习的覆铜板表面缺陷视觉在线检测方法及装置
CN113240081A (zh) * 2021-05-06 2021-08-10 西安电子科技大学 针对雷达载频变换的高分辨距离像目标稳健识别方法
CN113240081B (zh) * 2021-05-06 2022-03-22 西安电子科技大学 针对雷达载频变换的高分辨距离像目标稳健识别方法
CN113392853A (zh) * 2021-05-28 2021-09-14 中汽研(天津)汽车工程研究院有限公司 一种基于图像识别的关门声品质测评识别方法
CN113553972A (zh) * 2021-07-29 2021-10-26 青岛农业大学 一种基于深度学习的苹果病害诊断方法
CN113569962A (zh) * 2021-07-30 2021-10-29 昆明理工大学 一种基于TFL-ResNet的残药智能识别方法
CN115410088A (zh) * 2022-10-10 2022-11-29 中国矿业大学 一种基于虚拟分类器的高光谱图像领域自适应方法
CN115410088B (zh) * 2022-10-10 2023-10-31 中国矿业大学 一种基于虚拟分类器的高光谱图像领域自适应方法
CN116502117A (zh) * 2023-04-13 2023-07-28 厦门市帕兰提尔科技有限公司 一种基于ResNet的危险化学品识别方法、装置以及设备
CN116502117B (zh) * 2023-04-13 2023-12-15 厦门市帕兰提尔科技有限公司 一种基于ResNet的危险化学品识别方法、装置以及设备
CN117994650A (zh) * 2024-01-18 2024-05-07 江苏绿沐源农业科技有限公司 基于大数据的智能农业管理系统

Similar Documents

Publication Publication Date Title
CN111881987A (zh) 基于深度学习的苹果病毒识别方法
CN110084794B (zh) 一种基于注意力卷积神经网络的皮肤癌图片识别方法
CN110020682B (zh) 一种基于小样本学习的注意力机制关系对比网络模型方法
Choi et al. Pact: Parameterized clipping activation for quantized neural networks
CN110096968B (zh) 一种基于深度模型优化的超高速静态手势识别方法
US20190228268A1 (en) Method and system for cell image segmentation using multi-stage convolutional neural networks
CN111639719B (zh) 基于时空运动和特征融合的足迹图像检索方法
CN107169535A (zh) 生物多光谱图像的深度学习分类方法及装置
CN109829420B (zh) 一种基于改进蚁狮优化算法的高光谱图像的特征选择方法
CN112733659B (zh) 一种基于自步学习双流多尺度密集连接网络的高光谱图像分类方法
CN111696101A (zh) 一种基于SE-Inception的轻量级茄科病害识别方法
CN109740734B (zh) 一种利用优化神经元空间排布的卷积神经网络的图像分类方法
KR102152374B1 (ko) 인공신경망의 비트 양자화 방법 및 시스템
El-Said Image quantization using improved artificial fish swarm algorithm
CN111489364A (zh) 基于轻量级全卷积神经网络的医学图像分割方法
CN109146000A (zh) 一种基于冰冻权值改进卷积神经网络的方法及装置
CN114118369B (zh) 一种基于群智能优化的图像分类卷积神经网络设计方法
CN115049952A (zh) 一种基于多尺度级联感知深度学习网络的幼鱼肢体识别方法
CN115601751B (zh) 一种基于领域泛化的眼底图像语义分割方法
CN115761240A (zh) 一种混沌反向传播图神经网络的图像语义分割方法及装置
CN116563683A (zh) 一种基于卷积神经网络和多层感知机的遥感影像场景分类方法
CN116311186A (zh) 一种基于改进Transformer模型的植物叶片病变识别方法
CN113191361B (zh) 一种形状识别方法
WO2024060839A9 (zh) 对象操作方法、装置、计算机设备以及计算机存储介质
Aria et al. Generalized cooccurrence matrix to classify IRS-1D images using neural network

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination