基于YOLOv8化工企业储煤场火煤和扬尘检测方法研究

2024-03-22 08:36晨,张飞,郝
盐科学与化工 2024年3期
关键词:损失卷积函数

禹 晨,张 飞,郝 斌

(内蒙古科技大学信息工程学院,内蒙古 包头 014000)

当煤与空气接触并达到其燃点时,它会发生局部自燃,这不仅导致煤炭资源的浪费,还会向大气中排放大量的一氧化碳、二氧化硫和其他有害气体,对环境造成污染。同时,运输和处理煤炭过程中产生的扬尘无法完全避免,这不仅会污染周围环境,还会对工作人员的健康产生危害。因此,为了降低经济损失、减少环境污染并改善工作环境质量,对火煤和扬尘的监测和预警变得至关重要。

近年来,深度学习技术在目标识别领域已经有了广泛应用,目标检测的主要功能是检测图像中出现的既定目标类别以及目标的位置信息。学术界同时也涌现出许多基于烟尘的检测方法,主要分为两类:一类是以Faster R-CNN[1]与Mask R-CNN[2]等为代表的两阶段检测算法;另一类是以YOLO[3]等为代表的一阶段目标检测算法。很多学者为提高检测精度和速度做了大量工作,文献[4]通过使用MobileNetv3[5]重构SSD[6]的主干使模型轻量化;文献[7]使用深度可分离卷积来替换YOLOv4[8]网络中的普通卷积实现模型的轻量化。但是模型的轻量化往往会带来检测精度下降的问题,随着YOLO系列的快速更迭,YOLOv8 相对于其他目标检测算法,在保持高精度的同时,具有更快的推理速度,采用轻量级网络结构使其在移动设备上运行更加流畅。

煤场环境下的火煤和扬尘检测,对模型的轻量化和检测精度都提出了很高的要求,而且煤炭自燃初期,产生的烟往往是通过小目标呈现的,煤场环境下的尘雾、灯光这些类烟雾等物体都会对检测造成干扰,所以提高复杂场景下对分辨率低图片中烟尘的小目标检测速度、精度是亟待解决的问题。

文章针对以上问题,对YOLOv8模型进行改进,在主干特征提取网络Backbone 层部分,引入SPDConv 代替原有的普通卷积,提高模型对于分辨率低的图像中烟尘和其呈现为小目标状态下的检测精度;在特征融合Neck 层采用BottleNeckCSP 模块替换之前的C2f 模块,可以在主干特征提取阶段减少运算参数量,既保证了推理的速度和准确性,还减小了模型尺寸,使模型更加轻量化,提高了检测速度。除此之外,还改进YOLOv8 损失函数由CIoU 变为EIoU,以达到使模型训练时收敛更加快速的目的,能够有效地描述回归任务,以便更精准地对火煤和扬尘进行检测。

1 YOLOv8算法

YOLO 是一种经典的一阶段目标检测算法。YOLOv1[9]提出了一个全新的目标检测框架,将目标检测任务转化为一个回归问题,通过一个单一的神经网络模型同时预测目标的位置和类别。YOLOv2[10]在YOLOv1的基础上进行了改进,引入了anchor boxes,使得模型能够更好地处理不同大小的目标。同时,YOLOv2 还采用了更复杂的损失函数,提高了模型的训练效果。YOLOv3、YOLOv4 在YOLOv2 的基础上进一步改进,采用了更深的神经网络结构,提高了模型的性能,同时还引入了多尺度特征融合,使得模型能够更好地处理不同尺度的目标。YOLOv5 采用了新的CSPNet 骨干网络架构,计算效率和精确率都有所提升。

相比于之前的YOLO系列,YOLOv8在训练时间和检测精度上都得到提升,而且模型的权重文件相比之前的YOLO 系列进一步轻量化,可以部署到任一嵌入式设备中,它凭借自身快速、高效的性能可以很好地满足实时检测的需求。

YOLOv8 的网络结构由三个部分组成:主干网络(backbone)、特 征 增 强 网 络(neck)、检 测 头(head)。其中主干网络依然使用CSP的思想。而在特征增强网络方面,YOLOv8 使用PAN-FPN 的思想。在检测头部分,YOLOv8 使用解耦头替换了以往的耦合头[11],将分类和回归解耦为两个独立的分支,通过解耦使各个任务更加专注,从而解决复杂场景下定位不准及分类错误的问题。同时YOLOv8采用了Anchor-free 目标检测方法[12],这是一种基于回归的目标检测方法,它不需要预先定义锚点框来预测目标的位置。在传统的目标检测方法中,通常需要预先定义锚点框,这些锚点框用于作为预测目标位置的参考。然而,这种方法存在一些问题,如锚点框的选择和调整比较繁琐,而且对于不同尺度和形状的目标,可能需要不同的锚点框。相比之下,YOLOv8 的Anchor-free 目标检测方法采用了一种回归的方式,直接预测目标的位置和大小,让网络更快地聚焦到目标位置的邻近点,使预测框更接近于实际边界框区域。

2 Smoke-YOLOv8s网络

2.1 SPD Conv模块

SPD Conv 是一种用于替代跨步卷积与池化操作的特殊卷积,它由一个空间到深度(SPD)层和一个非步长卷积(Conv)层组成。空间到深度(SPD)层的作用是将输入特征图的每个空间维度降低到通道维度,同时保留通道内的信息。这可以通过将输入特征图的每个像素或特征映射到一个通道来实现,SPD Conv 模块采样(见图1)。在这个过程中,空间维度的大小会减小,而通道维度的大小会增加。非步长卷积(Conv)层是一种标准的卷积操作,它在SPD层之后进行。与步长卷积不同,非步长卷积不会在特征图上移动,而是对每个像素或特征映射进行卷积操作。这有助于减少在SPD层中可能出现的过度下采样问题,并保留更多的细粒度信息。SPD Conv的组合方式是将SPD层和Conv层串联起来。具体来说,输入特征图首先通过SPD层进行转换,然后输出结果再通过Conv层进行卷积操作。这种组合方式可以在不丢失信息的情况下减少空间维度的尺寸,同时保留通道内的信息,有助于提高对低分辨率图像和小型物体的检测性能。在火煤自燃的初期,通常在产生火焰之前,首先会产生烟雾,但是初期烟雾在图象中所占面积比例很少,以小目标形式出现,而且图象质量受环境影响,很多时候用于检测的图像,分辨率并不高,引入SPD Conv 模块代替主干特征提取网络中的普通卷积来提高分辨率低的图像中烟尘和其呈现为小目标状态下的检测精度。

图1 SPD ConvFig.1 SPD Conv

2.2 BottleNeckCSP模块

在网络的特征提取部分,采用了BottleNeckCSP模块来替换之前的C2f 模块(见图2)。这一改进的目的是为了更好地学习和提取网络残差特征,同时调整特征图的深度和宽度。与原网络中的C2f模块相比,BottleNeckCSP 模块能够减少内存消耗和计算瓶颈,提高网络的效率和性能。BottleNeck 结构通过卷积计算改变数据的通道数,从而调整特征图的深度和宽度。这种设计可以在主干特征提取阶段减少运算参数量,既保证了推理的速度和准确性,还减小了模型尺寸,使模型更加轻量化。

图2 BottleNeckCSP模块结构Fig.2 BottleNeckCSP module structure

2.3 EIoU损失函数

损失函数是判断模型预测值和预期值差距的一项重要指标,在一定程度上反映了模型对预测结果的准确度,预测值和预期值越接近,损失函数就越小。合适的损失函数可以使模型训练时收敛更加快速,所以在训练模型中选择合适的损失函数尤为重要[13]。在YOLOv8 中使用CIoU 作为坐标损失函数,如公式(1)所示。

式中:b为目标框的中心点;bgt为预测框的中心点;c为目标框和预测框的最小外接框的对角线距离;ρ为目标框和预测框中心点的欧氏距离;α为权重参数。

在原始YOLOv8中,CIoU损失函数在预测框回归过程中,当预测框和真实框宽高纵横比呈现线性比例时,预测框宽和高不能同时增加或减少,不能有效地描述回归任务,从而使整体损失函数收敛变慢[14]。文章根据原YOLOv8损失函数不足之处,采用EIoU损失函数替换YOLOv8中使用的CIoU损失函数。

EIoU 损失函数主要是在CIoU 的基础惩罚项上,将预测框和真实框的横纵比影响因子拆分后分别计算预测框和真实框的长、宽。EIoU 公式如公式(2)所示。

式中:LIoU、Ldis、Lasp分别为IoU 损失、中心距离损失、方位损失;wc、hc分别为最小闭合框的宽和高。

CIoU 和EIoU 损失函数迭代过程见图3。其中,点线框代表真实框,黑实线框代表预先设定的锚框,点划线框代表CIoU 的预测框回归过程,虚线框代表EIoU 的预测框回归过程。从图3 可以看出,使用CIoU 时,预测框的宽和高不能同时增大或减小,EIoU很好地解决了这个难题。

在设计阶段加强对BIM技术的应用可以提高工程造价管理的有效性,工程造价管理的关键是在项目策划和设计阶段,而在项目投资决策后,造价控制的重点就是在设计阶段[4]。要想真正提高工程造价管理效率,需要积极做好设计阶段的造价管理。将BIM技术应用其中,可对信息进行整合,保证各个专业之间的数据能够准确、及时传递,使各个部门与单位参与其中,经过讨论与分析,保证工程设计的完善性,减少后期因设计变更导致的成本浪费。同时,利用软件中强大的可视化建模功能,可实现三大目标:设计阶段的合理造价、提高资金利用率、提高投资控制的效率。

图3 损失函数迭代过程Fig.3 Loss function iterative process

2.4 构建火煤和扬尘检测网络

文章在YOLOv8 的基础上,针对以上内容进行改进设计,构建Smoke-YOLOv8s火煤和扬尘的检测网络,用于火煤和扬尘的检测实验研究见图4。

图4 Smoke-YOLOv8s整体网络结构Fig.4 Smoke-YOLOv8s overall network structure

3 实验测定与结果分析

3.1 构建数据集

从企业收集了6 744 张火煤和扬尘图像构成本实验的数据集,考虑到灯光和雾等一些干扰因素的影响,数据集中也包含了一些类火和类烟的图像。这些图像具有代表性和多样性,确保模型能够学习到足够多的信息。在收集到图像后,对这些图像进行清洗和预处理,以提高模型的训练效率和效果。随后使用Labelimg工具对图像中的目标物体进行分类、框选等操作标注,并对标注好的图像进行审核,保证标注质量。最后将标注好的数据集划分为训练集、验证集和测试集,以便对模型进行训练、评估和优化,比例为8∶1∶1,5 420 张用作训练集,677 张用作测试集和677张用作验证集。

3.2 实验环境

实验环境硬件包括:CPU 为Intel(R)Core(TM)i5-13600KF,工作频率为3.5 GHZ,内存大小为32 G,显卡为Nvidia GeForce RTX4060ti16G。软件环境为Python3.8.18,PyTorch 2.0.0,GPU加速器为cuda11.8。预训练模型为YOLOv8s.pt,输入图片设置为640 × 640,初始学习率设置为0.01,Batch-size 设置为4,每次实验设置200个epoch。

3.3 评价指标

研究通过实验评估改进的Smoke-YOLOv8s 算法,将精确率P(precision)、召回率R(recall)、平均精度AP(average precision)、平均精度均值mAP(mean Average Precision)作为算法的评价指标。公式如(3)、(4)、(5)、(6)所示。

式中:AP为检测的平均精度即为精确率—召回率(PrecisionRecall,P-R)曲线的曲线下面积;TP为分类正确的正样本个数;FP为分类错误的正样本个数;FN为分类错误的负样本个数。

3.4 结果分析

3.4.1 性能对比实验

图5 模型改进前和改进后的mAP@0.5对比情况Fig.5 Comparison of mAP@0.5 before and after model improvement

3.4.2 算法对比实验

为进一步验证改进算法与以往算法在烟尘检测上的性能差异,实验选择目标检测领域经典的YOLOv3-tiny、YOLOv5s、YOLOv8s 和Smoke-YOLOv8s算法进行对比实验,所有实验均在同一实验环境、同一数据集下进行,经各算法训练后的模型性能见表1。

表1 不同模型性能对比Tab.1 Performance comparison of different models

由表1 可知,相比以往的YOLO 模型,改进的Smoke-YOLOv8s 模型在精确率和mAP@0.5 均有显著的提高,在模型的大小方面,文章改进模型的大小为25.4 MB,可以很好地满足嵌入式设备对火煤和扬尘检测模型轻量化的要求。

3.4.3 消融实验

为了验证不同的改进策略对原始网络的影响,针对YOLOv8s 模型进行了3 组消融实验,即增加SPD Conv 模块,将特征提取模块改为Bottle-NeckCSP ,将损失函数由CIoU 改进为EIoU。实验结果见表2。在每组实验中,所有实验均在同一个数据集和相同的训练参数下完成。

表2 消融实验结果Tab.2 Ablation experiment results

由表2 可知,在主干特征提取网络Backbone 层部分,引入SPD Conv 代替原有的普通卷积后,原模型的各项性能均得到明显改善,精确率在原模型基础上提高了1.3%,mAP @0.5 直接在原模型的基础上增长了2.1%,在特征融合Neck 层采用Bottle-NeckCSP 模块替换之前的C2f 模块和改进损失函数为EIoU 后,mAP @0.5 继续增长了1.8%,达到了97.3%,模型大小降低了1.4 MB,将该模型部署到嵌入式设备中进行实时火煤和扬尘检测,模型的大小、平均分类性能等参考指标都达到较高水平。

3.4.4 测试结果

YOLOv8s 与文章改进算法Smoke-YOLOv8s 实际运行效果见图6,在火煤和扬尘检测的准确度上有显著提高,而且提高了对火煤和扬尘的低分辨率图像和呈现小目标状态下的检测性能[15]。

图6 YOLOv8s和Smoke-YOLOv8s检测效果对比Fig.6 Comparison of detection performance between YOLOv8s and Smoke-YOLOv8s

4 结论

文章设计了一种在复杂背景下进行火煤和扬尘检测的改进YOLOv8s 算法,与YOLOv8s 算法相比,改进之后的模型平均精度均值达到97.3%,提升了1.2%的精确率,同时降低了模型权重文件的内存存储和对硬件环境的依赖,可以满足储煤场场景下对模型检测精度、轻量化要求。

猜你喜欢
损失卷积函数
二次函数
基于3D-Winograd的快速卷积算法设计及FPGA实现
第3讲 “函数”复习精讲
胖胖损失了多少元
二次函数
函数备考精讲
从滤波器理解卷积
玉米抽穗前倒伏怎么办?怎么减少损失?
基于傅里叶域卷积表示的目标跟踪算法
一般自由碰撞的最大动能损失