刘 豹,李 翌,李 峰,鲍 煦
(1.江苏大学 计算机科学与通信工程学院,江苏 镇江 212001;2.安利(中国)植物研发中心有限公司,江苏 无锡 214000)
农产品的产量和质量一直以来备受人们关注[1-2]。温室环境稳定且湿润,易滋生各种害虫,已经成为影响温室农作物产量和质量的重要因素[3-5]。传统温室害虫防治措施主要为使用大量化学药物进行消杀,对环境造成危害的同时也对人体健康产生了威胁[6]。随着计算机视觉和模式识别技术的发展,害虫的科学防治成为可能。目前,图像处理技术与机器学习算法相结合成为害虫识别领域新的发展方向,并逐渐形成图像预处理、图像分割、特征提取以及分类器构建等标准处理流程,现有研究已取得了较为丰硕的成果[7-12]。然而,标准处理流程较为复杂,例如需要对粘虫板图像上数量众多的害虫进行精准的分割提取、选择区分度最高的分类特征等。温室环境中采集的粘虫板图像包含大量噪声,对目标分割、特征选取以及最终识别的准确率有较大影响,导致许多方法害虫识别率不稳定,难以应用于实际生产环境中。线性支持向量机作为机器学习领域应用广泛的分类算法[13-16],是针对小样本训练数据的最佳实践,为温室害虫识别提供了新的研究方向。
温室复杂环境下拍摄的粘虫板图像中害虫数量多且互相之间有粘连,因此本文基于图像分割算法与线性支持向量机构建一个温室害虫智能识别系统。该系统首先对粘虫板图像灰度图分别进行Prewitt 和Canny 边缘检测[17-18],将得到的二值图融合后再进行全局阀值分割,实现目标区域的精准分割;然后对分割区域进行特征提取,选取9 种颜色特征和3 种形态特征构建训练数据集[19],完成害虫分类器的训练;最后以温室实地采集的粘虫板图像作为系统输入,通过图像分割方法获取害虫图像,根据害虫图像特点选取分类特征,训练适用于温室害虫识别的分类器模型,进行飞虱和蓟马的识别研究,以期为农民、植保人员提供一种简洁、易用、准确的温室害虫种类识别、数量统计工具,并为温室害虫防治提供可靠的数据支撑。
害虫识别系统分为图像处理、害虫识别和文件管理3个模块,具体如图1 所示。其中,图像处理模块主要完成图像采集的前期处理工作,包括输入图像的灰度图获取、灰度图像增强、粘虫板上害虫目标区的分割提取等;害虫识别模块的主要功能包括训练数据集构建、训练模型实现害虫识别并对模型进行测试等;文件管理模块的主要功能包括粘虫板图像文件的实时上传与下载、害虫数量统计、数据库交互以及系统的日常操作等,有助于提高系统的可用性。
Fig.1 Function module of pest identification system图1 害虫识别系统功能模块
1.2.1 目标分割方法设计
不同害虫之间或多或少会存在一定的特征差异,基于机器视觉实现飞虱和蓟马识别的关键在于提取出这两种害虫的分类特征。在温室环境中采集的粘虫板图像存在大量噪声,害虫区域多、面积小且目标区域之间存在粘连。如果使用传统的单一目标分割算法[20],难以将粘虫板图像上所有目标区域精准分割出来,导致后期识别准确率低。因此,本文系统分别对输入粘虫板图像进行Prewitt 边缘检测和Canny 边缘检测,将得到的两类二值图进行融合,然后使用全局阀值分割从粘虫板图像中精准提取出全部目标区域。
在温室环境下采集的害虫粘虫板图像普遍存在光照不均匀、背景复杂等问题,因此图像分割方法必须克服复杂的背景干扰,准确分割出害虫区域。为此,本文对传统边缘检测方法进行改进,结合全局阀值分割提出一套新的目标分割流程。该系统图像分割的目的是为分类器的训练提供特征数据,分割结果对后期识别准确率有很大影响,因此首先要确保目标分割的准确性,其次需要在粘虫板图像中快速分割所有害虫区域。如果对采集的粘虫板原始高清图像直接进行分割会大大增加分割算法的计算量,降低算法效率。经过测试发现,将像素适当降低不影响目标分割的准确率,因此系统将输入图像像素统一变换为1 500×2 000,大大提升了单张图像的处理速度。图像的害虫区域分割仅用于构建分类器训练、识别数据,系统后期可直接调用训练好的识别模型。
1.2.2 目标分割方法实现
本文提出的害虫目标区域分割算法具体流程如图2所示。
Fig.2 Process of target segmentation algorithm for slime insect board image图2 粘虫板图像目标分割算法流程
现场采集的原始图像为RGB 颜色空间图像,将RGB图像转换为LAB 颜色空间,得到R分量和L分量灰度图。采用灰度直方图均衡化分别对R分量和L分量灰度图进行图像增强操作,得到对比度更高的灰度图像。计算公式为:
式中:rk为原图像灰度级;nk为原图像灰度级所占像素的个数;原图的像素为M*N,SK为增强后的图像灰度级。
对增强后的L分量灰度图和R分量灰度图分别使用Prewitt 边缘检测和Canny 边缘检测完成初步害虫图像分割。考虑到粘虫板害虫区域面积小且数量多,将传统的边缘检测算子扩充为4 个,以增加边缘检测算法的灵敏度,将更多目标区域边缘点检测出来,提升图像分割的准确率。具体计算公式为:
对两次边缘检测得到的二值图进行融合操作,避免单次目标分割造成的目标区域漏检,增加了系统面对不同图像输入时的容错率,至此得到初步分割结果。对初步分割结果二值图进行腐蚀、开运算等形态学处理,优化分割结果。对优化后的二值图进行全局阀值分割,得到最终害虫图像分割结果。
1.3.1 数据来源
本文使用的粘虫板图像数据集采集自无锡安利植物技术研发中心的一号温室大棚(见图3),大棚中共9 排农作物,每排农作物放置5 张粘虫板,放置时间为1 个月,一次可采集90 张粘虫板图像。项目进行过程中共前往采集6次,得到原始高清粘虫板图像共540张。
Fig.3 Greenhouse图3 温室大棚
1.3.2 训练数据集构建
常用图像分类特征包括颜色特征、形态特征、空间特征以及纹理特征[21],通常选取区分度最高的特征组合构建训练数据集。研究发现,在飞虱、蓟马的识别过程中,对分类器贡献率最高的分类特征依次为颜色特征、形态特征和纹理特征,这也符合直观感受。观察图像分割得到的害虫图像,飞虱成虫一般呈现白色,且体型较小,而蓟马成虫一般呈现黑色且虫体较长、体型较大。因此,本文选取9 种颜色特征和3 种形态特征构建训练数据集,完成分类器的训练。
颜色特征选取的为害虫图像RGB 颜色空间、HSV 颜色空间以及LAB 颜色空间各分量灰度图的一阶矩(共9 个特征参数)。计算方法为:
式中:ρ为所截取的害虫区域像素总数;ρi为i点处像素的灰度值。
通过观察飞虱和蓟马成虫的形态区别,选取目标区域面积、周长和复杂程度3 种形态特征。复杂程度的计算公式为C=P*P/4πA,其中P为目标区域的周长,A 为目标区域的面积。至此,系统完成了分类特征提取与训练数据构建任务。
1.3.3 分类器模型构建
常见分类器包括支持向量机、决策树以及贝叶斯分类器。线性支持向量机是使用最为广泛的分类器,其针对小样本训练数据集有较好的处理能力,且使用相对简单。前期实验结果表明,线性支持向量机分类器对本文训练数据集的识别效果优于上述其他分类器。
线性支持向量机实现二分类的关键在于在特征空间中寻找最优分类超平面,其数学表达式见式(5)。最优分类超平面要满足距离平面最近的特征数据到分类平面的距离最远这一限制条件,根据该条件构建二次凸优化问题的数学模型,目标函数见式(6),限制条件见式(7)。
式中:w、b为待求权重,x为训练特征数据。
本文选取6 张粘虫板图像提取特征数据进行人工标记用于分类器的训练与测试,标记步骤为:
您当前已标记32只昆虫,请标记227号昆虫:0
您当前已标记33只昆虫,请标记323号昆虫:*
标记错误(仅支持0-9),请重新标记!
您当前已标记33只昆虫,请标记323号昆虫:1
您当前已标记34只昆虫,请标记332号昆虫:0
您当前已标记35只昆虫,请标记153号昆虫:0
您当前已标记36只昆虫,请标记82号昆虫:q
昆虫标签保存成功==>1-1-1-A.txt
随机抽取昆虫特征保存成功==>1-1-1-A.txt
其中3 张粘虫板图像作为训练数据集,另外3 张图像作为测试数据集。训练数据集中共标记害虫1 211 只,其中飞虱587 只,蓟马624 只,两类害虫数量大致相当,保证了训练数据的平衡性;测试数据集中共标记害虫1 463 只,其中飞虱768只,蓟马695只。
采用梯度下降法进行分类器训练,训练好的分类模型在训练数据集和测试数据集上均有较好表现,准确率均达到96%以上,系统输出结果为:
虫种识别模型:Model4April.pkl写入成功!
数据缩放器:Model4April_scaler.pkl写入成功!
训练集精度:0.964387
测试集精度:0.961702
后期系统可直接调用训练好的识别模型完成识别任务,不需要额外的人机交互。
本文系统中的温室害虫图像分割算法使用PyCharm编程实现;基于线性支持向量机的害虫识别模型是在Sklearn 机器学习库的基础上使用PyCharm 编程实现;害虫智能识别系统使用PyCharm 与Python 编程实现。
将所有输入图像大小统一调整为高1 500 像素,长2 000 像素。导入图像后,粘虫板原始图像存放在相应的文件夹内,系统依次读取并根据图2 流程进行图像处理,根据式(1)对导入图像进行灰度图增强,获得增强后的L分量灰度图通过式(2)进行边缘检测完成初步目标分割,R分量灰度图使用Canny 边缘检测完成初步目标分割。系统对两类边缘检测二值图进行融合操作,并按照设定阀值对融合图像进行全局阀值分割,最终分割结果依次保存在相关文件夹内。
使用本文算法对采集的粘虫板图像进行分割实验,结果见图4。可以看出,该算法能有效区分目标区域与粘虫板背景,而且准确提取出了蓟马区域和飞虱区域。
Fig.4 Results of pest region segmentation图4 害虫区域分割结果
为进一步验证系统目标分割算法的有效性,选取K 均值聚类分割算法[22]和大津分割算法[23]进行比较实验,其中L分量灰度图使用K 均值聚类分割,R分量灰度图使用大津分割算法,分割结果如图5 所示。可以看出,K 均值聚类算法和大津分割算法面对复杂环境下拍摄的粘虫板图像时均无法准确、完整地分割出所有害虫区域,图像中复杂的背景噪声降低了两种算法分割结果的准确性。
Fig.5 Comparison of different segmentation methods图5 不同分割方法比较
Fig.6 Pest identification and statistics module图 6 害虫识别统计模块
为了量化比较本文目标分割算法与以上两种比较算法的性能,选取目标提取准确率作为评价指标。计算公式为:
式中:EA为目标提取准确率,Ncorrect为正确提取害虫的数量,N为粘虫板上害虫的实际数量。
计算结果表明,K 均值聚类、大津分割算法、本文算法的目标提取准确率分别为83.2%、67.6%和96.3%,此结果为4 张粘虫板图像目标区域提取准确率的平均值。分割结果表明,本文算法可对复杂环境下拍摄的粘虫板图像实现精准目标分割,为后续特征提取、模型训练提供准确数据源。
图6 为害虫识别统计模块,该模块可实现一键自动化图片导入、图像增强、目标分割、模型识别以及数据的前端展示。数据展示面板显示了输入系统的所有粘虫板图像中每一类害虫的数量。
构建训练数据集后,系统采用梯度下降法对害虫分类器进行训练。准确率和精准度是评价分类器训练效果的重要指标,其中准确率为所有预测正确的样本占总样本的比例,精准度为少数类的预测准确率。
本文系统识别的害虫为飞虱和蓟马,不存在少数类,因此采用准确率作为评价指标。经统计,该系统分类器训练集和测试集的准确率分别为96.4%和96.1%,训练结果比较理想。
模型训练完成后,采用测试数据集进行测试。为直观展示害虫分类器的识别效果,本文采用混淆矩阵的评价方式。由图7 可知,害虫分类器正确识别了733 个飞虱样本,673 个蓟马样本。其中35 个飞虱样本被错误识别为蓟马,占全部测试数据集1 463 个样本的2%;22 个蓟马样本被识别为飞虱,占全部测试样本的1.5%。经计算,该系统害虫识别分类器的准确率为96.1%,其中飞虱的识别准确率为95.4%,蓟马的识别准确率为96.8%。从测试结果来看,该系统可准确区分粘虫板上的飞虱和蓟马,准确率符合要求。
Fig.7 Confusion matrix图7 混淆矩阵
针对温室采集的粘虫板图像中含有灯光反射、不均匀光照等复杂噪声的问题,本文提出一套新的目标分割流程,实现了图像目标区域的精准分割;同时基于线性支持向量机,以害虫图像作为输入,实现了飞虱和蓟马两种害虫的准确识别。由于受训练数据的限制,本文分类识别的害虫只有飞虱和蓟马,导致应用受到很大限制。在后续研究中可以构建其他常见害虫的特征数据进行模型训练,以进一步提升系统的实用价值。