基于颜色矩的土豆、玉米、苹果叶片病害异常检测
张梓婷,韩金玉,张东辉,李 晗,李铭源,邓志平,孙晓勇,*
(1.山东农业大学 信息科学与工程学院,山东 泰安 271000; 2.浙江省农业科学院 病毒学与生物技术研究所,浙江 杭州310021)
目前,我国共有667种外来入侵生物,这些外来入侵生物每年给我国造成的经济损失高达数千亿元。其中,以农作物为主要对象的外来入侵生物是引发未知叶片病害的重要途经之一。例如,番茄褐色皱果病毒(,tobrfv)随进口种子从发生国流入国内,会寄生于番茄和辣椒中,并引发严重的叶片病害问题。
目前,关于农作物病害表型组的研究有很多,主要是针对不同病害进行识别与分类,其中,采用深度学习方法的识别、分类准确率较高。但是,这些模型在构建时需要大量的病害数据。众所周知,农作物病害的发病时间、地点特殊,采集时需耗费大量的人力物力。另外,如果遇到未知病害,很可能因缺乏相关数据,导致无法准确识别,从而错过最佳预警时间。为此,本研究将异常检测方法引入到农作物叶片病害识别中,以解决上述问题。
异常检测只需要训练正常数据集,大大减少了所需的训练样本的种类和数目。同时,不管是已知病害还是未知病害,异常检测方法均可实现识别与预警,有助于提高防控效果的精准性。一般地,异常检测任务是用一个仅包含正常样本的训练数据集={,,…,}训练一个正常模型,然后将测试集中不符合正常模型的样本判断为异常。现有的异常检测方法可分为4类:基于统计的异常检测方法,基于距离的异常检测方法,基于聚类的异常检测方法和基于密度的异常检测方法。目前,异常检测多用于网络入侵行为、欺诈行为检测、病症判别、故障诊断等方面,在农作物叶片图像异常检测上,在本研究检索范围内,未见相关报道。
图像分块方法多用于图像识别与检测。2014年,wu等将异物纤维图像进行图像分块处理,用于预先判断哪个图像块包含目标异物图像,然后通过ostu法(大津阈值法)分割图像块,最终将分割图像块连接,获得完整清晰的异物纤维目标图像。2016年,袁渊等采用分块思想提取图像块的纹理特征并与颜色特征进行整合,利用支持向量机进行训练建模,实现了安防视频对树叶遮挡的异常检测。2020年,苗荣慧等在菠菜重叠叶片与杂草分类识别中,提出了基于图像分块和重构的方法,以提升杂草识别的准确率。2021年,王国屹等在针对机场跑道异物的无人机自主检测与识别中,提出了基于背景差分的机场跑道异物分块检测与跟踪算法。
本研究提出一种基于图像块对农作物叶片病害进行异常检测的方法。首先,通过训练正常数据集进行聚类与分块操作;然后,通过提取每块图像rgb或hsv颜色空间下的颜色矩信息,构建异常比对模型;最后,利用测试集和构建模型进行效果检验。结果表明,本文所提出的方法仅需对正常数据集进行训练,就可以精准识别病害叶片,在土豆数据集中的识别正确率可达89%以上,在玉米和苹果数据集中的识别正确率可达95%以上。本研究所提出的方法也可用作分析农田环境下无人机采集并检测叶片异常的算法。
1 材料与方法1.1 试验材料试验所使用的土豆、玉米和苹果叶片数据集,均下载于kaggle网站(https://www.kaggle.com/search?q=plant+disease+in%3adatasets)。因为获取的数据集来自不同文件夹,且由不同人员获取,所以首先调用hashlib模块对这些数据集进行图像去重操作。将去重后的土豆、玉米、苹果数据集的分布情况整理于表1。
表1 数据集分布情况
试验的硬件环境为:intel core cpu i5-6300 cpu@2.30 ghz,12 gb内存,nvidia geforce gtx 960m 图形适配器。软件环境为windows 10 操作系统,开发环境为anaconda3,开发语言为python 3.7,使用 pycharm进行调试。
将试验样本分为训练集和测试集,其中,训练集由正常叶片图像组成,测试集由病害叶片图像与正常叶片图像组成。将正常叶片图像按照8∶2的比例拆分为训练集和测试集。将土豆、玉米、苹果上训练集和测试集样本数量的分配结果整理于表2。其中,异常样本的具体组成如下:在土豆上,早疫病和晚疫病样本各10张;在玉米上,普通锈病、灰斑病、叶枯病样本各50张;在苹果上,黑腐病样本70张,雪松锈病样本55张,黑星病样本86张。
表2 训练集与测试集的样本数量分布
1.2 数据集预处理为了尽可能地提高试验效率,有必要对数据集进行预处理,以提高分析准确率。为此,主要进行以下3种预处理——图像去噪、图像分割和图像截取。
1.2.1 图像去噪
由于相机拍摄出来的图像存在一些噪点,所以需要首先对图像进行去噪处理,从而更好地展现图像特征。图像噪点不仅影响rgb特征值的提取,而且还会影响图像分割准确率。有效的图像去噪可以降低误差。
图像去噪的具体步骤如下:(1)使用opencv读入图像数据;(2)使用5×5的中值滤波器滤除椒盐噪声;(3)将图片数据类型转换为灰度图;(4)对图像进行直方图均衡化处理;(5)在直方图均衡化后进行二值化处理;(6)对二值化图像进行腐蚀,腐蚀掉叶片部分得到背景部分,然后再对背景进行膨胀;(7)将二分图像与腐蚀后的背景图相减,得到有效信息部分与部分噪声;(8)对叶片部分进行膨胀,得到较清晰的图像。
1.2.2 图像分割
共引入2种图像分割方法:一种是grabcut算法,另一种是使用opencv进行颜色分割。针对不同的数据集采取最适合的图像分割算法。
grabcut算法是rother等提出的。具体地,在opencv中,使用函数cv2.grabcut()实现以下过程:(1)在图片中定义含有物体的矩形框,本研究手动设置rect=(9, 9, 240, 240),将矩形外的所有东西都确认为背景。(2)计算机会根据给定的rect参数做初始标记,标记出前景和背景像素。(3)使用高斯混合模型(gaussians mixture model, gmm)[式(1)]对前景和背景建模。
(1)
式(1)中:是rgb三通道向量;π表示第个高斯模型的样本数在总样本中的占比;表示第个高斯模型的概率模型公式,和∑为模型中的2个参数,分别为均值和协方差矩阵。
(4)根据函数中的mask参数,gmm学习和创建新的像素分布,未知像素被标为可能的前景或可能的背景(根据其他硬标记像素的颜色统计和它们之间的关系确定)。(5)根据像素分布创建1个图,图中的节点是像素,另外还有2个节点——源节点和汇节点,将每个前景像素与源节点相连,将每个背景像素与汇节点相连。(6)与源节点和汇节点连接的像素的边的权重由像素是前景或者背景的概率决定,像素之间的权重由边的信息或者像素的相似度决定,如果像素颜色有很大差异,它们之间的边的权重就比较低。(7)用最小割算法(minimum cut)分割图像,即用最小成本函数把图切成2个分开的源点和汇点,其中,成本函数是被切的边的权重之和。切完以后,将所有连到源节点的像素称为前景,将所有连到汇节点的称为背景。(8)重复上述过程,直到分类覆盖。
基于opencv的颜色分割步骤如下:(1)加载样本图像;(2)使用gui滑块获取hsv最小最大值范围;(3)显示原始示例图像;(4)模糊样本图像,并显示在桌面上;(5)将模糊的图像转换为hsv颜色模型;(6)根据使用滑块选择的范围内的值创建蒙版,然后显示生成的蒙版;(7)使用“形态转换”功能清理蒙版,然后显示生成的蒙版;(8)将最后一个遮罩应用到原始图像,使感兴趣的颜色保持不变;(9)显示结果图像。
1.2.3 图像截取
虽然图像分割可以降低背景对检测结果的影响,但仍存在误差;而且,在进行模型比对时,叶片大小不一也会影响试验结果。为此,本试验在图像分割后又进行了图像截取操作,以减少背景,更多地展现叶片信息。
1.3 异常检测算法农作物叶片病害异常检测算法如图1所示。首先,分配训练集与测试集,读入图像并进行预处理操作,具体包括图像去噪与图像分割;然后,提取图像分块后的rgb或者hsv颜色矩作为图像特征输入模型,并通过-means++聚类方法将训练集分为类,每个类别对应一个模型,用于与测试集图像特征进行比对;最终,判断测试图像异常与否。在该模型中,通过改变聚类数与分块数来对比检测准确率,从而实现优化。
1.3.1 颜色矩特征提取
颜色矩最早是由stricker等提出的,其数学基础在于,图像中任何的颜色分布均可以用它的矩来表示。由于颜色分布信息主要集中在低阶矩中,因此仅采用颜色的一阶矩(平均值,mean)、二阶矩(方差,variance)和三阶矩(斜度,skewness)就足以表达图像的颜色特征量。图像的颜色矩一共只需要9个分量(3个颜色分量,每个分量上3个低阶矩),与其他的颜色特征相比非常简洁。
(2)
(3)
(4)
式(2)~(4)中:表示颜色通道,表示图片中的总像素数,,表示第个像素在第个颜色通道上的像素值,(一阶矩)表示第个颜色通道上所有像素的均值,(二阶矩)表示第个颜色通道上所有像素的标准差,(三阶矩)表示第个颜色通道上所有像素的斜度的3次方根。
分别提取图像的rgb与hsv两种颜色通道作为颜色矩特征。
所选图像为rgb图像(也叫全彩图),对应的rgb模型使用3个组件对颜色进行编码:红色(r)、绿色(g)和蓝色(b)。所选图片分辨率大小为256 pixel×256 pixel,图片rgb通道在python(numpy)中的数据构成形状为(256×256×3),3表示3个颜色通道。在rgb颜色空间下,图像颜色矩特征向量可表示为
=[,,,,,,,,]。
(5)
hsv模型根据3个分量定义颜色,即色调(h)、饱和度(s)和值(v)。在均匀的空间中,测得的色差(欧几里得距离)与人类对这种色差的感知成正比。在图像识别领域,通常会将rgb空间转换到hsv空间。以土豆叶片的原始图像为例,转换后,在hsv色彩空间下的图像效果如图2所示。
图1 算法流程fig.1 algorithm flow
在hsv颜色空间下,图像颜色矩特征向量可表示为
=[,,,,,,,,]。
(6)
1.3.2-means++聚类
-means++算法是np-hard-means问题的一种近似算法,是一种避免标准-means算法出现不良聚类的方法。
为了提高模型判别的准确率,根据图像颜色矩特征,在训练集上使用-means++算法进行聚类,将特征相似的聚为一类。
聚为几类,就对应几个参考模型、几个模型特征,在后续进行异常比对时,也就需要进行几次判断。由于模型考虑了正常图片集所属同一块的所有特征,故具有更好的稳健性。
1.3.3 图像分块
由上文对颜色矩特征提取的介绍可知,给定一张图片,就可以提取出该张图片1×9维的特征向量。本研究要处理的图片有如下特点:部分图像内容是固定的(比如背景均为黑色,不发生病害的部分均可视为正常),而部分内容不断变化(如病斑或者病区位置)。为了体现图像的局部特征,并使得以后能够对图像的局部进行灵活处理,特采用图像分块策略将图像分块,然后提取每个图像块的特征。
图2 rgb(a)到hsv(b)颜色空间的转换效果示例fig.2 example of conversion effect from rgb (a) to hsv (b) color space
利用滑动窗的方式对图像进行切分,将256 pixel×256 pixel的图像均分为4块(每块128 pixel×128 pixel)、16块(每块64 pixel×64 pixel)(图3)、64块(每块32 pixel×32 pixel)(图3)。
图3 图像分块示意(4×4)fig.3 demonstration of image block (4×4)
1.3.4 图像块特征均值模型
正常图片经过聚类后,将属于同一类的所有正常图片按照块求取特征平均值,得到模型特征,聚类数对应模型数。对于某测试图片,只要其被任意一个模型测试为正常,就判定该测试图片为正常图片;若其被所有模型判断为异常图片,则判定该测试图片为异常图片。
根据求得的均值模型判断测试图像异常与否时,需要将测试图片的特征与正常图片特征进行比对,计算特征均差:
(7)
式(7)中:为一张图片的分块数,为测试图片第个块的特征,,为第个模型中第个块的特征。对于第个模型,给定阈值,若某测试图片基于式(7)的特征均差小于该阈值,说明该测试图片被第个模型判定为正常图片,反之被判定为异常图片。
1.4 评估指标为了评估不同方法的性能,本研究引入最常用的正确率()和漏警率(mar)来评价:正确率越高,说明模型的预测能力越好;漏警率越低,表示模型预测异常越准确。
(8)
(9)
式(8)、(9)中:表示异常样本被检测为异常,即真正例的数量;表示正常样本被检测为正常,即真负例的数量;表示正常样本被检测为异常,即假正例的数量;表示异常样本被检测为正常,即假负例的数量;表示mar的值。
2 结果与分析2.1 图像处理结果2.1.1 图像分割结果
首先,对所有图像数据集进行去噪。以土豆叶片为例,处理结果如图4所示,可见图片中的噪点经过去噪处理后已消除。
图4 去噪效果示意图fig.4 example of denoising effect
对去噪后的图像进行图像分割操作。结果发现,对不同叶片,应使用不同的图像分割方法。也就是说,对于不同叶片,grabcut和基于opencv的颜色分割法有不同的批量处理结果。对玉米灰斑病、叶枯病,和苹果健康叶片、黑星病,建议使用基于opencv的颜色分割方法;对玉米健康叶片和普通锈病,无需分割;对其余叶片,建议使用grabcut分割。针对不同样本的分割结果示例如图5所示。
图5 图像分割结果示例fig.5 demonstration of image segmentation results
2.1.2 图像截取结果
调节合适的截取范围,处理结果如图6所示。由于玉米健康叶片几乎不存在背景区域,因此不进行截取。
2.2 异常检测试验为了保证数据的随机性,分别选取5种互不相交的测试集进行试验,并将结果进行平均后,确定在3类植物上使用何种颜色矩,最终得出最优模型所对应的参数设置,如训练阈值、聚类数与分块数。
图6 图像截取结果示例fig.6 demonstration of image capture results
2.2.1 分割数据集试验结果
试验发现:对比最高准确率与最低漏警率发现,对于分割后的土豆数据集,使用rgb颜色矩作为图像特征的效果优于hsv颜色矩;对于分割后的玉米和苹果数据集,使用hsv颜色矩作为图像特征的效果要优于rgb颜色矩。试验对比结果如表3~5所示。
在试验条件下,对于土豆叶片来说,当聚类数为2、不分块时,模型的准确率最高(85.2%),漏警率最低(13.0%)(表3);对于玉米叶片来说,当聚类数为3、分块数为4时,模型的准确率最高(92.3%)(表4);对于苹果叶片来说,当聚类数为3、不分块时,模型的准确率最高(76.2%)(表5)。其中玉米和苹果当模型达到最高准确率时,漏警率没达到最低。综上可知,在土豆与玉米上,最高准确率都达到了85%以上,但仍有提升空间;在苹果上,并未实现很好的效果。
表3 在土豆上分割数据集的测试正确率与漏警率
表4 在玉米上分割数据集的测试正确率与漏警率
表5 在苹果上分割数据集的测试正确率与漏警率
2.2.2 截取数据集试验结果
对分割后的数据集进行截取后再进行试验(表6~8),在3种植物上的效果都得到了提升。其中:在土豆上的提升幅度不及其他2种植物,其最高准确率仅提升4百分点,漏警率降低约一半;而在玉米与苹果上,其最高准确率均提升至95%以上,且漏警率降至0。
表6 在土豆上截取数据集的测试正确率与漏警率
表7 在玉米上截取数据集的测试正确率与漏警率
表8 在苹果上截取数据集的测试正确率与漏警率
在土豆、玉米、苹果上,效果最佳的模型所对应的聚类数均为2,因此其对应的阈值也有2个。具体地:在土豆上,其阈值分别为9.23、18.3;在玉米上,其阈值分别为70.22、54.67;在苹果上,其阈值分别为21.46、10.01。
2.2.3
试验发现,对图片进行截取后的效果优于分割后。在玉米上,对应的最优模型为2聚类、4分块;在苹果上,对应的最优模型为2聚类、64分块。与玉米、苹果相比,土豆上的训练样本数量较少,经截取后,其准确率仍有待提升。
每次递减200个剪切后的玉米、苹果训练样本数,保持测试集个数不变,使用最佳模型观察准确率与漏警率的变化(图7)。当正常数据集在1 000张左右时,检测异常叶片的准确率可达92%以上,可以作为其他物种选取正常叶片数目的标准。
图7 玉米(a)、苹果(b)不同训练样本数下准确率与漏警率的变化fig.7 change of accuracy and missing alarm rate under different training sample quantities on maize (a) and apple (b)
2.2.4 与传统机器学习模型的效果对比
引入与本算法相同的颜色矩特征,输入8种传统机器学习模型,开展准确率与漏警率对比(表9)。在土豆上,abod、knn与cblof模型的算法准确率高于本文算法,但是这些算法在玉米与苹果数据集上的准确率都低于本文算法。综合来看,本文算法更优。
表9 不同模型的效果对比
2.2.5 全部异常数据测试
为了验证本文方法在异常数据检测上的有效性,将表2的异常测试集更换为表1中对应作物的全部病害样本再进行测试。结果发现,将2 000张土豆异常数据全部用作测试集后,准确率降到约80%,漏警率上升到约20%;将2 540张玉米异常数据全部用作测试集后,准确率仍约99.8%,漏警率仍为0;将1 526张苹果异常数据全部用作测试集后,准确率约为99%,漏警率仍为0。可以看出,除土豆外,对于玉米和苹果来说,放入全部异常数据后,模型的效果无明显下降,验证了本文算法在异常数据检测上的有效性。
3 结论与展望本研究提出一种新的算法,实现了对于来自公共数据集的3种农作物叶片病害的异常检测。该算法首先通过提取rgb或hsv颜色矩信息对正常数据集进行聚类(聚类数对应模型个数);然后进行图像分块,提取图像或图像块的rgb或hsv颜色矩信息,构建异常检测比对模型,计算测试集图像或分块后的颜色矩特征,并与构建模型进行比对;最后,通过设定的阈值判断测试集异常与否。
本研究选取土豆、苹果、玉米3种农作物作为试验对象,并通过预处理操作,调节聚类数与分块数进行对比,以提高准确率。结果表明,本文方法仅需基于正常数据集的训练即可以精准识别病害叶片,且其在玉米和苹果上的效果要优于传统机器学习方法,准确率高达95%以上,漏警率为0。
本研究所提出的方法适用于公开的叶片数据集,但并未涉及受到实际光照等复杂环境影响的农田叶片数据。下一步,可利用无人机采集农田叶片数据集进行处理与测试,使模型可以更好地应用于农田生产实践。另外,可考虑使用一些传统机器学习与深度学习方法与本文方法进行对比,以改进或选择最适于分析农田环境下由无人机采集的叶片图像的算法。
基于颜色矩的土豆、玉米、苹果叶片病害异常检测
本文2022-11-09 22:40:30发表“农林鱼水论文”栏目。
本文链接:https://www.damishu.cn/article/430114.html