APP下载

改进YOLOv4 的油田作业现场烟火检测①

2022-06-29冯建臣

计算机系统应用 2022年6期
关键词:烟火卷积聚类

田 枫, 冯建臣, 刘 芳

(东北石油大学 计算机与信息技术学院, 大庆 163318)

油田作业现场的环境具有易燃易爆的特征, 烟火灾害本身又具有发生快、防范难等特性, 烟火事故一旦发生, 企业就会面临巨大的损失,使企业生产停滞, 甚至对烟火灾害发生地工作人员造成伤亡. 目前油田作业现场主要采用人工巡检的方式预防烟火灾害, 费时费力且实时性较低. 随着油田安防监控的广泛应用, 使得视频数据获取变得方便快捷. 因此, 如何充分利用油田安防监控的优势进行烟火检测, 并在保证准确率的前提下, 实现实时性检测, 一直都是一个热点的研究课题.

采用对现场的视频流实时分析来检测烟火目标的方式, 可大大缩短预警响应时间、增大检测范围. 近年来, 基于图像的烟火检测研究取得了丰硕的研究成果.Machine learning[1]使得基于图像识别的烟火检测技术取得较大进步[2], 但是该方式的识别性能受到所设计的手工特征质量的影响[3]. 深度学习作为机器学习的分支, 在基于图像的烟火识别中应用广泛[4], 它使用具有精准标注的数据集训练深层神经网络,使模型在求解过程中自动学习目标的特征. 目前, 以先产生候选区再进行分类的RCNN[5]为代表的两阶段算法及直接输出类别和定位的YOLO 系列[6]为代表的一阶段算法是目标检测主流算法. 通常,两阶段算法检测精度高检测帧率低. 单阶段算法检测帧率高,能够满足实时性的要求.基于监控视频的油田作业现场烟火检测, 对实时性要求较高, 所以本文选择YOLOv4 为基础算法.

YOLOv4 作为通用的目标检测算法, 直接应用于油田作业现场的烟火检测, 其检测效果并不理想. 主要由于视野较开阔, 距离较远导致的烟火目标在监控视频中占比较小, 现有算法漏检误检严重. 并且对油田复杂背景的干扰不能很好处理. 例如, 实际监控视频中, 发生火灾的区域范围比较小, 很难从复杂背景中识别出来. 场地中具有大量类似烟火的区域, 比如黑色的油、深色的树、红色的工装等, 都可能造成检测失败.

针对油田作业现场烟火特征, 本文在YOLOv4 深度学习算法的基础上, 提出了改进的YOLOv4 烟火识别模型. 该算法模型改进了特征融合网络模块, 将骨干网提取的浅层特征进一步融合, 并使用多尺度的金字塔卷积PyConv[7]替代标准卷积, 增强对不同层细节的提取能力, 增大局部感受野[8], 增强了小目标[9]的特征描述能力, 提高了小目标的检测精度. 同时在骨干网络中加入通道和空间注意力机制CBAM[10], 增强网络对重要特征的提取能力并忽略特征中的噪声信息, 以应对复杂背景, 同时降低计算量, 增强网络对复杂背景下烟火的识别能力, 提高分类准确率.

1 网络Neck 部分的改进

1.1 改进的特征融合

抽象语义在网络浅层较少, 但纹理、坐标等信息丰富; 网络深层含有较多的抽象语义信息, 但纹理、坐标信息则比较少. YOLOv4 中, FPN 网络[11]将较强的语义特征自顶向下传递用于增强浅层类别的判定信息,PAN 模块[12]将浅层较强的纹理、坐标信息通过自底向上的方式向上传递, 增强深层定位能力. 在识别小目标时,由于网络深层小目标特征信息较少, 造成对小目标的漏识别和误识别. 为了强化网络对较小目标的检测能力, 充分利用浅层信息本文重新设计了FPN+PAN层, 改进了YOLOv4 算法, 如图1(a)中的Neck-2 部分.

图1 YOLOv4 结构及组成单元

从Neck 部分可以看出, 本文新加入了两个包含更多位置、纹理信息的Residual Block[13]残差单元模块提取的浅层特征信息层. 将浅层特征进一步和高层语义特征融合, 将包含更多位置、纹理信息的浅层特征和含有足够语义信息的深层特征进行融合. 加强网络对小目标的判别能力, 在具有较准确语义信息的同时,为小目标的精准定位提供更多信息依据. 让算法能够准确识别较小的烟火目标.

如图2 所示, 当输入图片大小为608×608 时, 本文在原模型融合了19×19、38×38、76×76 的基础上, 进一步融合了152×152 和304×304 大小的特征, 将更多的低层信息融入路径聚合网络.

图2 FPN+PAN 特征融合

最后, 使用整合后的特征图预测目标框、类别概率、置信度.

1.2 加入金字塔卷积

卷积层是卷积神经网络的基础构建模块, 卷积构建块的改进往往会增强特征的提取能力. 标准卷积(单一空间大小和深度的单一类型的卷积核)不具备提取多尺度特征的能力[14]. 而金字塔卷积(如图3 所示)包含不同大小和深度的卷积核, 可以在不增加计算量的情况下, 增大局部感受野, 增强不同尺度目标的特征提取能力, 进而提高网络性能. 因此, 为了增强局部特征的提取能力, 解决下采样中细节信息丢失的问题. 本文在网络特征融合模块Neck-1、Neck-2 部分, 使用金字塔卷积替代标准卷积.

图3 金字塔卷积PyConv

金字塔卷积PyConv(如图3 所示), 包含一个核(kernel) 金字塔, 其中每个层涉及大小(自下而上增大)和深度(随卷积核的增大而减小)不同的filters, 他们能够捕获场景中不同层的细节. PyConv 使用多尺度卷积核对输入特征进行提取. PyConv 会将输入特征分成多个组并进行独立的卷积运算.

假设每层输出特征的深度一致, 那么每层的参数量和计算复杂度会呈现出较为均匀的分布. 因此, 可以得出PyConv 与标准卷积的计算复杂度近似. 如图1(a)所示, 在网络的Neck 部分中的PyCBLn 模块, 其中PyC 代表的就是金字塔卷积.

1.3 嵌入通道和空间注意力CBAM

特征网络越深, 背景噪声越明显, 为减少复杂背景噪声的干扰, 并减少计算量, 本文在backbone 的每个残差单元模块添加通道和空间注意力CBAM (如图4所示). 注意力机制能够对特征图中重要的通道和空间特征增强, 使得网络在训练过程中能抓住目标的重点特征进行学习. 采用CBAM 模块可以使网络学习到特征的每个通道的重要程度以及特征的每个空间位置的重要程度, 从而实现空间和通道的自适应调整, 优化网络的权重, 提升网络性能. 进一步提高识别的准确率.

图4 CBAM 注意力结构图

将CBAM 模块嵌入至YOLOv4 网络的骨干网每一个CSP 模块的每个残差单元的shortcut linear 融合之前(如图5 所示). 由于CBAM 注意力模块本身是对重要通道和空间特征进行增强, 因此将注意力嵌入到网络的backebone 中一般可以取得很好的效果.

图5 嵌入CBAM 注意力

1.4 先验框优化

为了使先验框的大小更适合烟火数据集, 提升检测的精度. 本文采用K-means++聚类方法[15], 根据自建烟火样本数据集, 计算anchors 值. 步骤如下:

1)数据预处理: 异常值或噪声数据会对平均值产生很大影响, 并导致中心偏移. 因此, 我们对数据的异常点进行处理, 筛除离群的点.

2)根据数据集中目标大小进行边界框聚类分析.使用K-means++聚类算法对烟火数据集中目标的anchor box 进行聚类分析, 首先选取任意一个目标框的值作为初始聚类中心, 其次, 计算所有样本与现有聚类中心之间的距离D(x), 并算出任意样本成为下个聚类中心点的概率P(x)如式(9):

然后再使用轮盘赌选择法找出下个聚类中心点.重复上述计算P(x)和D(x)的步骤直至得到K个锚框大小. 最后循环重复计算每个样本点到K个聚类中心点的距离, 将该样本点划分给距离最小的聚类中心的类别并更新聚类中心点, 直至获得的Anchorbox 大小不再变化.

1.5 损失函数

损失函数用来评估模型的预测值和真实值的距离程度, 可通过最小化损失函数求解和评估模型. 本文模型中用到的损失函数由3 部分组成: 类别损失、置信度损失、回归损失. 回归损失CIoU loss 如式(10):

其中, ρ2(b,bgt)表示预测框的中心点和真实值之间的欧式距离c表示同时包含预测框和真实框的最小闭合区域的对角距离. α和v分别为式(11)和式(12):

YOLOv4 总的损失函数公式为式(13):

其中,S2表示预测特征为S×S大小的网格, 每个网格单元会对应B个Anchor, 每个Anchor 通过模型推理计算得到相应边界框, 最后会得到S×S×B个边界框. 若预测框中无对象(noobj), 那么只需计算预测框的置信度损失. 其置信损失使用交叉熵误差, 并分为两部分: 有对象(obj)和无对象(noobj). 无对象的损失添加了权重系数 λ, 相当于降低了该部分的贡献权值. 分类损失也使用了交叉熵误差, 当第i个特征网格的第j个Anchor负责预测某个实际目标时, 则由该锚框生成的预测框计算分类损失值.

2 实验结果

实验设备的操作系统为Ubuntu 18.04, i7-6700 3.4 GHz CPU、NVIDIA CTX 3080Ti GPU, 使用PyTorch 框架.

2.1 烟火数据集

烟火数据集通过网络爬虫工具从网站获取, 如表1所示, 根据“火”“浓烟”“油田”等关键字从百度图片爬取的5 000 张图片, 构成本次实验的训练集. 训练集数据分为烟火图片和非烟火图片 (如图6所示). 由根据相应关键字爬取的500 张烟火数据和250 张非烟火数据构成验证集. 从网络视频库获取烟火视频和非烟火视频,进行视频帧提取获得5 000 张图像, 构成本次实验的测试集.

表1 数据集描述 (张)

图6 训练集部分数据

2.2 评估指标

实验使用准确率(accuracy)即正确识别烟火或非烟火的概率、误检率Pf即在无烟火发生时却判定为有烟火的概率、召回率(recall)、平均精度均值(mAP)和检测速度FPS 作为实验结果的评价指标.召回率表示样本中有多少正样本被正确预测. MAP 可以全面评价实验结果精度和查全率. 此外FPS 也是本实验的重要评价指标之一. 准确率、误检率及召回率公式如下:

其中,Tp表示被模型预测为正类的正样本数量,Tn表示被模型预测为负类的负样本数量,Fp表示被模型预测为正类的负样本数量,Fn表示被模型预测为负类的正样本数量.

2.3 训练过程

训练中将模型初始学习率置为0.001, 将影响梯度下降到最优的动量因子置为0.935, 将防止过拟合的权重衰减正则系数置为0.0005, 共训练6000 个批次. 图7为训练过程中的Loss 和MAP 变化曲线.

图7 损失和MAP

2.4 改进YOLOv4 的烟火识别与分析

为了综合评估基于改进YOLOv4 算法的烟火识别效果, 本文利用验证集图像数据进行烟火识别测试, 以验证本文模型的可靠性, 实验结果如图8 所示.

图8(a)中, 在烟火目标距离较远且目标较小时, 能够准确检测到目标.在图8(b)中, 图片包含大片暗黑色树木等类烟区域及红色灭火器、黄色抽油机等类火区域仍能够准确识别烟火目标.图8(c)为其他情况监测结果.

图8 模型验证结果

2.5 算法比较

为了证明改进算法的有效性, 在自建烟火数据集上, 使用改进后的算法和原算法分别进行实验, 并使用准确率、误检率、MAP、FPS 等指标进行比较. 其实验结果如表2 所示.

从表2 中可以看出, 本文算法和原算法相比, Fire分类和Smoke 分类的准确率分别提高了(5.3%, 6.6%),误检率分别降低了(1.1%, 1.6%),MAP值均优于原算法. 本文提出的算法模型显著提高了对于较小烟火目标的识别能力以及对于类似烟火目标的甄别能力. 能够在复杂的油田作业现场背景下过滤类似烟火目标的干扰并准确地识别出较小的烟火目标. 本文算法以43 fps的检测速度, 在满足烟火检测的实时性的要求下, 获得了平均97%的准确率和平均1.2%的误检率, 实验证明了本文算法在烟火实时检测中的可行性.

表2 模型性能对比

3 消融实验

为了验证改进算法的可行性, 对本文改进的部分进行了多组消融实验. 消融实验均使用相同的训练数据集和测试集, 相同的超参数设置. 消融实验结果如表3所示.

通过消融实验, 可得出以下几点结论, 首先, 从表3中第2 组实验可看出在重新设计特征融合部分后, 在模型特征融合层引入前两个残差块提取的细节信息,提高了浅层信息的利用率, 使其平均精度均值有了3 个百分点的提升, 其次从第3 组实验中可得出, 在添加CBAM 后, 评价指标MAP同样得到了改善, 其值增加了1.72%. 说明CBAM 可以有效地抑制噪声, 强化通道和空间中目标的信息. 最后一组实验中, 在FPN 和PAN 网络结构中, 使用PyConv 替代标准卷积, 减少细节特征的丢失, 增大局部感受野, 丰富了特征图的信息,其MAP值较上组实验提升了1.5 个百分点.

表3 消融实验结果

4 结论

针对油田作业现场复杂背景下的烟火小目标检测难的问题. 本文基于YOLOv4 网络模型, 并结合CBAM注意力机制、特征融合、金字塔卷积等方式进行优化和改进. 使用自建烟火数据集, 并使用K-means++聚类算法对烟火数据集进行锚框调整. 实验结果表明, 改进后的YOLOv4 检测模型能够满足实时检测的需要, 与原模型相比, 提高了准确率、MAP, 有效地改善了油田作业现场场景中通用检测器性能不足的问题. 本文针对油田有红色工装, 黑色油, 易与火和烟混淆等问题制作了针对该场景的数据集, 如果应用于其他场景, 例如学校、工厂等, 则需要对数据集做改变, 并重新训练模型.

猜你喜欢

烟火卷积聚类
基于3D-Winograd的快速卷积算法设计及FPGA实现
Fun in Spring Festival
烟火镇的盛典
从滤波器理解卷积
烟火镇的盛典
基于傅里叶域卷积表示的目标跟踪算法
基于DBSACN聚类算法的XML文档聚类
长明未安,烟火阑珊
基于改进的遗传算法的模糊聚类算法
一种层次初始的聚类个数自适应的聚类方法研究