基于YOLOv5s神经网络的农林业常见虫害检测的应用研究
2023-04-06李润平苏成悦冯祖勇
李润平 苏成悦 冯祖勇
关键词:虫害检测;图像处理;深度学习;YOLO
0 引言
我国森林和农作物的病害虫种类较多,如果不积极应对虫害问题,不采取遏制隐含虫害的措施,可能导致大面积的虫害暴发,从而成为制约林业可持续发展和农作物大量减产的重要因素之一。监测虫害的规模和数量,及时发现隐含的大面积虫害并采取及时的抑制手段,避免因大面积虫害导致的重大经济损失,具有非常重要的经济价值和现实意义[1]。
监测虫害规模的基础是检测虫害和统计虫害的数量,最早的方法是凭借治理虫害的专家的经验,传统检测法,如直观检查法、取样筛选法和探管诱捕法[2]等,这种方法不仅时效低,同时会消耗大量人力物力,导致出现治理虫害不及时的情况,该方法难以推广。近几十年来,随着计算机技术的发展,图像识别技术逐渐在各个邻域代替人工识别和统计的工作,深度学习目标检测在农林作物的虫害检测已经有了一定的应用,这些应用大都是特定的农作物的几类虫害检测,如桃树虫害[3]、田间黄板虫害[4]等虫害检测,但对多类常见害虫的幼虫和成虫同时作为目标检测的较少。本研究收集了常见的多类害虫的成虫和幼虫两类数据集作为深度学习模型试验的数据集。
1 YOLO 网络模型
1.1 YOLO 神经网络
YOLO神经网络模型在2016年由Joseph Redmon 等人在论文中正式被提出[5],是一个端到端的one- stage模型,该模型将对象的目标检测作为一个回归问题,直接从图像的像素到边界框坐标和类概率。YOLO网络模型具有检测速度快、开源性、模型小等优点。YOLO系列的开源代码现在更新到了YOLOv5版本,YOLOv5模型根据模型的深度和宽度递减依次分为YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x四种参数量不同的模型,基于应用的场景和目的,综合对比实时性和精确度,本文选择YOLOv5s网络模型作为多类虫害检测的模型。
1.2 YOLOv5s 算法
Y个OL部Ov分5s组网成络。由其i网np络ut、结b构ack[6-b8]o如ne示、n意ec图k和1所p示red。i
1.2.1 Input
Input(输入端)由Mosaic数据增强、自适应锚框计算和自适应图片缩放三部分组成。
Mosaic数据增强对数据集进行随机缩放、裁剪、排布与组合的处理,该处理方法可以使数据集变得复杂和多样,训练得到的模型,比直接使用数据集训练有更强的鲁棒性。
自适应锚框计算是在数据集中,每个网格单元初始化设定锚定框基础上,输出预测框、计算预测框和已标注真实框的差距,不断进行反向更新与重复计算,迭代网络模型中的参数。
自适应图片缩放是将数据集中不同尺寸大小的原始图片,经过缩放、自适应填充黑边等处理统一成标准尺寸,在预测阶段可以减少计算量,提高网络的检测速度。
1.2.2 Backbone
Backbone(骨干网络)由Focus 结构和CSP 结构组成。
Focus结构是对输入图片进行切片操作,采集不相邻的切片,进行重新组合,减小图像尺寸,增加图像的通道数,再与32个卷积核进行卷积操作。以YO? cLuOsv结5s构为处例理,输后入,得图到像尺尺寸寸为为614008×06×4100×8102×的3,特经征过图Fo,?卷积之后得到640×640×32的特征图。Focus结构如图2所示。
FPN是自顶向下的金字塔结构,通过上采样得到深层的语义特征,并将其与浅层的特征融合,得到输出预测的特征图,可以增强在多尺度的语义表达。
PAN 是自底向上的金字塔结构,是对FPN 的补充,通过下采样得到浅层的定位信息,并将其传导到深层,更加精确在多个尺度上的定位能力。
1.2.4 Head
Head(输出端)包含了损失函数和非极大值抑制(NMS) 。
损失函数包含定位、目标置信度和分类损失函数,YOLOv5s与之前YOLO系列的不同在于GIoU定位损失函数,如公式(1)
其中s1 为真实框与预测框的交集面积值,s 为真实框和预测框的并集面积值,这可以限制GIoU的取值范围在-1~1之间,当真实框和预测框没有交集时,GIoU取值为负,同时解决了IOU为0的情况。
非极大值抑制作用在YOLOv5网络模型的预测阶段,非极大值抑制可以理解为局部最大搜索,局部代表一个领域,邻域有维数和大小。在目标检测任务中,图像经滑动窗口提取特征,分类器识别,每个窗口会得到一个分数,但很多窗口存在交叉或者包含关系,这时就需要用到NMS来选取邻域中分数最高的窗口,从而抑制分数低的窗口。其原理是在Bounding Box的B列表和对应的置信度S中,选择有最大score 的预测框M,将M从B列表移除,并将B中剩余检测框中与M的IoU大于阈值Nt的预测框从B中移除,重复这个过程,直到B为空,从而去除多余的预测框。
2 实验
2.1 实验环境的搭建
在MobaXterm 软件中,通过SSH连接Linux服务器,在命令行窗口,通过命令“conda create -n yolo py? thon==3.8”创建一个基于Python=3.8 的环境名为YOLO的虚拟环境;通过命令“conda activate yolo”進入YOLO虚拟环境;通过命令“cd YOLOv5-master”进入YmOenLtOs.vtx5t”网安络装模YO型LO;v通5模过型命运令“行p的ip依in赖sta库ll文-r件re,q其uir运e?行环境配置流程如图5所示。
2.2 建立数据集
本实验使用YOLOv5s网络模型,由于是对多类虫害的检测,包含各类害虫的成虫和幼虫的检测,所以使用Butterfly和Caterpillar数据集分别作为虫害的成虫和幼虫标签名,可以从两类检测目标初步判断大范围的林业和农业的虫害情况。笔者使用爬虫技术从网上提取了710张Butterfly图片和690张Caterpillar图片。
在Linux服务器的命令行输入命令“pip install labe? limg”,安装labelimg标注工具,再输入命令“labelimg”,即可使用该标注工具。使用labelimg打开标注数据集所在的文件夹,用矩形框框住Butterfly和Caterpillar目标,分别选择对应的标签类别信息,保存对应图像的标签格式为VOC数据集格式,数据集在YOLOv5网络中训练时,使用脚本将VOC格式标签数据集转换为YOLO格式标签数据集,再通过脚本自动划分训练集和测试集。其中,YOLO格式存储了标注框的标签、中心点和长宽信息,标注数据集示例如图6所示。
2.3 实验结果及分析
本实验使用YOLOv5s模型对自制虫害数据集进行训练,数据集总体训练迭代300 轮、批量样本数batch_size=32、学习率设置为0.003。网络模型训练过程的参数变化如图7所示,一开始训练时,损失函数的收敛速度较快,损失函数的总体趋势收敛速度趋于平缓,随着迭代次数的增加,模型的损失函数、精确度和召回率变化总体趋势是一致收敛的,最终模型收敛会保存最后一个权重文件和一个最优权重文件。
图7中的box_loss的数值越接近0,目标框与真实框越接近,目标框越准确;obj_loss的数值越接近0,目标检测框的概率值越大;cls_loss的数值越接近0,目标检测的分类信息越准确;平均准确度和召回率的标价指标如公式(2) 、公式(3) 所示。
上述公式中的TP 表示正样本预测为正样本的个数,FP 表示负样本预测为正样本的个数,FN 表示正样本预测为负样本的个数。mAP_0.5和mAP_0.5:0.9中的m 表示平均,AP 使用precision和recall数值作为两轴作图后围成的面积,该数值越接近1,目标检测准确度越高。从图7中数据可知平均的precision和recall 达到了80%,多类害虫的成虫与幼虫的特征有较多的差异性,在验证模型阶段的损失函数相比于训练阶段的损失函数,模型趋于收敛的部分,前者的收敛震荡范围会大于后者。
将训练好的最优权重文件导入模型中,输入测试图片进行查看,平均每张图像预测的速度为0.014s,这种特征明显的类别目标检测效果置信度能达到80%,识别效果如图8所示,训练的模型速度和准确性都很不错。
3 结论
本次实验,对农林业中多类虫害有较好的检测效果,在固定的无人监测站检测虫害规模中,可以替代大部分人工工作,能够节省人力物力;同时,可以从根源上限制虫害的规模,减少农药的使用。但是對于固定无人监测站会有较大的基础成本和地域范围限制,导致监测面积缩小,如果使用无人机对农林业区域的虫害数量进行监测,不但节省成本,更能方便灵活且真实地反映区域虫害情况。未来的研究方向需要解决复杂背景下小个体害虫的检测,同时保证检测的准确性,将此应用于无人机检测虫害中,可以降低更多人工成本。