基于改进YOLOv4 的储粮害虫检测算法*

2023-09-29 05:51宋雪桦蒋思玮
计算机与数字工程 2023年6期
关键词:储粮先验害虫

孙 妍 宋雪桦 陈 静 蒋思玮

(江苏大学计算机科学与通信工程学院 镇江 212013)

1 引言

民以食为天,在粮食存储过程中,常因虫害造成严重的损失[1],我国储粮中农户的储粮损失为6%~9%,国家粮库的粮食损失为0.2%[2]。粮食是食品加工的重要原料,储粮害虫也造成了巨大的经济损失。为了防止储粮害虫,粮库每年都会对储粮进行多次以磷化氢为主的化学药剂熏蒸[3],但是过多的熏蒸会不仅会污染环境,还会导致害虫的抗药性增加[4],因此对储粮害虫进行精准检测非常重要。早期,工作人员主要采用取样筛选的检查方法[5]。该方法是通过采样装置获取粮仓不同位置的粮食,然后由人工对样本中的害虫进行定性和定量。这种方法具有较高的识别准确性且不受环境影响,但是费时费力、效率低、时效性差。随后,基于声信号的储粮害虫检测技术[6]出现,该方法通过采集害虫成虫活动时发出的声信号,将其转化为电信号,分析得出储粮害虫行为的脉冲信号。由于环境噪声的影响,该方法存在一定的技术难点,即区分多重储粮害虫声信号。随着光学技术的发展,出现基于光学原理的储粮害虫检测技术,主流技术分别是基于软X 射线检测法[7]和基于近红外光谱检测法[8]。前者利用X射线成像技术,对比害虫产生前后储粮密度成像的变化。后者利用近红外谱,分析害虫产生前后粮食内的成分变化。基于光学原理的储粮害虫检测技术可以提高检测的效率和实时性,但是由于光学设备仪器成本较高,且部署困难,不利于该技术的应用推广。

近年来,基于深度学习的目标检测算法取得了很大的突破,主要分为两大类。一是基于区域推荐的目标检测算法。首先利用区域目标生成候选目标,然后利用卷积神经网络进行处理,该类算法也称双阶段目标检测算法。代表算法有RCNN[9]、Fast RCNN[10]等。另一种是基于回归方法的目标检测算法,将检测问题视为回归问题,直接预测目标的类别和位置,也称单阶段目标检测算法,是一种端到端的目标检测算法,因此具有更快的检测速度。代表算法有SSD[11]、YOLO系列算法[12~15]等。

为了提高目标检测算法对储粮害虫目标检测的精度和速度,本文以端到端的目标检测算法YOLOv4 为基础,与YOLOv3 相比,YOLOv4 对小目标以及有遮挡和重叠的物体有更好的检测性能。由于储粮害虫检测的主要难点是害虫的目标较小,且存在重叠和遮挡的现象,YOLOv4 比YOLOv3 更适合作为储粮害虫的检测算法。本文提出了一种改进YOLOv4 的储粮害虫检测算法。首先引入K-means 聚类算法,对害虫图像聚类分析,选取更合适的先验框,以提高检测的精度和速度。同时对YOLOv4 的主干网络进行改进,在三个不同尺度大小的检测头前,加入空间金字塔池化(Spatial Pyramid Pooling,SPP[16])结构。最后将储粮害虫作为实验对象,并与其他算法进行比较,结果表明,改进后的YOLOv4 算法,在储粮害虫检测中有较好的检测精度和速度。

2 YOLOv4算法模型

用于储粮害虫检测的YOLOv4 算法是一种基于深度学习的回归算法,在降低目标检测训练硬件成本的同时,提高了检测的精度和速度。YOLOv4模型结构由CSPDarknet53、路径聚合网络(Path Aggregation Network,PANet[17])和三个YOLO检测头组成,如图1 所示。作为YOLOv4 的主干网络,CSPDarknet53 网络由Darknet53 和CSPNet[18]构成,通过5 个CSP Residual Block 模块提取输入害虫图像的深层特征,改善了梯度消失的问题。该网络包含72 个卷积层,卷积大小分别为1×1 和3×3,每个卷积层连接一个批归一化层(Batch Normalization,BN)和一个Mish激活函数。

图1 YOLOv4模型结构

此外,YOLOv4 中其余的激活函数都采用需要较少计算量的Leaky relu激活函数。

Mish函数为

Leaky relu函数为

其中α是(0,1)区间内的固定参数。PANet 采用自顶向下和自底向上的方法聚集储粮害虫的特征,结合低层和高层的特征语义信息和目标位置信息,三个YOLO 检测头通过对多尺度融合特征图进行独立检测,有效提高了对不同大小目标的检测效果。

YOLOv4 算法中使用的损失函数由三个部分组成:置信度损失函数Lconf、分类损失函数Lcla、定位偏移损失函数Lloc,如式(3)所示,其中λ为平衡系数。

在式(4)中Obji表示预测框i中是否由对象,结果为0 或1。pi表示预测框中存在一个真实物体的概率。式(5)中,Oij和pij分别表示预测框i中是否存在对象j,以及存在的概率。YOLOv4 采用的CIOU[19]算法计算定位偏移损失,如式(6)所示,计算长宽比αν以及预测框A和真实框B中心点的欧几里得距离(Actr,Bctr)。

3 基于YOLOv4的储粮害虫检测

3.1 先验框聚类算法

本文的研究对象是储粮害虫,通过聚类算法找到合适的先验框,有助于提升储粮害虫检测的精度。K-means 算法是解决聚类问题的无监督学习算法之一,该算法遵循的是一种简单且容易的方式,通过预先固定的一定数量的群集(假设K个群集)来对给定数据集进行分类。其主要思想是定义K个聚类中心,每个集群一个聚类中心,根据每个对象到中心的距离不同聚类,然后分配到最近的群集中。然后重新计算每个群集的平均值,直到聚类中心不在发生改变,该算法的最终目标是最小化一个目标函数。通常K-means 算法的距离度量是用的是欧几里得距离,其定义如式(7)所示:

其中xi和yi是d维欧几里得空间中的两个点。目标函数则使用误差平方和函数,其定义如式(8)所示:

其中,J是所有对象数据集的误差平方和,(xi(j)-cj)2是对象点xi(j)和聚类中心cj之间的距离度量。

在YOLOv4 算法中,针对3 种不同尺度的特征图输出训练与检测,借鉴了9 个先验框,以便获取不同尺度大小的目标信息,先验框的大小分别为(12,16)、(19,36)、(40,28)、(36,75)、(76,55)、(72,146)、(142,110),(192,243)、(459,401)。针对本文的储粮害虫数据集,YOLOv4 的先验框都不是适用于训练与检测储粮害虫目标,因此针对本文的数据集进行聚类分析,得到合适大小的先验框。K-means算法输入的具体步骤:

输入:先验框数m和一个包含n个对象的数据集

输出:聚类得到的m个适用于害虫数据集的先验框

步骤:

1)从n个对象中随机选择m个对象为初始聚类中心;

2)重复3)至4),直到每个对象不再改变;

3)根据对象与聚类中心的距离,将对象分配到相似的聚类;

4)为每个聚类重新计算聚类中心。

K-means聚类流程如图2所示。

图2 K-means算法流程图

针对本文的害虫数据集,选取m=9,进行K-means 聚类后,得到的9 个先验框大小为(16,21)、(20,24)、(21,14)、(23,18)、(26,38)、(36,27)、(40,49)、(47,82)、(60,53)。

表1 展示了在储粮害虫数据集上,先验框聚类前后对检测平均精度均值(mean Average Precision,mAP)的结果对比。从表1 可以看出,重新聚类后的先验框在储粮害虫检测上有明显的精度提升,mAP比原YOLOv4提高了1.9%。

表1 不同的先验框检测结果对比

3.2 基于SPP结构的YOLOv4算法

在卷积神经网络中,卷积层接受任意大小图像的输入,即卷积后的输出大小也是可变的,但是全连接层需要固定大小的输入,一般使用扭曲或者裁剪满足这一需求。然而,扭曲和裁剪后的区域可能不包含所需的对象。卷积后需要考虑如何有效地利用卷积激活的空间信息,传统的聚合方法,如平均池化、最大池化不能充分利用卷积激活的空间信息。SPP 模块解决了这一些问题,SPP 可以接受任意大小的输入,通过使用多层空间区域划分特征图,并在子区域内池化局部特征,从而产生固定大小的输出,保证了检测对象的存在,并满足了全连接层的输入需求。SPP 对卷积后特征进行聚合,获得更具有代表性、空间信息丰富的纹理特征。在针对YOLOv4 有三个不同大小尺度的输出,本文网络选用SPP模块对卷积后的特征图进行池化操作,使全局上下文特征能够与多尺度特征保持一致。对于大小为m×m的特征图和具有l级n×n大小的金字塔,l级的输出串联是全连接层的输入。例如,如果一个3级金字塔池(1×1,2×2,3×3),对于给定的任何特征图的输入,全连接层的输入大小固定为(max pooling 1×1,max pooling 2×2 ,max pooling 3×3),如图3 所示。本文的SPP 模块,采用1×1,5×5,9×9,13×13 最大池化四种量表。

图3 SPP

原YOLOv4 的54 层、85 层、107 层的输出都是作为多尺度检测模块的输入,在三个不同尺度的输入前加入SPP 模块,增加视觉感受野,从而提高网络的特征提取能力,得到更多的目标信息,进而提高储粮害虫目标的检测精度,如图4所示。

图4 基于改进YOLOv4的算法模型

4 实验与结果分析

4.1 数据集和实验环境

本文使用的数据来源于拍摄人工饲养的储粮害虫制作的数据集,主要研究对象为储粮中高爆发的五类害虫,分别是锈赤扁谷盗(Cryptolestes ferrugineus,Cf)、锯谷盗(Oryzaephilus surinamensis,Os)、谷蠹(Rhizopertha dominica,Rd)、米象(Sitophilus oryzae,So)和赤拟谷盗(Tribolium castaneum,Tc)[20]。拍摄的害虫图像,经筛选标记后,共选出1425 张害虫图片,共分为两个部分,其中1324 张图片作为训练集,91 张图片作为测试集。在训练过程中按9∶1的比例划分训练集与验证集进行训练交叉验证。

硬件配置:CPU 型号是Intel(R)Core(TM)i7-9700K,频率为3.6Hz,内存为16GB;GPU 型号是NVDIA GeForce RTX 2070。软件环境:tensorflow-gpu1.13.2,CUDA10.0,CUDNN7.4.1.5。

4.2 评价指标

储粮害虫目标检测算法,采用平均精度(Average Precision,AP)、平均精度均值(mean Average Precision,mAP)和检测速度(Frames Per Second,FPS)作为算法模型的评价指标。

mAP首先计算每个类别的AP,AP是指该类别的准确率P(Precision)和召回率R(Recall)之和,再对所有类别的平均精度求均值得到,计算公式如式(12)所示。

以害虫检测为例,其中TP(True Positive)为测试数据集中害虫被正确检测的个数,FP(False Positive)为测试数据集中非害虫被检测为害虫的个数,FN(False Negative)为测试数据集中真正的害虫被检错的个数,s是害虫类别数。

4.3 实验结果分析

选取五类害虫图片,分别使用原始YOLOv4 算法和改进后的YOLOv4 算法进行储粮害虫检测,并加入YOLOv3 算法的检测,图5 展示了三种算法模型的检测结果。相较于YOLOv3 算法,YOLOv4 算法对储粮害虫有较好的检测结果,例如米象(So),YOLOv3 算法检测存在漏检的现象,YOLOv4 算法有效的检测出了所有的害虫。改进后的YOLOv4算法,相较于原始的YOLOv4 算法检测,有更高的检测精度。

图5 三种算法检测结果

为了进一步验证本文改进的算法有效的提高了储粮害虫检测的准确率,采用mAP 指标对改进后的YOLOv4 算法进行评估。图6 展示了YOLOv4算法改进前后在储粮害虫上检测的AP 对比结果,原始的YOLOv4 算法的AP 值在75%~99%之间,改进后的YOLOv4 的AP 值在85%~99%之间,虽然不是每类害虫的AP 值都高于原始的YOLOv4 网络,但是改进后的算法对五类害虫的检测性能整体优于原始算法。

图6 储粮害虫AP的检测结果

表2展示了改进前后的YOLOv4算法在害虫检测上的mAP对比实验结果,相较于原YOLOv4算法相比,改进后的YOLOv4 储粮害虫检测算法,mAP从89.50%提升至93.99%,说明该算法整体上提升了精测精度,再如锈赤扁谷盗(Cf),原YOLOv4 算法检测AP 为76.51%,改进后的YOLOv4 算法AP 提升到了89.56%。

表2 改进后的YOLOv4与原YOLOv4算法检测效果对比

将本文改进的YOLOv4 算法与YOLOv3、YOLOv4两种经典的多尺度目标检测算法对mAP、FPS值进行对比,结果如表3 所示。与YOLOv3 相比,YOLOv4的主干网络采用CSPnet结合YOLOv3的主干网络Darknet53 构成CSPDarknet53,提高了算法的检测精度。为了进一步改善储粮害虫检测精度,在网络的三个不同尺度的检测前加入SPP模块,通过不同的最大池化层,在不增加计算开销的情况下有效地增加了储粮害虫图像的深层感受野,获得更加丰富的储粮害虫纹理特征,并且几乎不会降低网络检测的速度。相较于YOLOv4,本文改进的YOLOv4 算法在储粮害虫检测中,mAP 提高了4.49%。同时,检测速度超过了原始YOLOv4 算法,每秒达到26.36帧。

表3 三种方法性能比较

5 结语

本文针对储粮害虫的检测,提出了基于改进YOLOv4 的粮仓害虫检测算法。该算法使用K-means 算法,调整训练检测使用的先验框的大小,在模型中加入SPP结构,增加模型感受野,得到了一种适合储粮害虫检测的算法模型。实验结果表明,相较于原YOLOv4 算法,本文提出的改进的YOLOv4 算法,在储粮害虫检测中mAP 提升了4.49%,且检测速度达到了26.36 帧/s。与YOLOv3相比,改善了储粮害虫的漏检效果。

猜你喜欢
储粮先验害虫
蜗牛一觉能睡多久?
冬季果树常见蛀干害虫的防治
基于无噪图像块先验的MRI低秩分解去噪算法研究
渭南农户储粮的调查与分析
枣树害虫的无公害防治
中储粮企业全面预算管理之我见
国内首座球形粮仓储粮效果及特性
基于自适应块组割先验的噪声图像超分辨率重建
农业害虫的冬季防治
沼气在防治储粮害虫中的应用