【《基于CNN的大棚蔬菜疾病识别算法案例》5300字】_第1页
【《基于CNN的大棚蔬菜疾病识别算法案例》5300字】_第2页
【《基于CNN的大棚蔬菜疾病识别算法案例》5300字】_第3页
【《基于CNN的大棚蔬菜疾病识别算法案例》5300字】_第4页
【《基于CNN的大棚蔬菜疾病识别算法案例》5300字】_第5页
已阅读5页,还剩8页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1页共31页基于CNN的大棚蔬菜疾病识别算法案例通过对于蔬菜疾病识别领域的研究,主要存在两点影响疾病识别准确率的因素(1)同一种疾病感染蔬菜的不同部位时可能会出现不同的症状。(2)不同疾病感染同一种蔬菜时可能出现相似的症状。针对第一点,本文实验所用的数据集中包括同一种疾病感染不同部位的图片。这就使得神经网络可以全面学习疾病症状。针对第二点,本文使用目前识别领域准确率较高的卷积神经网络进行疾病识别。其次,在进行疾病种类识别之前,本文增加了图片筛选以及病斑提取等预处理步骤,这些预处理可以极大的降低背景对于疾病识别的影响,提高识别准确率。本文疾病识别算法流程如下图1.10,首先算法对小车拍来的图片进行基本预处理,基本预处理包括通常的尺寸变换,归一化流程。考虑到小车在巡检过程中可能拍摄出模糊的图像,因此本文在预处理中添加了筛选模糊图像的算法。预处理过后,算法进行作物是否染病的识别,此识别过程将会判断图片中作物是否染病。如果染病,算法会进一步对患病图片进行病斑提取,然后对其疾病种类进行识别。本文之所以将患病识别与疾病种类识别分别开来,而不是在疾病种类识别中加入一个健康类别,一是因为这样可以更好的通过调节参数对患病种类的召回率进行把控,二是可以在疾病种类识别之前加入病斑提取,提高疾病识别准确率。图1.10疾病识别流程Fig.1.10Diseasedetectionprocess1.1预处理本文所用相机拍出的图片尺寸为299×299,与Inceptionv3神经网络模型需要的输入尺寸相同,所以无需对图片进行尺寸调整,仅需要对图片像素值进行归一化以去除噪点对于识别算法的影响。此外,因小车拍摄过程中难免会因为抖动而使得图片模糊不清,为了筛选出高清晰度的图片,本文使用Tenengrad对模糊图像进行剔除。Tenengrad函数是一种基于梯度的图像清晰度评价函数。在图像处理中,一般认为聚焦后的图像边缘更尖锐,所以梯度函数值更大,反之模糊图像梯度较小。Tenengrad函数使用Sobel算子提取水平和垂直方向的梯度值。Sobel算子处理的图像的平均灰度值越高,图像越清晰。Tenengrad的图像清晰度定义如下:(1.6)G(x,y)的定义如式(1.7):(1.7)式中,T为给定的边缘检测阈值,Gx和Gy分别为Sobel水平边缘检测算子和垂直边缘检测算子在像素点(x,y)的卷积。如式(1.8)所示,A代表原始图像。(1.8)下图1.11为在同一地点拍摄图片,第一图为静止拍摄,图片较为清晰,Tenengrad算法得分8.89。第二张为抖动拍摄,图片相比第一张模糊,Tenengrad算法得分1.50。通过设定阈值,便可以对模糊图像进行筛除。图1.11图像清晰度Fig.1.11Imageresolution1.2患病识别患病识别的作用是判别蔬菜是否患病,如患病则将识别结果通知相关工作人员,以便及时采取一定手段对疾病进行控制。本文患病识别所用神经网络模型为InceptionV3,在2.3.2小节已对其进行简单介绍,其神经网络的结构及参数如表1.2所示。此模型包含一些基本的网络层和多个Inception模块,Inception模块的作用一是使用1×1的卷积来进行升降维,二是在多个尺寸上同时进行卷积再聚合,是Inception模型的核心结构。此模型的输入尺寸为299×299×3,与本文所选相机所拍摄的图片尺寸一致,故预处理过程无需调整图片尺寸;此模型的输出类别为1000种,本文仅包含患病与健康两种,故需将模型输出大小调整为2。表1.2Incention-v3模型结构Table1.2Incention-V3modelstructure类型核尺寸/步长输入尺寸卷积层3×3/2299×299×3卷积层3×3/1149×149×32卷积层3×3/1147×147×32池化层3×3/2147×147×64卷积层3×3/173×73×64卷积层3×3/271×71×80卷积层3×3/135×35×1923×Inception/35×35×2885×Inception/17×17×7682×Inception/8×8×1280池化层8×88×8×2048全连接层/1×1×2048softmax层/1×1×10001.3病斑分割为了提高神经网络对于疾病识别的准确率,本文在将图片进行疾病种类识别之前增加了病斑提取步骤。此步骤所使用的算法为HSV颜色空间分割法。此算法的理论可行性是基于凡作物感染疾病,皆会出现与作物原有组织颜色不同的可观测病斑。病斑的颜色或为黄褐色至黑褐色,如早疫病、黑斑病,此为致病菌导致植物组织坏死的表象;或为白色,如白粉病、霜霉病,此为致病菌大量繁殖产生真菌菌落的颜色。由于病斑呈现出一定的颜色规律,故而可以通过色彩掩膜对病斑进行提取。由于RGB颜色模型是面向硬件设备的模型,其与人的视觉模型相去甚远,且此模型的三原色之间的相关性比较大,且其与实际颜色的关系并非线性,在进行掩膜提取时难以设定阈值。故需要先将RGB颜色空间的图片转换为HSV颜色空间,然后再进行分割。与RGB不同,HSV代表色相、饱和度和明度。色调是描述纯颜色的颜色属性。饱和度表示一种纯色被白光稀释的程度。明度代表颜色明亮的程度。HSV空间中三个指标互相独立,如果您想忽略其中一个或另一个,这是很有用的。例如,人脸检测通常在强度图像上进行。因此HSV经常用于进行颜色的分割识别。下表1.3为不同颜色对应的HSV值。表1.3HSV颜色分量范围Table1.3HSVcolorcomponentrangeHSV黑白灰红橙黄绿青蓝紫Hmin000015611263578100125Hmax1801801801018025347799124155Smin00043434343434343Smax2553043255255255255255255255Vmin02214646464646464646Vmax46255220255255255255255255255为了准确的提取出病斑,本文针对不同疾病选取多张图片进行实验,通过逐步更改HSV三个分量的值,探索出病斑提取最佳参数。如下图是早疫病叶片症状,首先调整H分量的值,分别为50,40,30.如下图1.12所示。可见随着Hmax的减小,图片的非病斑部分逐步被过滤掉,随后病斑部分也被过滤掉。实验得出Hmax最佳值为43.图1.12早疫病阈值分割之调整H分量Fig.1.12AdjustmentHcomponentofthresholdsegmentationforearlyblight随后逐步改变S分量的值,得出最佳分割时Smax的值为160。下图1.13是将Smax分别设置为180、160和140的分割效果。图1.13早疫病阈值分割之调整S分量Fig.1.13AdjustmentScomponentofthresholdsegmentationforearlyblight最后逐步改变V分量的值,得到最佳分割时Vmax的值为136。下图1.14是将VMax分别设置为150、136和100时的分割效果。最终得到最佳的黄褐色病斑提取参数为:Hmin=0,Hmax=43;Smin=0,Smax=160;Vmin=0,Vmax=136。图1.14早疫病最佳阈值分割效果Fig.1.14Optimalthresholdingsegmentationeffectofearlyblight接下来实验将针对由真菌菌落产生的白色病斑的提取进行展开,本次实验选取患有霜霉病的作物叶片作为实验对象。通过查表得知,白色对应的Hmin=0,Hmax=180;Smin=0,Smax=30;Vmin=221,Vmax=255。由于H分量代表色相,对于白色病斑分割不起作用,故本次实验首先调整S的值,通过实验得出最佳分割所对应的Smax值为49。下图1.15为将Smax分别设置为80、60和30的分割结果。图1.15霜霉病阈值分割之调整S分量Fig.1.15AdjustmentScomponentofthresholdsegmentationfordownymildew接下来对V分量进行调整,得出最佳分割所对应的Vmin值为172。下图1.16是Vmin分量分别为110、172和200时的分割效果。最终得出提取此图片病斑的最佳参数为:Hmin=0,Hmax=179;Smin=0,Smax=49;Vmin=172,Vmax=255。图1.16霜霉病阈值分割之调整V分量Fig.1.16AdjustmentVcomponentofthresholdsegmentationfordownymildew基于以上两组实验得出的病斑提取参数,从数据集中分别随机选出50个黄褐色病斑和白色病斑的图片进行病斑提取操作,并记录提取效果。在病斑提取过程中,病斑提取不全对下一步疾病识别造成的影响要远大于背景没有剔除干净所造成的影响,故而实验逐步放宽参数,以保证每一张图片中的病斑提取率超过80%。最终得出的较为有效的病斑提取参数如下表1.4所示。表1.4病斑提取参数Table1.4Spotextractionparameters病斑类型HminHmaxSminSmaxVminVmax黄褐色白色0047180001605301681422551.4疾病种类识别最后,将提取出的病斑图像放入神经网络进行疾病种类识别,本文选取了目前图片识别领域典型的神经网络模型ResNet50,InceptionV3,DenseNet161,和DenseNet169,使用收集的数据集进行对比实验。然后,通过对实验结果进行分析,确定本文疾病种类识别所用模型为InceptionV3,有关此模型的介绍请参见2.3.2。1.5神经网络训练与结果分析(1)数据集与实验环境综合考虑蔬菜大棚各个疾病的发病率及危害程度,本文选择了五种常见疾病进行识别。这五种病害分别是黑斑病、霜霉病、白粉病、细菌性斑疹病和早疫病。这些疾病的发病症状等信息显示在下表1.5中。表1.5疾病识别种类及症状Table1.5Identificationofdiseasetypesandsymptoms疾病名称易感作物感染部位感染症状白菜、番茄、甘蓝茎、叶、果实叶片表面出现红棕色斑点,并逐渐扩大为圆形或无定形的暗黑色斑点油菜、萝卜、黄瓜叶片、果实叶片上浅黄色圆形病斑,空气潮湿时叶片背面有霜霉层。果柄呈灰白色,水渍软腐黄瓜、西葫芦、甜瓜茎、叶、果实叶子背面出现小而圆的白色白粉病,之后从有色的霉斑中出现小而黄色的颗粒黄瓜、西瓜、豆角叶片、果实叶子产生深棕色到黑色的斑点,绿色的幼果有凸起的小斑点马铃薯、辣椒、番茄、茄子茎、叶、果实叶片为水渍深绿色斑点,放大后呈圆形或不规则圆形斑点。果的病斑常在果蒂附近在蔬菜疾病识别领域,目前有一个公开数据集plantvillage,其包含了带标签的健康和患病作物叶片图片共54306个。其中包括14种作物的26种疾病。许多论文使用此数据集来训练神经网络。但由于其中多种作物并非大棚内种植,且疾病种类与大棚常见疾病有所不同。而且其数据集仅包括叶片部位的症状,不能满足本文实验需求。本文使用自行收集的数据集进行实验。数据集西红柿疾病包含西红柿患有五种疾病和健康图片共5000张,其中健康图片2000张,疾病图片每种600张。每种疾病都包含有叶子,茎,果实方面的症状。如下图1.17所示。这些图片均为未预处理的真实拍摄图像,图片并未完全聚焦在疾病症状上且复杂背景,与小车拍摄的图片类似。图1.17数据集Fig.1.17Dataset在神经网络的实现上,本文采用目前学术界流行的pytorch库。此第三方库使用简单,文档齐全。可以容易的进行神经网络搭建以及训练的展开。本次神经网络的训练环境如下表1.6所示。表1.6实验环境Table1.6Experimentalenvironment操作系统Windows10CPUIntel®Core™i7-7700HQRAM8GBGPUNVIDIAGeForceGTX1050编程语言Python3.6.8深度学习库Pytorch-gpu-1.1CUDA10.1(2)患病识别模型训练首先训练患病识别网络InceptionV3。数据集包括健康图片与患病图片各2000张,其中患病图片为从每种疾病种类各随机选出400张。本次训练batchsize为32,学习率为0.0002,训练集与测试集分割比例为8:2.训练过程中的损失函数以及准确率如下图1.18所示。图1.18损失值以及准确率Fig.1.18Lossvalueandaccuracy在患病识别中,如检测出作物患病,计算机端会通知相关工作人员,工作人员即需前去查看并采取相应措施,减少疾病带来的损失。然而,如果算法没有将患病作物识别出来,也就是出现了将患病图像识别为健康的假阴性。则会耽误对于疾病的治疗,增加的疾病造成的损失。而如果出现将健康图片识别为患病的假阳性,出现错误警告,仅仅是让工作人员多跑了一趟,增加了一些劳动,相比于假阴性造成的损失小的多。故而本文最为关注的指标为患病种类的召回率。神经网络softmax层输出的结果为图片识别为各个类的概率,需要通过二值化来获得最终识别信息,在二分类问题时一般阈值为0.5。在此通过更改此阈值来提高召回率。首先加载训练好的神经网络模型,并逐步更改阈值从0到1,每次变化0.0125。阈值对召回率以及正确率的影响如下图1.19所示。图中蓝色线代表正确率,黄色线代表召回率,两线的焦点坐标为(0.4625,0.9901)。图1.19不同阈值对正确率和召回率的影响Fig.1.19Influenceofdifferentthresholdsonaccuracyandrecallrate小车在实际工作中的每一次错误识别都将对使用者带来损失,此损失包括将健康图片识别为患病和将患病图片识别为健康所造成损失之和,如下公式所示,其中Ns与Nh分别为一定时间内识别的患病图片数和健康图片数,r与p分别是患病召回率和正确率,ls和lL=Ns1−r(3)疾病种类识别模型训练首先对于候选的几个神经网络模型包括ResNet50,InceptionV3,DenseNet161,和DenseNet169,采用相同超参数进行对比实验。首先需处理输入图片大小,InceptionV3为为299×299,其余为224×224。随后更改模型输出类别为5。此次实验所用数据集包含五种疾病,每种疾病500张图片。训练的超参数设定如下:batchsize=16,learningrate=0.0002并使用指数衰减学习率,使用L1正则化。统计准确率结果如下表1.7所示。表1.7模型准确率对比Table1.7Modelaccuracycomparison模型准确率(%)ResNet5079.21InceptionV387.12DenseNet16186.15DenseNet16981.73实验结果表明,InceptionV3的准确率最高,为87.21。故本文选取此模型用作疾病种类识别。训练过程的损失值与准确率变化如下图1.20所示。图1.20损失值与准确率Fig.1.20Lossvalueandaccuracy具体各类的识别准确率如下

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论