您现在的位置是:首页 >技术教程 >基于YOLOv5的火焰烟雾检测算法实战网站首页技术教程

基于YOLOv5的火焰烟雾检测算法实战

羁旅少年 2024-10-15 00:01:03
简介基于YOLOv5的火焰烟雾检测算法实战

一个不知名大学生,江湖人称菜狗
original author: Jacky Li
Email : 3435673055@qq.com

Time of completion:2023.6.11
Last edited: 2023.6.11

导读:

火焰烟雾检测是智慧安防业务场景中重要的功能之一,本文提出了一种基于YOLOv5的火焰烟雾检测算法,具有更强的泛化性,对火焰烟雾的检测效果更加准确。

目录

一:摘要

 二:介绍

三:模型

A. YOLOv5网络模型及算法改进

损失函数的改进

激活函数的改进

四:实验结果与分析

A. 获取数据集

B. 自适应图像缩放

C. 数据标注

D. 模型训练

E. 基于YOLOv5的工厂火焰烟雾检测及结果分析

五:结论

作者有言

文章信息


一:摘要

石油化工装置火灾烟雾检测,可以预防火灾,保证生产安全和生命安全。文章旨在解决复杂工厂背景下火焰烟雾检测中的漏检和误检问题。

文章提出了一种基于YOLOv5的火焰烟雾检测算法。目标回归损失函数(CIoU)用于改善目标检测中的漏检和误检,提高模型的检测性能。改进后的激活函数避免了梯度消失,保持了算法较高的实时性。数据增强技术用于增强网络提取特征的能力,提高小目标检测模型的准确性。根据火焰烟雾的实际情况,改进了YOLOv5模型的损失函数和激活函数。基于改进的YOLOv5模型,建立了一种具有泛化性能的火焰烟雾检测算法。将改进后的模型与SSD和YOLOv4-tiny进行了比较。改进后的YOLOv5模型精度可达99.5%,对火焰烟雾的检测效果更加准确。改进后的网络模型在运行时间和精度上均优于现有方法。

针对火焰烟雾检测的实际特殊性,建立了一种改进的基于YOLOv5的火焰烟雾检测网络模型。通过改进损失函数来达到优化模型的目的,并结合非线性能力较强的激活函数来避免网络的过拟合。该方法有助于改善火焰烟雾检测中的漏检和误检问题,可进一步推广到行人目标检测和车辆行驶识别中。

 二:介绍

工厂的安全生产一直是一个不容忽视的问题。以石化工厂为例,由于生产车间密集,存在大量易燃易爆危险品,一旦发生火灾,极易诱发灾难性后果,造成环境污染,严重威胁生产安全和人员生命财产安全。因此,及时发现和预警控制早期火灾是安全生产的现实需求。厂区内火焰烟雾检测报警技术已受到国际、国内的重视。

火灾早期探测主要通过烟雾传感器和温度传感器来实现。例如,烟雾传感器通过检测烟雾浓度来完成防火。这种方法在室内或一些小场所有很好的表现。但在复杂环境中,由于气流环境、热障效应等因素的影响,再加上传感器检测距离较近、稳定性较低,依靠传感器检测温度、浓度等指标,很难准确获取现场实时信号数据信息。

虽然现有的目标检测研究已经取得了重大突破,但在实际的目标检测中,需要对整个图像进行卷积,需要更大的视场来满足算法的简洁快速。YOLO是一种目标检测器,它使用深度卷积神经网络学习的特征来检测目标。近年来,大量研究将其用于不同类型图像的智能检测,然而,模型结构复杂,火焰检测精度不够。

针对YOLOv5算法模型体积小、检测速度快的优异性能,以及处理厂区火焰烟雾检测问题的复杂性,文章在专门改进的YOLOv5的基础上建立了一种植物火焰烟雾检测算法,用于解决火焰烟雾漏检和误检问题。该算法将原有的GIoU _ Loss替换为CIoU _ Loss作为边界盒的损失函数,并利用SiLU激活函数来避免网络的过拟合。最后,通过与SSD、YOLOv4-tiny和YOLOv7算法的比较,验证了所提算法的有效性和可达性。

三:模型

A. YOLOv5网络模型及算法改进

损失函数的改进

损失函数是评估回归和分类问题的重要指标。在深度学习网络中,反向传播时间对误差估计至关重要。因此,本节通过引入更好的理论CIoU _ Loss 损失函数,改进了GIoU _ Loss 。

在目标检测中,需要对检测盒与真实盒的检测效果进行比较。通用网络中使用的GIoU _ Loss解决了在IoU的基础上,由于不同目标盒重叠而导致的比值无法优化的问题。GIoU的计算过程如下式第一个算式所示。

上式第二个算式中,A为预测箱,B为实箱,IoU为传统的交点-并集比,即预测箱与实箱的交点面积与并集面积之比;Ac为预测框与实框最小包围矩形的面积。U为预测框和实框的面积。第三个算式中,LGIOU为GIoU的损失。

当预测框包含在目标框内时,GIoU _ Loss退化为IoU _ Loss,相对位置关系无法区分。为了更好地优化目标盒和预测盒,本文提出用CIoU _ Loss代替原来的GIoU _ Loss作为包围盒损失函数。CIoU的计算过程如下边第一个算式所示。

上述第二个算式中,ωA, hA为实际帧宽,ωB, hB为预测帧宽,α是权重,υ度量长宽比的相似度。C为两个矩形的最小对角线限定比例尺;ρ是A和B的中心点的欧氏距离;上述第三个算式中,LCIoU为CIoU的损失。

激活函数的改进

激活函数的目的是提高神经网络的非线性拟合能力。在YOLOv5网络结构中,骨干网中的LeakyReLU激活函数替换为SiLU(Sigmoid-Weighted Linear Units)激活函数。SiLU激活函数借鉴了ReLU函数族的思想,但更流畅。由于SiLU激活函数具有较强的非线性能力,可以解决LeakyReLU梯度爆炸的问题。如下图所示,改进后的CBS模块表示卷积层、批处理归一层和SiLU激活函数的串联模式。

SiLU激活函数表达式如下:

如上式第一个算式中,Sigmoid是常用的激活单元,SiLU函数表示Sigmoid的加权组合。由于SiLU激活函数本身具有自稳定特性,如上述第二个算式所示,它可以有效抑制大量权重的学习,从而避免网络过拟合,降低网络泛化性能。

四:实验结果与分析

A. 获取数据集

所获得的数据包含图像和视频两种格式类型。将得到的视频转换为视频图像序列,去除部分相似度高的图片。经过处理的样本图片被打乱,生成一个新的数据集用于训练。为了更好地评价工厂中火焰烟雾的目标识别性能,实验选择火焰和烟雾两种类型作为目标识别对象如下图,可以更好地反映YOLO模型在真实环境中的效果。

为了从有限的工厂火焰烟雾数据集中充分获取目标特征信息,通过随机变换剔除模型中部分相似度较高的样本图像,防止过拟合导致特征学习停止,有利于模型的泛化。随机变换包括翻转、旋转、尺度变换、随机抠图、高斯噪声、随机模糊、颜色抖动等,以达到扩展数据集的目的。文章采用马赛克数据增强技术,通过随机缩放、随机裁剪和随机发射,将4张随机图像拼接成1张图像,丰富了数据集,提高了小目标的检测精度,增强了网络特征提取能力。下图显示了Mosaic数据增强结果。

B. 自适应图像缩放

在一般的检测任务中,数据集图像的长度和宽度是不同的。由于小目标分布不均匀,严重影响了网络运行效率。

常见的处理方法是在训练和测试时将样本图像缩放到固定大小,然后将其发送到网络进行学习。如果在输入端仅以马赛克增强作为小样本图像处理的主要手段,则提高了小目标的检测精度,而减少了大目标的数据集,导致算法的平均精度下降。因此,传统的数据处理方法效果并不理想。

文章采用自适应缩放技术对数据输入端的数据进行处理。通过将原始图像缩放到标准尺寸,解决了原始数据集样本大小不同的问题。通过计算缩放后的尺度大小,得到黑边的填充值,在图像周围自适应添加最小黑边,减少计算量,从而加快检测速度。向这个示例添加黑边的效果如下图所示。

C. 数据标注

本文使用图像标注软件labellmg对样本图像的真实值进行手动标注,选择对应目标区域的标注矩形框,自定义目标类别,标注信息将以.xml格式保存。双击打开“saved.xml”文件,文件中包含箱子所属类别、图像文件名、路径信息、目标类型和数量、箱子大小和中心点坐标。使用LabImage标注工具完成标注,最终获得2585张样本图像,包括火和烟2类,按照8:2的比例分为训练集和测试集,其中训练集图像2068张,测试集图像517张。

D. 模型训练

用于模型训练的硬件环境:Intel (R) Core (TM) i9-10900K CPU, 32.0 GB内存,NVIDIAGeForceRTX3090。软件环境:Windows10操作系统,Python3.10开发语言,PyTorch深度学习框架。在超参数设置中,batch-size设置为16,最大迭代次数的epoch设置为300,num-workers设置为2。Adam优化器可以在训练过程中达到参数优化的目的,同时保证网络检测精度,减小网络规模和参数数量,增强网络的检测和识别能力。随着训练轮数的增加,总损失值呈下降趋势。当训练轮数为300轮时,模型的精度趋于稳定,总损失值基本稳定在0.03,满足模型收敛的基本要求。可以确定300为模型的最佳训练轮,模型达到了较好的拟合效果。

E. 基于YOLOv5的工厂火焰烟雾检测及结果分析

为了更直观地感受三种算法的测试结果,选取了一组复杂背景和小目标样本图像进行检测。将选取的样本组发送到三种算法的网络模型中进行测试。YOLOv5l、SSD和YOLOv4-tiny算法的检测结果分别如下三图所示。

YOLOv5l检测四张样本图像的时间分别为0.196s、0.075s、0.082s和0.07s。从上述的检测结果可以得出,在保证目标盒位置准确的前提下,检测小目标的可靠性达到80%以上,检测大目标的可靠性达到90%以上,满足厂区火焰烟雾检测要求,具有良好的检测性能。使用SSD算法对样本组进行测试,从图中可以看出,部分目标未被检测到,被检测目标的可靠性为60%-70%。可以看出,使用SSD算法检测样本组存在目标漏检、置信度低等问题。出现这种现象的原因可能是样本中的背景比较复杂,目标比较小。该模型在训练和学习过程中无法充分提取目标特征。因此SSD算法不能较好地满足厂区火焰烟雾目标检测的指标要求。使用YOLOv4-tiny算法检测样本组的结果如上图所示。yolov -tiny算法对样本组的检测时间分别为0.81 s、0.94 s、0.75 s和0.60 s,是改进YOLOv5算法的8-9倍。

从以上性能指标分析可以看出,基于我们提出的改进YOLOv5算法的火焰烟雾检测结果AP值高于99%,提高了目标检测精度,总损失率下降到0.03,显著低于一般目标检测算法的损失值。与SSD、YOLOv4-tiny和YOLOv7算法相比,基于改进YOLOv5算法的石化工厂火焰烟雾检测具有速度快、体积小的优点,较好地满足了石化工厂火焰烟雾检测的基本要求。

五:结论

文章提出了一种基于改进YOLOv5的工厂背景下火焰烟雾实时检测算法。目的是解决复杂背景、小目标和多目标火焰烟雾检测中的漏检和误检问题。

该模型采用速度快、精度高、尺寸自适应的YOLOv5l作为基本模型。文章的主要贡献如下:

(1)为了更好地优化目标盒和预测盒,采用CIoU _ Loss代替原有的GIoU _ Loss作为包围盒损失函数,加快了模型的收敛速度,提高了模型的检测性能;

(2)为避免网络过拟合,将卷积模块的LeakyReLU激活函数替换为SiLU激活函数,解决LeakyReLU梯度消失和梯度爆炸的问题,防止其泛化性能降低;

(3)针对数据集中目标小、背景复杂的问题,采用马赛克数据增强技术,提高小目标的检测精度,增强网络特征提取能力。自适应图像调整技术可以自适应地在图像周围添加最少的黑边,减少参数计算量,从而更好地平衡网络模型的精度和速度。

(4)对预训练的YOLOv5进行火焰烟雾测试和评估,并与其他算法进行比较。

实验结果表明,该算法能够很好地检测出火焰烟雾样本图像中的多目标和小目标,对于数据集中的复杂背景、漏检、误检等问题有较好的改善。该方法在火焰烟雾检测的实际场景中具有一定的优势。但是需要考虑的是,当检测背景与烟雾的相似度过高时,算法在检测视频样本时会出现较低的帧率。原因是数据集本身存在很多小目标,使用马赛克数据增强会导致模型泛化能力较差。

作者有言

如果需要代码,请私聊博主,博主看见回。
如果感觉博主讲的对您有用,请点个关注支持一下吧,将会对此类问题持续更新……

文章信息

本次介绍的文章是广东石油化工学院发表的一篇火焰烟雾检测的文章,题目为《Flame smoke detection algorithm based on YOLOv5 in petrochemical plant》。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。