1. 引言
在植被密布的电厂环境中,发生森林火灾可能带来巨大破坏,电厂周围的各类作业场所,如物流仓储、化工工厂和供电单位都对防火安全有极高的要求,并且多数作业环境都会明令禁止吸烟。然而,当前对这类敏感场所的监督手段仍然依赖于人工监查,容易出现漏报情况,这不仅无法有效节省人力成本,还会对企业安全和工作人员的生命财产构成严重威胁。近年来,随着人工智能技术的不断发展,智能检测技术日益成熟,并被广泛应用于危险行为检测。目前基于AI的吸烟行为检测可分为基于硬件设备和基于计算机视觉两种。传统研究方向基于硬件设备,主要依靠烟雾传感器、可穿戴设备、无线信号等硬件设备进行检测。这类方法具有很大的局限性,方法适应性较差,无法同时满足实际场景高精度检测和实时性需求。
随着AI的能力提升,结合计算机视觉技术与深度学习方法对监控获取到的视频及图片进行针对性的检测已成为该领域的主流方法,基于AI的智能检测方法主要包括以下三种主流检测方式[1]:1) 基于烟雾多特征检测:基于烟雾多特征的吸烟检测方法利用图像处理技术,通过提取烟雾颜色、外观和运动等特征并送入分类器进行判别。这种技术相比于烟雾探测器更适用于复杂、广阔的室外环境[2],同时提供了丰富的早期烟雾视觉信息。但实际上烟雾检测环境复杂多变,烟雾特征需要的预处理步骤较多,检测过程中需要进行大量的计算。2) 基于香烟目标检测:利用目标检测算法提取图像中的香烟目标是较为广泛的方法。根据其方法设计框架不同,香烟目标检测方法主要分为多步骤和单步骤算法[3]。多步骤目标检测在一阶段提取一定数量的目标候选区域,二阶段利用特征提取网络对这些候选区域进行区分和定位,把每个阶段提取出的特征用于下一层的图像处理。然而,该方法提高检测精度的同时增加了算法计算量和复杂度。单步骤目标检测方法直接从特征映射中输出目标边界框,大大提高了检测效率,适用于实时性要求高的场景,但更依赖网络的特征提取能力。另外,对整张图像提取特征无法有效利用图像局部信息,容易出现特征冗余和缺失问题。3) 基于吸烟动作检测:吸烟动作检测方法可分为人工特征构建和深度学习特征提取两种方式[4]。基于人工设定的吸烟动作可解释性强、特征模型构建简单,且不需要训练。但利用自身先验知识定义特征主观性较强,难以有效捕获数据之间的复杂关系。所以不能很好表征整个吸烟动作状态,导致模型泛化能力不强。深度学习特征提取方法相比于人工构建特征较为客观,但模型需要依赖大量样本训练,在训练样本匮乏的情况下难以实现。
综合来看,尽管基于香烟目标检测的方式应用较为广泛,技术更加成熟,具有较高的实时性,且能够很好地对监控设备获取的视频流进行检测,计算量比烟雾多特征检测更少,对数据样本的需求比吸烟动作检测更低。然而,在实际应用的场景中仍面临着一系列困境:在复杂环境下对香烟目标的识别能力仍然不足,在检测的过程中容易产生漏检和误判等情况。针对以上问题,本文提出基于改进YOLOv9[5]的吸烟行为检测方法YOLO-SSDA。本文在YOLOv9算法基础上做出如下改进:1) 引入注意力机制模块SimAM,提高网络的特征提取能力;2) 在算法的后处理阶段采用Soft-NMS算法替代传统的NMS算法,减少在物体定位密集场景下漏检较多的情况;3) 通过香烟和人体之间的距离定位关系降低香烟目标的误判率。本文综合采取网络采样、AI生成与现场拍摄等方式构建了实验数据集,并进行了大量实验测试,实验结果表明:本文提出的YOLO-SSDA算法可以显著提高吸烟行为安全监控水平,减少人工监查负担,及时检测吸烟行为,从而预防潜在的火灾风险,保障企业财产和工作人员的生命安全。
2. 相关工作
基于香烟目标检测方式的吸烟行为检测已有一系列的研究。Poonam等人[6]首次使用多步骤目标检测算法Faster RCNN进行吸烟检测,并且在自有数据集上取得了93.87%的准确率。多步骤目标检测算法虽然提高了香烟目标检测精度,但仍然不能满足复杂吸烟场景实时检测需要。因此,香烟目标检测大多基于检测速度更快的单步骤目标检测算法。YOLO系列算法是单步骤目标检测的典型算法。Liao等人[7]使用YOLOv3对公共场所的吸烟行为进行检测。YOLOv3利用了特征金字塔网络结构(feature pyramid network, FPN)将不同特征图上的特征进行融合,再利用融合得到的特征图进行预测,以此来提高香烟小目标的检测准确率。除YOLOv3外,YOLOv5也常被应用于吸烟检测研究。Zou等人[8]使用YOLOv5l作为基础模型,在自有吸烟检测数据集上取得了良好的检测效果。杨国亮等人[9]将Transformer引入YOLOv5s网络颈部模块,用于扩大特征图的感受野,减少模型误检率。
YOLO系列算法在提高检测效率的同时往往会牺牲一定的检测精度。Zhang等人[10]借鉴YOLOv5算法思想,基于自定义注意力机制模块和改进的残差网络模块设计了一种单步骤检测模型,通过主干网络提取小目标的语义信息和位置信息,利用YOLOv5的FPN结构和路径聚合网络结构PAN进行不同尺度的特征融合,提高小目标的检测精度。Yang等人[11]提出使用SSD (single shot multi box detector)单步骤检测算法对驾驶员异常驾驶行为进行检测,有效解决了包括吸烟在内的非法驾驶行为检测问题。
然而,现有的研究仍然存在不足,比如:对吸烟行为的识别能力不足,在环境背景复杂的情况下容易产生漏检和误判,难以在识别精度和识别效率上达到平衡。
3. 基于改进YOLOv9的吸烟行为检测方法:YOLO-SSDA
3.1. YOLOv9模型
YOLOv9在YOLOv7的基础上进行改进,提出基于PGI (Programmable Gradient Information)思想解决反向传播过程梯度信息丢失的问题。主要涉及三个改进:1) 通过结合用梯度路径规划CSPNet和ELAN[12]设计了一种广义的高效层聚合网络GELAN (广义高效层聚合网络),通过结合两种神经网络架构展现出轻量级、快速和精确的巨大优势,在目标检测方面,GELAN在不同的计算块和深度设置下表现强大且稳定,可以被广泛扩展为适用于各种推理设备的模型。2) 在训练模式中引入辅助可逆分支(Auxiliary Reversible Branch),帮助backbone更好地获得丰富的返回梯度信息,使得backbone具有更高的表现。3)在训练模式中将特征金字塔获取的所有目标对象的梯度信息进行多级辅助信息(Multi-level Auxiliary Information)聚合,传递给主分支进行权重的更新。这种设计使得Yolov9在保持高精度的同时,拥有更快的推理速度和更好的整体网络效率。但在遇到识别香烟这种小目标的情况时,仍然存在识别能力不足、容易漏检、误判率高等问题。因此,本文在YOLOv9的基础上进行改进:在YOLOv9的网络结构中引入SimAM注意力机制[13],以增强网络对香烟特征的提取能力;在后处理阶段使用Soft-NMS[14]方法替代传统的NMS方法,以减少漏检的可能性;引入人体和香烟之间的距离关联方法,利用人和香烟之间的距离关系减少对香烟目标的误判率。
3.2. 引入SimAM注意力机制
注意力机制(Attention Mechanism)是一种在计算能力有限的情况下使模型可以忽略不相关信息,将计算资源分配给更重要的任务,从而提高模型在复杂背景下的特征提取能力,同时解决信息超载问题的资源分配方案。SimAM[13]是一种轻量型通用注意力模块,与现有的通道/空域注意力模块不同,它不会增加网络参数的数量,具有即插即用的特点,能在避免了额外参数计算的同时使提炼的特征能够更好地聚焦主体目标。其结构如图1所示。
Figure 1.SimAM structure diagram
图1.SimAM结构图
为了加强网络结构对香烟特征的提取能力,本文提出的YOLO-SSDA方法将注意力机制模块SimAM嵌入到YOLOv9的网络结构中,引入后的网络结构如图2所示。
SimAM利用其能量函数计算注意力权重,使得用以识别香烟的活跃神经元会对周围信息匮乏的神经元产生抑制,以减少背景中的其余信息对香烟特征的干扰,从而突出香烟的关键特征,增强对香烟特征的提取能力。具体计算过程如公式(1)~(3)所示[15]。
(1)
(2)
(3)
表示输入特征图中每个通道的平均值,
表示输入烟雾特征图中每个通道的方差。E表示每个神经元的能量函数,当前神经元的能量越低,和相邻神经元之间的差异越大,那么它的重要程度就越高,其中
表示超参数,t表示目标神经元。为了防止E值过大,采用sigmoid函数来限制E值的大小。
表示增强后的特征图,由原始输入特征图X为与采用sigmoid函数处理过后的神经元的能量E进行点乘运算
所得。
Figure 2.YOLOv9 introduces SimAM
图2.YOLOv9引入SimAM
3.3. NMS后处理改进
在目标检测中,非极大值抑制(Non-Maximum Suppression, NMS)可以用来抑制置信度较低或者重复定位的误检框,筛选出置信度较高的检测框。YOLOv9采用传统的NMS算法,将预测框按置信度从高到低排序,计算最大置信度的预测框和剩下的预测框的交并比IoU,并移除所有大于IoU阈值的预测框。从而有效减少冗余的预测框,但是也存在着一些缺陷,比如:如果一个物体在另一个物体重叠区域出现,即当两个目标框接近时,分数更低的框会因为与之重叠面积过大而被删掉,从而导致该物体检测失败并降低算法平均检测率,这在多个物体位置较集中的场景下尤为明显。这是由于NMS算法中每次都直接将交并比IoU大于阈值的预测框直接删除导致。
本文提出的YOLO-SSDA算法使用Soft-NMS[14]替代传统的NMS算法。Soft-NMS对于交并比IoU较高的预测框并非直接删除,而是设定惩罚函数来降低其置信度,越是重叠程度高的预测框的得分降低就越严重。为了解决函数连续性的问题,选择高斯函数为权重函数,实现的Soft-NMS算法分数重置函数如公式(4)所示。
(4)
其中,M为置信度最高的预测框,
为第i个预测框,
是第i个预测框的置信度,
表示高斯函数的方差,
为设定的阈值。
3.4. 目标距离关联算法
由于是否出现吸烟行为的判断主要基于对香烟目标的检测,容易导致误判的原因往往是由于进行小目标检测时出现分类错误,将近似于香烟的微小物体错误判断为香烟。因此,对判断为香烟的小目标检测结果进行进一步过滤,能够在一定程度上降低误判率。在现实的吸烟场景中,吸烟行为的出现一般需要同时具备两个基本条件——人和香烟,而且两者之间的距离往往具备一定的条件[16]。本文通过同时定位人和香烟,根据人与香烟的中心点之间的距离对两者之间的关联性进行判断,当两者距离小于设定阈值时,确认存在吸烟行为。其中,人的中心点坐标
如公式(5)~(6)所示:
(5)
(6)
由于香烟检测框面积较大时,对香烟进行检测的误判率较低,本文仅对香烟检测框面积小于设定阈值的目标进行筛选。当香烟检测框的面积
时,香烟中心点坐标
如公式(7)~(8)所示:
(7)
(8)
当两者中心点坐标之间的距离
时,表明人与香烟存在关联性,将识别到的香烟检测框进行保留,否则将其过滤。
4. 实验与分析
4.1. 数据集选取
Table 1.Dataset division
表1.数据集划分
参数 |
图像数量/张 |
总数据集 |
7561 |
训练集 |
5292 |
测试集 |
1134 |
验证集 |
1135 |
吸烟检测领域没有专门的开源数据集,特别是在危险施工场所等需要严格管控吸烟行为的吸烟样本更是罕见[17]。因此本文不仅在网络上对吸烟行为进行收集,还采用AI图像生成方式产生所需场景的吸烟行为数据。本文通过互联网收集了吸烟行为图像1092张、人体图像2689张,通过AI图像生成方式收集吸烟行为图像532张。通过旋转、对称方式进行对吸烟行为图像进行数据扩充,将吸烟行为图像增加到4872张,结合互联网收集的2689张人体图像,总计7561张。本实验使用的数据集信息如表1所示。
4.2. 实验环境
本文使用Linux操作系统,在GeForce RTX 3090显卡的基础上进行训练,具体实验环境如表2所示。
Table 2.Experimental environment configuration
表2.实验环境配置
参数 |
配置 |
CPU |
AMD Ryzen Threadripper 3970X |
GPU |
GeForce RTX 3090 |
系统环境 |
Linux |
语言 |
Python3.7 |
pytorch环境 |
1.12.0+cu116 |
4.3. 实验评估指标
本文通过精确率(Precision)、召回率(Recall)、平均精度均值(mAP50)作为评价指标[18]。
精确率Precision是指被正确分类的正样本数量与所有被分类为正样本的样本数量之比。它衡量了分类器在预测为正样本时的准确性。精确率Precision的计算方法如公式(9)所示:
(9)
其中,TP (True Positive)表示将正样本分类为正样本的数量,即正确预测的正样本数,FP (False Positive)表示将负样本分类为正样本的数量,即错误预测的负样本数。
召回率Recall指被正确分类的正样本数量与所有真实正样本的数量之比。它衡量了分类器找到所有正样本的能力。召回率Recall的计算方法如公式(10)所示:
(10)
其中,FN (False Negative)表示将正样本分类为负样本的数量,即错误预测的正样本数。
AP是目标检测任务中用于评估单个类别的精度指标,它衡量了模型在不同置信度下的准确性。平均精度均值mAP是所有类别的AP的平均值,用于综合评估目标检测模型的性能。平均精度均值mAP的计算方法如公式(11)所示:
(11)
4.4. 实验结果分析
网络模型训练时,batch-size设置为8,imgsize设置为[640, 640],训练迭代次数设置为200次。训练后得到的精确率、召回率、mAP50实验结果如图3(a)~(c)所示。
由图3可知,随着训练次数逐渐接近200,本文提出的YOLO-SSDA方法的精确率precision和平均精度均值mAP均达到90%以上,召回率recall接近90%,说明本文提出的YOLO-SSDA方法在精确率、召回率、mAP50上均拥有良好的表现。
(a) 精确率折线图 (b) 召回率折线图
(c) mAP折线图
Figure 3.Model test results
图3.模型测试结果
为了对本文提出的YOLO-SSDA方法进行评估,采用不同的网络结构,在相同的实验环境及数据集上进行实验,并对实验得到的结果进行比较。实验结果如表3所示。
Table 3.Performance of different algorithms
表3.不同算法的性能
名称 |
精确率P/% |
召回率R/% |
mAP50/% |
SSD |
76.4 |
68.8 |
70.4 |
Faster RCNN |
80.7 |
74.5 |
75.9 |
YOLOv5 |
89.8 |
79.2 |
85.7 |
YOLOv7 |
80 |
86.9 |
87.2 |
YOLOv9 |
93.2 |
83.6 |
91.6 |
YOLO-SSDA |
94 |
89.6 |
94.4 |
由表3的可知,与常见的各类目标检测方法相比,本文提出的YOLO-SSDA算法在精确率、召回率、mAP50上都达到了最优的效果,具有良好的检测性能。
为了验证改进策略的有效性,用相同的实验环境和数据集,进行消融实验来评估各个改进策略。消融实验检测结果如表4所示。
Table 4.Results of ablation experiment detection
表4.消融实验检测结果
SimAM |
SoftNMS |
距离关联 |
精确率P/% |
召回率R/% |
mAP50/% |
|
|
|
93.2 |
83.6 |
91.6 |
√ |
|
|
92.9 |
84.2 |
92.1 |
|
√ |
|
91.8 |
84.5 |
91.5 |
|
|
√ |
95.8 |
83.4 |
95.6 |
√ |
√ |
√ |
94 |
89.6 |
94.4 |
由表4可知:引入了SimAM注意力机制后,相比使用传统NMS算法的YOLOv9模型的召回率提高了0.6%,mAP提高了0.5%。引入SoftNMS后,能在精确率稍微下降的情况下提高0.9%的召回率。引入了目标距离关联算法后,能够在召回率不受影响的情况下提高2.6%的精确率和4%的mAP50。引入了SoftNMS、SimAM和目标距离关联算法的YOLO-SSDA相比YOLOv9,准确率提高了0.8%,召回率提高了6%,mAP50提高了2.8%。
本文提出的YOLO-SSDA模型同时具有较好的实时性。通过对550张图像进行实时检测,统计得出检测过程中各步骤的平均耗时为:预处理0.2 ms,推理31.4 ms,NMS处理7.4 ms,即检测一张图像的平均耗时为39 ms。
5. 结论
针对当前复杂工作环境下吸烟行为检测方法存在的识别能力不足、容易漏检、误判率高和实时性不足问题,提出了基于改进YOLOv9的吸烟检测方法YOLO-SSDA。YOLO-SSDA在实时性较高的YOLOv9算法基础上引入自注意力机制SimAM加强模型特征提取能力,在后处理阶段使用Soft-NMS算法替代传统NMS方法以降低漏检率,此外,YOLO-SSDA通过香烟和人体之间的距离关联来降低吸烟检测的误判率。实验结果表明本文提出的YOLO-SSDA方法对吸烟行为具有良好的检测效果和实时性能,与流行的目标检测方法相比拥有更准确的检测能力。