在农业生产中,害虫防治是一项既基础又重要的环节。防治害虫的关键是对害虫种类的识别和定位。因此,我们采用两种目标检测模型结合的深度学习方法,对害虫图像样本进行识别、分类和定位。 通过对现有目标检测模型的了解,选择YOLO v5和SSD两种模型,并且以YOLO v5模型为主、SSD模型为辅,建立相关算法和模型。研究流程主要分为数据分析、数据格式处理、数据划分、数据增强、模型训练5个部分。由于各类害虫数量相对较少且数据分布不均衡,肉眼很难识别,我们在所选择的模型中均采取了相应的数据增强的方式。丰富了检测数据集,让网络的鲁棒性更好。将待检测的图片分别放入训练完成的两个模型中,以YOLO v5模型得出的结果为主,以SSD模型得出的结果为辅,进行模型结合,最后得到每张图中各害虫的种类和位置信息。对图像文件中不同种类的害虫数量进行统计并得出结果。
一、引言
(一)背景
无论是在发展中国家还是发达国家,农作物害虫都给农作物造成了重大损失。识别害虫的种类和位置,从而实现害虫的精细防治,可以减少损失,提高农作物的产量。害虫识别效率和准确度的提高,可以促进现代大规模农业生产对虫害预防和控制工作的推进。
为了对农田病虫害进行有效的预防和控制,需要收集有害生物信息,在此基础上进行虫情分析。由于农田害虫的多样性和信息类型的复杂性,传统的害虫监测方式已经难以满足现代大规模农业生产对虫害防控工作的需要。随着人工智能发展的热潮,使用深度学习的方法,建立害虫样本自动识别分类定位模型成为一条高效的新路径。深度学习的方法在精度和速度方面,相较于传统的害虫监测方式有显著提高。
针对虫情测报灯采集到的图像文件,用于识别为害某农作物的 28 种害虫,如表1所示。
(二)解析流程
先对数据进行划分,通过对比现有的几种较为成熟的目标检测模型,选择以YOLO v5模型为主、以SSD模型为辅进行害虫种类的识别和定位,如图1所示。
二、数据处理
(一)数据分析
共对2213张图像进行识别信息。其中,1637张为无害虫坐标信息图像,576张中有所要识别的害虫及坐标信息。对图片虫子位置详情表csv进行分析。根据该信息,可统计获得已知害虫种类坐标信息的图片中各类害虫出现的次数,如表2所示。
(二)数据格式处理
将虫子编号为0的数据全部删除。由于所给的坐标格式不符合YOLO v5需要的格式,于是通过坐标计算将其进行转化,并进行归一化处理,使其能被YOLO代码识别。将“00001.jpg”形式的文件名统一改成“A0001”的形式。按照对应关系,将虫子编号改成0到27的数字。使用多种代码将经过上述处理后转化成txt文件,此文件中的坐标符合YOLO v5边框表示法。
(三)数据划分
将格式处理后得到的数据按照8∶2∶1的比例划分为训练集、测试集和验证集。注意到个别种类害虫在已知信息的图片中仅出现1次,为避免由此导致的训练所得到的模型精确度过低、训练时间过长,将这些样本同时放入3个数据集中进行模型训练。
(四)数据增强
在YOLO v5中,输入端采用Mosaic方法进行数据增强。大致实现过程如下:先从数据集中每次随机读取4张图片,再分别对4张图片进行翻转(对原始图片进行左右的翻转)、缩放(对原始图片进行大小的缩放)、色域变化(对原始图片的明亮度、饱和度、色调进行改变)等操作,最后进行图片的组合和框的组合。这样一来,明显增强了数据多样性。
三、基于深度学习的目标检测
(一)模型选择
为实现题中所要求的确定害虫位置及种类的目标,我们采用基于深度学习的目标检测领域目前较为成熟的两种模型YOLO v5和SSD。YOLO v5有非常轻量级的模型大小,速度较快,精度较高;SSD具有更快的速度,可以作为辅助,使结果更加准确。
(二)模型理论要点
1.YOLO v5模型。为加快模型训练的速度,我们使用one-stage算法中的YOLO v5模型来进行物体检测。YOLO v5的网络结构分为输入端、主干网络(Backbone)、Neck、Prediction 4个部分,如图2所示。
输入端采用了Mosaic数据增强的方式,随机使用4张图片进行随机裁剪,再随机拼接到一张图上作为训练数据。因此,丰富了检测数据集,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好;Mosaic增强训练时,可以直接计算4张图片的数据,使得Mini-batch大小并不需要很大,一个GPU就可以达到比较好的效果。
主干网络采用Focus结构对输入的图像进行切片操作。另外,YOLO v5算法在主干网络中设计了CSP结构,将梯度的变化从头到尾地集成到特征图中,在减少计算量的同时保证了准确率。
Neck部分采用FPN+PAN结构。FPN自顶向下,将高层的特征信息通过上采样的方式进行传递融合,得到进行预测的特征图,传达强语义特征;PAN自底向上进行下采样,传达强定位特征,从不同的主干层对不同的检测层进行了特征聚合。
Prediction部分采用CIOU_Loss作为Bounding Box的损失函数。
具体训练步骤如下:将代码训练集、验证集所在路径进行修改,nc种类改成所需要识别的害虫种类数28,设置训练的轮数为200,将batch_size设置为4。
2.SSD模型。SSD完全去除了候选框的生成和随后的特征再筛选的过程,把所有的计算封装在一个网络里面,使速度得到提高。SSD的核心是,该模型在特征图上采用了一个小卷积滤波器(small convolutional filter)来预测一系列default bounding boxes的类别分数、边框位置偏移量。对于不同的纵横比(aspect ratio) ,SSD检测使用不同的预测器(滤波器)来进行处理,再将这些滤波器应用在后面网络阶段的特征图(feature maps) 上,让检测器能够用来检测不同比例的图片,如图3所示。
(三)0模型训练
由于数据量较小,我们将总数据集按训练集∶测试集∶验证集=8∶2∶1进行随机划分,生成三个数据集,分别放入两个模型进行训练。
1.YOLO v5模型训练。YOLO v5模型训练展示如图4所示,本模型的均值平均密度(mAP)为0.304。
2.SSD模型训练。通过验证参数集进行模型验证。训练网络所用的参数,如表3所示。本模型的均值平均密度(mAP)为0.1,loss指标为30~40。
(四)模型结合
对YOLO v5和SSD所得结果进行处理。对于每张图片,若两种模型检测到的害虫属于同一种类且坐标相似,保留YOLO v5的检测结果;若SSD中的检测到YOLO v5中未检测到的害虫,则添加至最终结果中;若YOLO v5的检测结果未被SSD检测出,则仍保留YOLO v5的该结果。
四、总结与评价
(一)总结
图片中害虫分类和定位的关键是使用已有数据集对目标检测模型进行训练。由于各类害虫数量相对较少且数据分布不均衡,肉眼很难识别,我们在所选择的模型中均采取了相应的数据增强的方式。
在目标检测模型的选取中,由于赛题图像较难分辨,传统的目标检测模型难以提取图像特征。因此,我们选择了基于深度学习的目标检测领域目前较为成熟的两种模型来进行训练。以YOLO v5模型为主、以SSD模型为辅,综合两种模型的结果,最终分类效果较好。
经过分析,检测效果欠佳可能是所给样本数据集的标注存在问题导致,也可能是人工分拣导致害虫标注有遗漏,也可能是图片中包含的28种害虫以外的害虫对模型造成了干扰。
我们所使用的目标检测的模型为YOLO v5和SSD,都是比较成熟且速度较快的网络架构。
(二)模型评价
1.优点。本文通过数据分析,对比各个模型选择了流行的、高效的两种目标检测模型。结合了两个目标检测模型的结果,在一定程度上提高了识别结果的准确率。采用了端到端的目标检测模型,减少了工程的复杂度。
2.缺点。对大量模型进行训练并测试,需要耗费大量的算力资源。其中,YOLO v5中轮数的选取存在偶然性,可能会出现训练不够或过拟合现象。SSD则精度相对不高,作为辅助效果一般。
作者简介:张羽杉(2003—),女,安徽黄山人,本科在读,主要从事应用数学统计研究。