基于深度学习的电厂消防器材移动检测研究∗
2024-01-29田维青唐云鹏王鑫靓景文林
田维青,唐云鹏,周 超,王鑫靓,景文林,张 萌
(1.贵州黔源电力股份有限公司,贵州 贵阳 550002;2.南京南自信息技术有限公司,江苏 南京 210003;3.东南大学电子科学与工程学院,江苏 南京 210096)
随着我国经济社会的高速发展与各项基础建设的不断推进,各种大小场景、事务中的安全隐患日益增多,安全问题越来越得到社会的广泛关注,其中消防安全是安全问题中的重要一环,许多场景都格外重视消防安全,电厂也不例外。电厂是电力系统的核心,电厂的消防安全关系到电厂员工的生活安全与生产安全,关系到国家能源安全与电力系统的安全稳定以及广大公民的民生福祉[1]。因此对于电厂而言,为了避免经济损失、避免给现场员工带来安全威胁,消防安全至关重要,防患于未然的同时,时刻监控消防器材的状态是对消防安全的又一有利保障。
随着计算机技术与人工智能的飞速发展,越来越多需要大量人力的工作开始交付由计算机或者机器人来完成。智能是知识与智力的总和,人能够获取知识并利用知识解决问题,比如图像识别等。人工智能是通过计算机编程,让计算机拟合人类学习知识与解决问题的能力[2]。通过监控摄像头实时拍摄消防器材状态并通过人力进行观察,这种传统方法智能化程度低,人力与时间消费大,如果监控人员疏忽懈怠,无法及时发现消防事故地点附近的消防器材移动,会对电厂与电厂人员安全造成无法估计的严重后果[3],这种方法无法真正实现对器材全天候无死角的监控。而利用人工智能领域的深度学习目标检测技术[4],可以随时将监控摄像头拍摄的实时图片传送到服务器,利用算法进行检测识别,真正实现对消防器材全天候的监控,让电厂具备更先进的监控技术,减少人工成本的使用,使电厂更加数字化、智能化,推动电厂朝更先进的方向快速发展。
因此,利用器材移动检测技术对消防器材进行智能检测,及时发现器材的实时状态,发现问题后进行预警,是电厂消防安全体系的重要组成部分[5]。器材移动检测技术分为两个部分:首先是利用目标检测算法对摄像头获取的视频中的每一帧进行检测识别,找出每一个消防器材所在的位置以及分类;其次就是通过对比预置帧与当前帧,判别消防器材是否移动。
传统的计算机视觉图像处理算法有基于颜色、纹理、梯度等类型,这些方法存在细节处理弱、泛化性不强的缺点,而深度学习神经网络可以有效解决传统算法的这些问题[6]。目前国内对消防方面的深度学习应用较为薄弱,主要是应用基于卷积神经网络的烟雾识别算法来进行森林火灾的检测,而对消防器材的检测识别较少。深度学习目标检测的任务是找出图像中所有感兴趣的目标并确定他们的位置,是人工智能计算机视觉领域的核心问题之一[7]。现有的目标检测网络包括两阶段检测器如Fast-RCNN、Faster-RCNN 等,一阶段检测器如SSD、YOLO、EfficientDet、CenterNet 等。两阶段检测器精度较高,先提取候选框并调整成固定大小,再输入深度神经网络进行分类以及边界框的回归矫正[8],但由于选择搜索等模板匹配的过程以及输入深度神经网络后计算大量重复而没有共享计算,导致运算过慢,检测速度不能满足实时性,两阶段目标检测算法适合在对准确性需求超过实时性的领域应用,比如医疗等;而一阶段检测器将目标检测转换成一个回归问题,利用图片作为网络输入,经过一个深度神经网络,将回归信息与类别信息一起输出[9],使用逻辑回归预测边界框的置信度评分[10],极大提升了目标检测速度。
小目标检测是目标检测技术中的重难点,使用电厂工业电视摄像头采集现场图片对工业现场消防器材进行检测,器材目标不仅分辨率低,且易出现阻挡密集的情况。小目标具有分辨率低、特征表达不充分,检测难度高[11]等问题。针对小目标检测,可以使用多尺度学习、数据增强扩充数据集等方式来提高对小目标的检测性能。
当前目标检测算法都是基于anchor 的,网络输出在基础anchor 上的长宽以及中心点的偏移量来完成对目标的回归。anchor-based 的目标检测网络是非常有效的,但是依然存在一些问题:为了确保与GT(Ground Truth)框,也就是真实框,充分重叠,需要大量anchor boxes,在正负样本之间会造成巨大的不平衡,负样本数量远远超于正样本,减缓训练速度;anchor 的使用引入了许多超参数和设计选择,很大程度上是通过自组织启发法做出的,当与多尺度体系结构相结合时,情况会变得更加复杂;anchor 难以平衡小目标召回率与计算成本之间的矛盾,导致了小目标的正样本与大目标的正样本极度不均衡,使得模型更加关注于大目标的检测性能,从而忽视了小目标的检测。针对这些问题,可以采用anchorfree 方法,例如CornerNet、FCOS 等。
对于需要大数据训练的深度学习目标检测算法来说,拥有一个样本数量多、种类场景多样化的数据集,将模型输出结果与真实结果对比计算损失函数,计算梯度,利用反向传播算法对模型进行迭代优化,是至关重要的。公开数据集中关于消防安全的比较少,然而对比于跑冒滴漏这种不常见的现象,消防器材是随处可见的,图片获取途径较多,比如网络搜索或者实地拍摄。同时,消防器材的多样性、分辨率大小以及遮挡密集等,在手工制作数据集时也易于实现。
本文以YOLOv5 为基础,收集消防器材图片并标定数据集,针对消防器材的特点改进YOLOv5 算法,用厂站现有工业电视摄像头获取现场实时图像数据,对区域内指定消防器材位置是否移动进行检测,若区域内指定消防器材位置移动超过一定时间,向平台发出警告,提取关键帧保存,从而杜绝电厂安全隐患。本文的贡献有以下几点:①收集消防器材图片构建消防器材数据集;②给YOLOv5 算法增加一个尺度为4 倍的下采样输出,专注于改善小尺度器材的检测;针对器材减小最大池化层池化核尺寸;添加Transformer Encoder;替换FCOS 检测头。
1 YOLOv5 原理
YOLOv5 算法的基本原理是先对图像特征提取,将提取到的特征输入特征金字塔网络和路径聚合网络进行多尺度融合,最后经由检测头输出三种不同尺度的特征图,分别适合检测大、中、小三种尺寸的目标,在训练阶段区分正负样本计算损失函数后反向传播,在检测阶段进行非极大值抑制得到最终结果。
1.1 输入端
YOLOv5 算法需要对图像进行预处理,使图像尺寸适应网络输入,训练时采用数据增强以提高模型性能。
YOLOv5 算法使用自适应图片缩放的图像预处理方法。常用的图像缩放方法是将原始图片统一缩放到一个标准尺寸,再送入检测网络。缩放填充后不同尺寸图片填充的黑边大小都不同,而如果填充的比较多,就会出现信息冗余、影响推理速度的问题。YOLOv5 算法对原始图像自适应地添加最少的黑边,将长边缩放为需要的尺寸,短边等比例缩放,将缩放后的短边填充为最小的32 的倍数。训练时不采用自适应图片缩放而是采用传统填充的方式,而在测试、使用模型推理时,采用自适应图片缩放的方式,可提高检测、推理的速度。
YOLOv5 算法与YOLOv4 算法一样,训练时在输入端使用Mosaic 数据增强。Mosaic 数据增强参考CutMix 数据增强(用两张图片进行拼接),采用4 张图片进行随机缩放裁剪排布的方式进行拼接[12],如图1 所示,大大丰富了数据集,随机缩放丰富了许多小目标,增强检测网络的鲁棒性,同时可以减少训练占用GPU 显存。在使用网络进行推理时不使用Mosaic 数据增强。
图1 Mosaic 数据增强示例图
1.2 YOLOv5 网络结构
YOLOv5 的网络结构由三部分组成:Backbone、Neck、Head,如图2 所示。
图2 YOLOv5 网络结构图
Backbone 部分由YOLOv4 的CSPDarkNet 改进而来,首先是Focus 层,将特征图切片后拼接再经过一个卷积层,进行一次下采样;随后是四个卷积层与BottleneckCSP 层的组合,每一个组合都进行一次下采样。BottleneckCSP 是一种残差模块,可以更有效地提取特征,将基础层的特征映射划分为两部分,通过跨阶段层次结构将它们合并,在减少计算量的同时可以保证准确率。最后一个组合卷积层与BottleneckCSP 层中间有一个SPP 层,使用不同尺寸的池化核实现不同尺度的融合,比单纯使用k×k最大池化,更有效地增加主干特征的接受范围,显著分离最重要的上下文特征。主干网络Backbone 一共经过5次下采样,每次下采样特征图尺寸变为原来的1/2,第五次下采样输出的C5 特征图尺寸是初始的1/32,也就是32 倍下采样。将C3 特征图(8 倍下采样)、C4 特征图(16 倍下采样)、C5 特征图输出到下一部分Neck。YOLOv4 的CSPDarkNet 结构如图3所示,可以看出YOLOv5 的Backbone 主要改进了残差模块,并且使用了Focus 替换第一个下采样模块以及在残差模块之间穿插卷积层。
图3 YOLOv4 CSPDarkNet 结构图
Neck 由特征金字塔网络FPN(Feature Pyramid Network)和路径聚合网络PAN(Path Aggregation Network)组成,深层特征语义信息强,定位信息弱,浅层特征语义信息弱,定位信息强。FPN 自顶向下传达强语义特征,将深层特征上采样后与浅层特征融合,增强语义表达,PAN 自底向上传达强定位特征,将FPN 融合后的结果用卷积层再次下采样后与FPN 深层特征再次融合,增强定位能力。对比YOLOv4 的Neck 结构采用普通的卷积操作,YOLOv5 采用Backbone 中使用的BottleneckCSP 结构,加强特征融合能力。
Head 有三个分支,分别对应尺寸为32 倍、16倍、8 倍下采样的特征图,经过卷积层预测结果。在YOLOv1 中,直接对box 的位置进行预测,由于没有类似RCNN 系列的候选框生成,网络在前期训练时非常困难,难以收敛。自YOLOv2 开始,引入了anchor box 机制,通过提前筛选(K-means 聚类)得到的具有代表性先验框anchor,网络回归位置信息时预测box 中心相对于网格坐标的偏移量与box 宽高相对于anchor 宽高的偏移量,如图4 所示,使得网络在训练时更容易收敛。
图4 anchor 示意图
YOLOv5 输出三种尺度的特征图,每一种尺度的特征图都各自对应三个anchor。假如输入尺寸为640×640,32 倍下采样特征图输出尺寸为20×20,将图片分成20×20 个较大的网格,对应尺寸较大的三个anchor,感受野最大,适合检测大目标;16 倍下采样特征图输出尺寸为40×40,将图片分成40×40 个中等的网格,对应尺寸中等的三个anchor,适合检测一般大小的目标;8 倍下采样特征图输出尺寸为80×80,将图片分成80×80 个较小的网格,对应尺寸较小的三个anchor,感受野最小,适合检测小目标。每一个网格预测三个box 的anchor 偏移量、confidence以及分类概率。
1.3 损失函数
损失函数是YOLO 目标检测算法的重要部分。第一代的YOLO 检测器中,主要使用总方误差来优化,在YOLO 算法的发展中对置信度与分类概率改进使用交叉熵损失,以及对定位回归使用IoU-Loss。对计算真实框GT(Ground Truth)落在哪个网格内,利用四舍五入规则,找出最近的两个网格,将这三个网格都认为是负责预测该GT。GT 与anchor 计算宽高比,如果宽高比例大于设定阈值,GT 与anchor 匹配度不够,将该anchor 过滤暂时丢掉。正样本参与回归定位、置信度confidence 以及分类概率的loss计算,负样本只参与置信度的loss 计算。
2 改进的YOLOv5 算法
本文在原有YOLOv5 算法的基础上改进,增加一个尺度为4 倍的下采样输出,专注于改善小尺度器材的检测;针对器材减小最大池化层池化核尺寸;添加Transformer Encoder;替换FCOS 检测头。改进的YOLOv5 算法网络结构如图5 所示。
图5 改进的YOLOv5 网络结构图
2.1 增加输出块
在原本的YOLOv5 算法中,PAN 输出中有3 个不同尺度的特征图C3、C4、C5,分别对应8、16、32 倍下采样的尺度。下采样倍数越大,越适合检测大目标,而在监控摄像头场景下,消防器材尺寸一般比较小,同时还有器材遮挡等情况的出现,因此,在改进的YOLOv5 算法中,添加一个额外的C2 输出块,它的特征图尺寸为4 倍下采样,有助于检测尺寸稍小的消防器材。
2.2 减小SPP 层池化核尺寸
在原本的YOLOv5 算法中,SPP 层使用不同的池化核,实现不同尺度的融合以增加接收域,使用了3 个内核大小:13×13、9×9、5×5。将其修改为更小的池化核:7×7、5×5、3×3,使用较小的核有助于更容易地检测遮挡严重的器材以及尺寸较小的器材,提高整体消防器材检测性能。
2.3 Transformer Encoder 模块
使用Transformer Encoder 来代替路径聚合网络中的BottleneckCSP 模块,Transformer Encoder 结构如图6 所示,一共有两个残差连接,第一个残差连接先通过层间归一化后使用多头注意力,多头注意力将原本的特征由高维投影到低维多次,将多次投影的自注意力结果拼接后投影回高维,随后是Dropout随机舍弃一部分神经元,该操作可以缓解神经网络过拟合,最后与shortcut 路径也就是输入特征相加。自从Transformer 问世以来,自然语言处理(Natural Language Processing,NLP)领域中广泛使用的循环神经网络(Recurrent Neural Network,RNN)逐渐被Transformer 取代,Transformer 成为NLP 的主流。随着DETR(End-to-End Object Detection with Transformers) 目标检测器与视觉Transformer 的问世,Transformer 开始应用于计算机视觉领域,是目前的主流趋势,对计算机视觉与自然语言处理大一统起到了推动作用。Transformer 具有独特的全局注意力机制,效果比原先没有注意力机制要更好。由于在输入Transformer 之前已经通过卷积神经网络提取特征,卷积操作给特征图已经带来位置信息,因此在使用Transformer Encoder 时候无需再添加位置编码。
图6 Transformer Encoder 结构图
2.4 替换检测头
原版的YOLOv5 在Head 部分仅使用一个卷积将不同尺度的回归与分类信息全部预测,本文将其用FCOS 的检测头替换,检测头结构如图7 所示。将分类与回归分开预测,在特征图的每个位置上预测C个分类参数与4 个距离参数(目标左侧距离l,上侧距离t,右侧距离r以及下侧距离b)以及1 个center-ness 参数反映该点距离目标中心的远近程度,不再使用anchor。
图7 FCOS 检测头结构图
3 实验
3.1 数据集
在基于大数据的深度学习算法中,数据集是保证算法性能的重要一环,保证数据种类、场景(遮挡、光照)、尺寸的多样性是算法高泛化性和鲁棒性的保证。由于公开数据集中关于消防器材比较少,选择实地拍摄微型消防站图片以及截取监控摄像头视频帧采集目标图片,手工标定YOLO 格式标签。数据集包含1 739 张图片,包含消防帽、消防桶、灭火器、消防斧、消防铲、灭火器箱六个目标分类。其中姿态、遮挡、疏密、光照、尺寸等有多样性,加强了目标检测的挑战性,按照9 ∶1 的比例划分训练集和验证集。
3.2 测试指标介绍
在目标检测任务中,精度precision 是被检索目标的准确率,召回率recall 是正确目标被检索的比例。门限iou_threshold 是在计算precision 和recall 时匹配检测框与真实框的IoU(Intersection over Union,交并比)阈值,只有IoU 大于这个阈值才算匹配成功。每一个类别都可以计算出其precision 和recall,取不同的置信度阈值conf_threshold,每个类别都可以得到一条PR 曲线,曲线下的面积就是平均精度(Average Precision,AP)的值。mAP 就是所有类的AP 值求平均。mAP@.5 是门限iou_threshold 取0.5 时的mAP,mAP@.5:.95 是门限iou_threshold 取0.5 到0.95 间的多个值时的mAP 的均值。
3.3 训练与实验结果
本次实验环境为python3.9、pytorch1.12、cuda11.6、cudnn8.3.2,硬件平台为Nvidia GeForce RTX 2080Ti GPU。
采用迁移学习技术,将官方在COCO 数据集上的预训练权重作为初始权重,在初始模型的基础上根据改进的YOLOv5 算法改变模型结构。根据自己的数据集微调训练150 个迭代轮次,完成源域也就是COCO 数据集到目标域也就是消防器材的迁移。训练过程中,目标检测评估指标mAP@.5 达到最大0.927。保存最好的模型文件,训练结果如图8 所示,测试图片结果如图9 所示。
图8 改进的YOLOv5 算法训练结果图
图9 改进的YOLOv5 算法检测消防器材测试图
使用相同的超参数、数据集以及预处理过程,使用原本的YOLOv5 算法以及单独加入各个改进方面的YOLOv5 算法进行消融实验,训练150 个迭代轮次,算法训练结果对比如表1 所示。单独加入各个改进方面的YOLOv5 算法比原本的YOLOv5 算法都有性能的提升;改进的YOLOv5 算法相比于原本的YOLOv5 算法准确率precision 和召回率recall 均有提高,算法最重要的评估指标mAP@.5 提升了0.028 3,mAP@.5:.95 提升了0.021 3。改进后的YOLOv5 算法在检测效果上明显有了较大的提升,使用改进后的YOLOv5 算法具有很高的可靠性。
表1 消融实验结果表
将训练好的模型转化TensorRT 模型,部署在Nvidia GeForce RTX 2080Ti 的GPU 服务器上。TensorRT 是一款高性能深度学习推理SDK,包含深度学习推理优化器和运行环境,可为深度学习推理应用提供低延迟和高吞吐量。
4 消防器材移动检测
对于每一个摄像头,初始化每一种类器材的个数和位置。设置规则区域和超参数检测间隔,若消防器材搬离原位置或者搬移出指定区域,持续一段时间后,则判断消防器材移动,并保存移动前后关键帧,如图10 所示,直到消防器材回归原位。
图10 器材移动前后关键帧
搬离原位置是一个比较严格的规则,对于初始状态的每一个消防器材,假定该器材为m,在当前帧寻找是否有位置相近的同类器材,如果没有,则判断器材m 移动;如果有位置相近的同类器材n,计算器材m 与器材n 检测框之间的IoU,若IoU 大于一定阈值,则判断器材m 没有移动,否则判断该器材移动。
搬移出指定区域是一个比较宽松的规则,需要为每一个摄像头指定规则区域。规则区域可以为每一个目标器材单独设置,检测到目标后在目标周围自动生成规则区域;也可以单纯地设置规则区域是摄像头画面区域,或者针对每一个摄像头,手动设置规则区域。本文使用的方案是针对每一个摄像头手动设置规则区域,对于每一类消防器材,若规则区域内器材数量减少,则判断器材移动。
5 结束语
目前对消防方面的深度神经网络应用较为薄弱,对消防器材的检测识别较少。本文建立具有多样性的消防器材数据集,通过增加输出尺度、减小池化核尺寸、添加Transformer Encoder、替换FCOS 检测头改进了深度神经网络目标检测YOLOv5 算法,以对消防器材进行检测并且判断移动,对六种不同的消防器材有很高的识别准确率,为电厂消防安全体系提供了质量保证。