一种基于ResNet残差网络的病虫害识别方法及装置

文档序号:31466052发布日期:2022-09-09 21:14阅读:292来源:国知局
一种基于ResNet残差网络的病虫害识别方法及装置
一种基于resnet残差网络的病虫害识别方法及装置
技术领域
1.本发明涉及深度学习技术领域,特别涉及一种基于resnet残差网络的病虫害识别方法及装置。


背景技术:

2.病虫害识别是在农作物种植中一种至关重要的技术,随着人们对蔬果需求的膨胀,为了能扩大农作物产量和提高品质,更多的果农选择在温度、湿度可控的大棚内种植。但也由于大棚内较适宜的温湿度,农作物的生长会受到许多生物或非生物性因素的胁迫,病虫害就是其中最大的威胁。作为“果中皇后”的草莓也不例外,常见的草莓病害就多达15种,各种病害对草莓的产量和品质造成很大的威胁,通常一次大规模的病害的爆发,会对种植的草莓造成严重的损失,而小规模的出现也会导致草莓产量下降、品质受损。对于种植经验不足的果农来说,他们得去各大相关论坛或者是专家平台上咨询获得的病害种类和防治建议,而病虫害识别技术就可以及时的分析出图片中的病害种类,最大程度的降低病虫害带来的经济损失。
3.现有的通过深度学习识别草莓病虫害或者其他农作物的技术还存在识别类型范围太广、训练图片特征点不足、识别场景多聚焦实验室无干扰的情况,无法确保最终的模型对多样复杂的草莓病虫害在不同的场景下都有较高的准确率,即缺少泛化能力;且深度学习需要有大量的数据,目前在网络上还不存在一个数据量大、病虫害类型完整且带有标注的草莓病虫害数据集,故现有技术还存在训练数据量少,所得结果不完整的问题。现存在基于深度学习对植物病虫害识别的方法,许多都是基于深度卷积神经网络并且没有加入注意力机制实现的,在面对草莓病虫害图像数据相似度很高、数据背景影响大等情况下,模型容易出现拟合的情况,并且模型的“注意力”会被影响,


技术实现要素:

4.为了解决现有技术存在的问题,本发明的目的在于提供一种基于resnet残差网络的病虫害识别方法及装置,具有通过将注意力机制嵌入至病虫害检测识别网络中,能够有效地提高了病虫害检测识别网络的识别准确率,同时也能够减少了果农对农产品病虫害的判断时间的优点。
5.本发明的上述技术目的是通过以下技术方案得以实现的:
6.首先,本发明为解决上述问题提供了一种基于resnet残差网络的病虫害识别方法,所述方法包括以下步骤:
7.步骤s1:搭建基于resnet的病虫害检测识别网络;
8.步骤s2:训练并优化所述病虫害检测识别网络;
9.步骤s3:采集待检测产品的图像,并对图像预处理,得到输入图像;
10.步骤s4:利用训练并优化后的病虫害检测识别网络对输入图像进行检测识别,得到识别结果;
11.其中,步骤s1包括以下步骤:
12.步骤s11:将resnet中每个block的前两层卷积层修改为原先的两倍,最后一层不变,且增加多条通路,得到resnext-50(32x4d)网络;
13.步骤s12:将注意力机制嵌入到resnext-50(32x4d)模型中的每一块残差模块中,得到se-resnext-50(32x4d)网络。
14.相对于现有技术,本发明通过将注意力机制嵌入在resnext-50(32x4d)网络中的每一块残缺模块中,注意力机制可以通过网络学习调整每个通道的特征权重,辅助模型收集对目标领域更有帮助的语义信息,增强有效的特征通道,抑制无效或效果小以及噪声等干扰元素的权重,减弱其对模型识别效果的不利影响,从而使训练模型达到更好的效果;同时resnext-50(32x4d)网络中本身便含有较多的残差模块,可以有效地解决随着卷积层数的增加训练效果降低的问题,使得模型的收敛速度加快、识别的准确率更高的优点。
15.作为本发明的优选方案,步骤s4所述利用训练并优化后的病虫害检测识别网络对输入图像进行检测识别,得到识别结果包括以下步骤:
16.步骤s41:对输入图像进行卷积处理,得到第一输出特征;
17.步骤s42:对第一输出特征进行压缩处理,得到压缩后特征;
18.步骤s43:对压缩后特征进行激励处理,得到特征通道间的权重调整参数;
19.步骤s44:将权重值与第一输出特征相乘,得到第二输出特征;
20.步骤s45:对第二输出特征进行识别,得到识别结果。
21.作为本发明的优选方案,步骤s42所述对第一输出特征进行压缩处理,得到压缩后特征为:对第一输出特征进行全局平均池化处理,得到压缩后特征,公式为:
[0022][0023]
其中,zc代表压缩后特征,f
sq
()代表压缩操作函数,uc代表第一输出特征,w、h代表第一输出特征的宽和高,i、j代表第一输出特征上的坐标位置,c代表第一输出特征的特征通道数。
[0024]
作为本发明的优选方案,步骤s43所述对压缩后特征进行激励处理,得到特征通道间的权重调整参数包括以下步骤:
[0025]
步骤s431:将压缩后特征与第一全连接层连接,用于对压缩后特征进行降维,得到降维后特征;
[0026]
步骤s432:将降维后特征输入至第一激活函数,得到激活后特征;
[0027]
步骤s433:将激活后特征与第二全连接层连接,用于对激活后特征进行维度恢复,得到恢复后特征;
[0028]
步骤s434:将恢复后特征输入至第二激活函数,得到特征通道间权重调整参数;
[0029]
公式为:
[0030]
s=f
ex
(zc,wi)=δ(w2σ(w1zc)),
[0031]
其中,s代表通道间权重调整参数,f
ex
代表激励操作函数,δ代表第二激活函数,σ代表第一激活函数,
[0032]
作为本发明的优选方案,步骤s44所述将权重值与第一输出特征相乘,得到第二输出特征的公式为:
[0033][0034]
其中,代表第二输出特征,f
scale
代表对第一输出特征进行重标定操作,sc代表第c个特征通道的权重调整参数。
[0035]
作为本发明的优选方案,步骤s2所述训练并优化所述病虫害检测识别网络包括以下步骤:
[0036]
步骤s21:获取病虫害图片样本数据,并对其进行清洗标注处理,得到训练数据;
[0037]
步骤s22:将训练数据集输入至病虫害检测识别网络,得到训练输出值;
[0038]
步骤s23:将训练输出值与预设值输入损失函数,得到损失值;
[0039]
步骤s24:根据损失值对病虫害检测识别网络的参数进行调整,得到训练并优化后的病虫害检测识别网络。
[0040]
作为本发明的优选方案,在所述步骤s2训练并优化所述病虫害检测识别网络中,损失函数采用pytorch中多分类的交叉熵损失函数crossentropyloss,公式为:
[0041][0042]
其中,class代表的是标签值,标签值并不参与直接计算,它指的是当前所属的类别,x指的是当前类别的数据,j指类别的数量。
[0043]
作为本发明的优选方案,步骤s3所述采集待检测产品的图像,并对图像预处理,得到输入图像包括以下步骤:
[0044]
步骤s31:通过摄像头采集待检测产品的图像,并对图像进行格式转化,得到转化后图像;
[0045]
步骤s32:对转化后图像的图像尺寸进行调整,得到调整后图像;
[0046]
步骤s33:对调整后图像进行标准化处理,得到输入图像。
[0047]
作为本发明的优选方案,所述步骤s33:对调整后图像进行标准化处理,得到输入图像中,标准化的公式为:
[0048][0049][0050]
其中x是图像矩阵,μ为图像的均值,σ是图像像素值的标准差,n是图像x的像素数量。
[0051]
为达到本发明另一目的,本发明还提供了与上述方法对应的一种基于resnet残差网络的病虫害识别装置,其包括:
[0052]
搭建模块,用于搭建基于resnet的病虫害检测识别网络;
[0053]
训练模块,用于训练并优化所述病虫害检测识别网络;
[0054]
采集模块,用于采集待检测产品的图像,并对图像预处理,得到输入图像;
[0055]
识别模块,利用训练并优化后的病虫害检测识别网络对输入图像进行检测识别,得到识别结果;
[0056]
其中,所述搭建模块包括:
[0057]
修改子模块,将resnet中每个block的前两层卷积层修改为原先的两倍,最后一层
不变,且增加多条通路,得到resnext-50(32x4d)网络;
[0058]
嵌入子模块,将注意力机制嵌入到resnext-50(32x4d)模型中的每一块残差模块中,得到se-resnext-50(32x4d)网络。
[0059]
相对于现有技术,本发明通过将注意力机制嵌入在resnext-50(32x4d)网络中的每一块残缺模块中,注意力机制可以通过网络学习调整每个通道的特征权重,辅助模型收集对目标领域更有帮助的语义信息,增强有效的特征通道,抑制无效或效果小以及噪声等干扰元素的权重,减弱其对模型识别效果的不利影响,从而使训练模型达到更好的效果;同时resnext-50(32x4d)网络中本身便含有较多的残差模块,可以有效地解决随着卷积层数的增加训练效果降低的问题,使得模型的收敛速度加快、识别的准确率更高的优点。
附图说明
[0060]
下面根据附图和实施例对本发明作进一步详细说明。
[0061]
图1为本发明一种基于resnet残差网络的病虫害识别方法的流程框图;
[0062]
图2为resnet网络与嵌入se模块的resnext-50网络的部分结构对比图;
[0063]
图3为本发明一种基于resnet残差网络的病虫害识别方法中训练数据采集、标注、清洗以及存储工作流程图;
[0064]
图4为本发明一种基于resnet残差网络的病虫害识别方法的网络结构示意图;
[0065]
图5为本发明一种基于resnet残差网络的病虫害识别装置的框图;
[0066]
图6为本发明一种基于resnet残差网络的病虫害识别装置中搭建模块的框图;
[0067]
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
[0068]
为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面对本发明实施例的技术方案作进一步的详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0069]
实施例1
[0070]
参照图1至图4所示的基于resnet残差网络的病虫害识别方法,其中示例性地,在本实施例中病虫害检测的对象为草莓,草莓病虫害识别方法包括以下步骤:
[0071]
步骤s1:搭建基于resnet的草莓病虫害检测识别网络;
[0072]
步骤s2:训练并优化所述草莓病虫害检测识别网络;
[0073]
步骤s3:采集待检测草莓的图像,并对图像预处理,得到输入图像;
[0074]
步骤s4:利用训练并优化后的草莓病虫害检测识别网络对输入图像进行检测识别,得到识别结果;
[0075]
其中,步骤s1包括以下步骤:
[0076]
步骤s11:将resnet中每个block的前两层卷积层修改为原先的两倍,最后一层不变,且增加多条通路,得到resnext-50(32x4d)网络;
[0077]
步骤s12:将注意力机制嵌入到resnext-50(32x4d)模型中的每一块残差模块中,得到se-resnext-50(32x4d)网络。
[0078]
其中,步骤s11具体包括:
[0079]
将resnet中每个block的前两层卷积层修改为原先的两倍,最后一层不变,参考inception-v3的原理,并且增加32条通路,得到resnext-50(32x4d)网络,然后将其在image net数据集上的预训练模型作为草莓病虫害识别的预训练模型,进行迁移学习到草莓病虫害识别上。resnext-50(32
×
4d)使用的残差块个数分别为3、4、6、3,残差单元加起来一共有48层,加上conv1的7
×
7卷积层和全连接层一共50层,这里不把池化层算为一层。其通过特征映射的方式大大缓解了梯度消失的问题。
[0080]
其中,步骤s12具体包括:
[0081]
se模块为注意力机制的核心结构。主要包括压缩(squeeze)和激励(excitation)两个操作,可以适用任何映射f
tr
:x

u,x∈rh′×w’×c‘
,u∈rh×w×c,以卷积为例,卷积核为v=[v1,v2,

,vc],其中vc代表第c个卷积核,那么得到的输出u=[u1,u2,

,uc]:
[0082][0083]
其中*代表卷积操作,而代表一个s通道的2-d卷积核,其输入一个通道上的空间特征,学习特征空间关系,但由于对各个通道的卷积结果进行求和,所以通道特征关系与卷积核学习到的空间关系混合在一起。se模块就是为了抽离这种混合,使得模型直接学习到通道特征关系。
[0084]
由于卷积只是在一个局部空间内进行操作,u很难捕获足够的信息来提取通道之间的关系,感受野比较小,想要调整通道之间的权重关系,需要对所有通道的信息进行压缩。通过压缩(squeeze)操作,将输入尺寸为c
×h×
w的特征图(其中c、h、w分别为输入特征图的特征通道数、长和宽)进行全局平均池化处理,得到c
×1×
1的特征向量,表示这一层c个特征图的全局信息,使其具有全局感受野,公式为:
[0085][0086]
其中,zc代表压缩后特征,f
sq
()代表压缩操作函数,uc代表第一输出特征,w、h代表第一输出特征的宽和高,i、j代表第一输出特征上的坐标位置,c代表第一输出特征的特征通道数。
[0087]
然后进行激励(excitation)操作,将上一操作得到的压缩后的全局信息与维度为的第一全连接层连接,其起到降维的作用,降维系数r是个超参数,可以较少计算复杂度,然后将其输入至第一激活函数中,得到激活后特征,最后将激活后特征与第二全连接层连接,第二全连接层负责将激活后特征恢复至原始的维度,并且输入与输出的特征通道维度相同。最后的第二激活函数计算生成每个特征通道的权重调整的参数,其中采用relu函数作为第一激活函数,采用sigmoid函数作为第二激活函数。公式为:
[0088]
s=f
ex
(zc,wi)=δ(w2σ(w1zc))
[0089]
其中,s代表通道间权重调整的参数,f
ex
代表激励(excitation)操作函数,δ代表sigmoid函数,σ代表relu激活函数,
[0090]
最后将学习得到的各个通道间的权重值与第一输出特征相乘,获得第二输出特征。公式为:
[0091][0092]
其中,代表第二输出特征,f
scale
代表对第一输出特征进行重标定操作,sc代表第c个特征通道的权重调整参数。
[0093]
加入了se模块的resnext-50的部分结构图具体可参考图2。
[0094]
其中,步骤s2:训练并优化所述病虫害检测识别网络具体为:
[0095]

、草莓病虫害数据的采集
[0096]
通过网络收集相关的草莓病虫害图片数据,通过网络收集数据的途径包括但不限于:通过植物病虫害相关的软件app下载草莓病虫害图片数据;对各大农业技术服务平台进行搜索,对于存在公开草莓病害图片的技术论坛使用python网页爬虫技术,获取论坛上草莓种植户公开上传的病虫害图片数据。其次,还能够通过实地走访来获取草莓病虫害图片数据,例如:走访周边的草莓种植园,使用摄影设备对果农指出患有草莓病虫害的草莓植株患病区域进行拍摄。在本次实验中,按照上述的图片数据手机途径,初步采集得到未清洗的图片数据5万余张。
[0097]

、草莓病虫害图片的清洗
[0098]
主要进行人工的初步图片数据清洗工作,主要是对图片分辨率较低(图片比较模糊的)、图片存在大面积无关内容(例如拍摄者的手)、图片中有过于显著的信息(例如草莓果实图片中存在红色的盖子等)和图片患病个体数量较多(图片中存在多棵草莓植株患病)等图片进行删除。
[0099]

、草莓病虫害图片的标注
[0100]
依据app上面给予的病害信息提示对图片进行病虫害标注;依据多位果农给予的病害信息对图片进行病虫害标注;依据获取得到的对应论坛技术专家回复的病虫害信息对图片进行标注。标注得到未清洗的数据为32个类别。
[0101]
对处理完的图片数据进行存储。整个数据采集、标注、清洗以及存储工作流程图参考图3。
[0102]

、图片数据预处理
[0103]
根据模型的结构需求,我们需要对图片进行预处理。主要是筛选图片格式为jpg的数据作为模型的输入,其他的图片格式也可以,但是需要对模型的数据输入部分进行改动。然后将图片尺寸大小resize为224*224。
[0104]

、图片数据增强
[0105]
数据增强主要是用来扩充已有的图片数据集。对原始数据进行x轴对称、y轴对称、随机旋转、随机亮度随机对比度以及随机应用仿射一系列数据增强操作。最后对图片数据进行标准化处理,用于提升模型精度和收敛速度。数据标准化可以更好保持样本间距和符合统计学假设。标准化的公式可见如下:
[0106][0107]
[0108]
其中x是图像矩阵,μ为图像的均值,σ是图像像素值的标准差,n是图像x的像素数量。
[0109]

、参数设置
[0110]
对于数据预处理完以及数据增强后的数据,将图片数据集中图片的名字“name”和归属的类别“label”使用python进行读取存进excel文件中。构造数据读取函数,将数据输入到模型中。其中模型的数据输入尺寸input_shape参数为224*224*3,为3通道,对应上述的图片尺寸;样本输入批次batch_size为64;学习率learning rate为1e-3;worker数量num_workers选择为0;迭代次数epochs选择为200;l2权值衰减weight decay设置为1e-5;输出类别个数out_features设置为18,我们只对数据量充足的18个类别数据训练。
[0111]
构造学习速率退火learning rate annealing函数calc_learning_rate,通过根据预定义的时间表降低学习率来调整训练期间的学习率,使得模型在训练迭代次数增加的同时,自适应调整学习率。
[0112]
模型的优化器选择adamw,它是基于权重衰减的优化器,是adam优化器加上l2正则结合,设置一个权重衰弱参数weight_decay=1e-5调整l2正则化。
[0113]
设置每一层的激活函数使用relu,它可以克服梯度消失的问题和加快训练速度,它主要是把所有的负值都变为0,而正值不变。它的公式是
[0114]
f(x)=max(0,x)
[0115]
设置全局平均池化层(global average pooling)对病虫害特征数据进行降维处理,除去冗余信息。
[0116]
损失函数选择pytorch中多分类的交叉熵损失函数crossentropyloss,它将logsoftmax和nllloss方法结合到一个类中,logsoftmax实际上是在softmax的结果上再做多一次log运算。所以crossentropyloss也可以理解为softmax

log

nllloss合并成一步。softmax后的数值都在0~1之间;将结果再取log,乘法改成加法减少计算量,可以保障函数的单调性;将输出的结果和对应的label值进行nllloss,除去负号,求均值。公式为
[0117][0118]
标签值class,并不参与直接计算,它指的是当前所属的类别,x指的是当前类别的数据,j指的是一共有多少个类别。例如我们输入三个类别0、1和2,批量大小为1,具体值为[-0.8,-0.6,-0.4],计算当前属于0类别的损失值为
[0119]
0.8+log(exp(-0.8)+exp(-0.6)+exp(-0.4))≈1.3119
[0120]
对于模型的评估,使用交叉验证方法stratifiedkfold,此处选择的是五折交叉验证,即训练集与验证集的比例为4:1。stratifiedkfold使用分层采样,确保训练集与验证集中各类别样本的比例与原始数据集中相同。使用stratifiedkfold对数据采样的同时,对数据进行随机打乱。模型的评估指标选择准确率(accuracy)和f1 score。
[0121]
其中,步骤s3:采集待检测产品的图像,并对图像预处理,得到输入图像具体为:
[0122]
拍摄待检测草莓的图像,当图像的格式不为jpg格式时,对图像的格式进行转换以获得jpg格式的待检测草莓图像,将待检测草莓图像的尺寸进行调整,将其尺寸调整为224*224,最后对其进行标准化处理,获得输入图像。
[0123]
其中步骤s4:利用训练并优化后的病虫害检测识别网络对输入图像进行检测识
别,得到识别结果具体为:
[0124]
对输入图像进行卷积处理,得到第一输出特征;对第一输出特征进行压缩处理,得到压缩后特征;对压缩后特征进行激励处理,得到特征通道间的权重调整参数;将权重值与第一输出特征相乘,得到第二输出特征;对第二输出特征进行识别,得到草莓病虫害识别结果。
[0125]
实施例2
[0126]
参考图5至图6所示用以实现实施例1的方法的基于resnet残差网络的病虫害识别装置,其中示例性地,在本实施例中病虫害检测的对象为草莓,草莓病虫害识别装置包括:
[0127]
搭建模块601,用于搭建基于resnet的草莓病虫害检测识别网络;
[0128]
训练模块602,用于训练并优化所述草莓病虫害检测识别网络;
[0129]
采集模块603,用于采集待检测草莓的图像,并对图像预处理,得到输入图像;
[0130]
识别模块604,利用训练并优化后的草莓病虫害检测识别网络对输入图像进行检测识别,得到草莓病虫害识别结果;
[0131]
其中,所述搭建模块包括:
[0132]
修改子模块6011,将resnet中每个block的前两层卷积层修改为原先的两倍,最后一层不变,且增加多条通路,得到resnext-50(32x4d)网络;
[0133]
嵌入子模块6012,将注意力机制嵌入到resnext-50(32x4d)模型中的每一块残差模块中,得到se-resnext-50(32x4d)网络。
[0134]
在本发明实施例1的基于resnet残差网络的病虫害识别方法可以以微信小程序的方式实现应用,示范性地,我们将图片预处理、读取模型、草莓病虫害识别网络等封装在flask框架中,然后利用docker将该flask框架部署在阿里云服务器中。用户通过打开微信小程序并对待检测草莓进行拍照或者上传待检测草莓图像时,能够利用云函数将待检测草莓图像上传到阿里云服务器中,并由通过docker部署在阿里云服务器中的flask框架对草莓图片进行预处理,将其尺寸转换成jpg并调整尺寸为224*224,最后对其进行标准化处理,得到输入图像;草莓病虫害识别网络对输入图像进行检测识别,并根据得到的草莓病虫害检测识别结果搜索云数据库,获取其病症、解决方案与预防措施等信息,最后结合wxml、wxss与javascript将识别结果在微信小程序客户端上进行展示。
[0135]
本文中的描述中所提到的术语“包括”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括其他没有列出的步骤或模块,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。本文中的术语“第一”、“第二”,仅仅用于在描述上加以区分,并没有特殊的含义。
[0136]
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以适当组合,形成本领域技术人员可以理解的其他实施方式。
[0137]
以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入
本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1