基于改进型SSD的视频烟火检测算法
2021-12-14张海刚杨金锋
石 磊 张海刚 杨金锋
1(深圳职业技术学院粤港澳大湾区人工智能应用技术研究院 广东 深圳 518055)2(中国民航大学电子信息与自动化学院 天津 300000)
0 引 言
火灾是容易发生且具有严重破坏性的灾害,对人类的财产和生命安全都造成重大的威胁。突发性的火灾蔓延速度很快,及时、准确地发现起火点,对于火灾的预警和扑救具有非常重要的作用。因此,火灾的识别和检测一直是研究的热点问题。
早期的烟火检测大多是利用各类硬件设备,如烟雾传感器、温度感应器、光敏火焰探测器等[1]。但这些传感器需要预先安装,不仅耗费资源,而且容易受到外界环境的干扰,导致出现灵敏度降低、误报和漏报等情况。随着监控系统的普及和图像处理技术的发展,基于视频的烟火检测方法具有响应及时、适用范围广和智能化等优势,逐渐成为主流方法。此类方法主要是结合视频图像中烟雾和火焰的物理特征进行检测[2],并取得了一定的检测效果,但同时存在特征提取复杂、抗干扰性差、误报率高和泛化性能弱等缺点。近年来,深度学习的方法被应用到视频烟火检测领域中,并使检测效果得到较大程度的提高。但是已有算法还不够完善,尤其是对视频中的小尺度烟火目标检测效果较差,这对于火灾的早期预警是不利的。
为了进一步提高视频烟火检测效果,本文提出一种基于改进型SSD[3]的视频烟火检测算法。该算法以DenseNet[4]网络结构作为算法的基础特征提取网络,该网络是一种稠密连接型网络,通过融合浅层特征与深层特征来实现网络的特征重用,极大地增强了网络的特征提取和表达能力。并且本文算法在损失函数中引入Focal loss函数,解决算法中样本不均衡问题,增强算法对复杂场景下烟火目标的学习能力,进一步提高模型检测精度。
1 相关工作
目前,基于视频的烟火目标检测算法主要有:传统算法和基于深度学习的检测算法。传统算法中主要是利用烟火的物理特征进行判断,如颜色、轮廓、闪烁频率和运动特征等。Chen等[5]在RGB和HIS颜色空间中利用火焰的动态特性和不规则性来实现对火焰像素的分类,但该方法误报率较高。Celik等[6]利用 YCrCb颜色空间中颜色分量和亮度分量可分离的特点,研究了一种基于规则的火焰像素分类模型。该方法具有较好的检测效果,但是对于远距离小区域火焰缺乏较好的检测精度。Foggia等[7]结合火焰的形状、颜色和运动特征对火焰进行实时检测,但该方法仍然存在较高的误报率。严云洋等[8]提出了一种使用维度加权模式动态纹理特征进行烟火检测的算法。曾思通等[9]提出了一种结合多种火焰特征的烟火实时检测算法。这两种方法使得烟火检测算法取得了更大的进展。但是上述传统的烟火检测方法均基于人工设计的烟火特征,在复杂场景下不能较好地表达烟火目标,并且容易将疑似烟火目标误检为烟火目标,导致识别精度下降。
近年来,深度学习已经成为解决计算机视觉问题的一种非常有效的方法,它已被广泛应用于多个领域,如物体检测[10]、物体识别[11]和跟踪[12]。深度学习不同于传统算法,它能够从大量数据中自动提取特征,并实现特征表达和分类器预测同步优化运算。将深度学习思想应用于视频烟火检测任务,已成为当前重要的研究方向。Frizzi等[13]利用卷积神经网络自动提取的烟火特征进行烟火目标检测。Yin等[14]将批规范化卷积层替换卷积神经网络中的原始卷积层,搭建了一种深度规范化卷积神经网络(DNCNN) ,并将其应用于烟雾检测。该算法解决了传统卷积神经网络训练过程出现的梯度弥散和过拟合的问题,并通过对训练样本使用数据增强技术,解决了训练样本不足的问题。洪伟等[15]融合了区域全卷积网络(R-FCN)和残差网络(ResNet)的思想,搭建了一种全新的网络结构用于烟火目标的检测。该算法首先使用基础特征提取网络进行特征提取,然后使用区域全卷积网络进行目标区域确定,最后使用残差网络对目标区域进行再判断,以提高模型的检测精度。Horng等[16]利用卷积神经网络学习火焰的HSI颜色模型特征,并使用网络学到的特征来分离图像的火焰区域。Hu等[17]使用光流法和长短期记忆网络单元(LSTM)构建深度卷积长周期网络(DCLRN)进行火灾实时检测,该方法具有更好的实时性和准确性。
2 本文算法
基于深度学习的目标检测算法通常可以分为两种,一种是两阶段的目标检测算法,经典算法有R-CNN[18]、Fast RCNN[19]、Faster RCNN[20]等;另一种是单阶段的目标检测算法,经典算法有YOLO、SSD等。相比现有的两阶段目标检测算法Faster-RCNN和单阶段的目标检测算法YOLO[21],SSD算法在检测效率和精度上达到了更好的平衡。SSD以VGG-16[22]作为其基础的特征提取网络,并在VGG-16之后添加一系列的卷积层,使用多个卷积层的特征进行预测。SSD算法在实现较好的检测效果同时兼顾了检测速度,但同时存在一些问题。由于其使用conv4_3这一低层次的特征层进行小目标检测,导致其对小尺寸目标的检测效果并不十分理想。主要原因是低层卷积层虽然能更好地提取空间位置信息,但是缺乏高级的语义信息和抽象特征,导致最终训练的模型没有足够的精确度。其次,由于SSD是直接在所有参与预测的特征图上直接生成大量的先验框,其中与真实目标匹配被判定为正样本的先验框较少,被判定为负样本的先验框数目较多,导致送入算法中的正负样本比例失衡,影响了最终训练的模型的检测精度。
本文将SSD模型应用于视频烟火检测任务中,通过大量仿真实验发现:在火灾发生的早期,由于烟火目标区域很小,模型无法进行有效的特征提取,产生大量漏检;同时在一些有疑似烟火区域,如车灯、白色塑料袋、颜色偏红的衣物,模型出现大量的误检。由于原有的SSD算法无法在这些场景下获得一个较好的检测效果,所以本文提出一种基于改进型SSD的视频烟火检测算法。本文算法的网络结构如图1所示。
图1 本文算法网络结构
2.1 基础特征提取网络改进
由于SSD算法受限于基础特征提取网络VGG-16的网络深度,只能使用低层次的特征层进行小尺寸目标的检测。低层卷积层虽然有较好的空间位置信息,但是缺乏高级的语义信息和抽象特征,导致最终训练的模型无法对小尺寸目标有足够的检测精度。
本文算法使用网络结构更深的稠密连接型网络DenseNet替换SSD算法中的VGG-16作为本文算法的基础特征提取网络。如图2所示,DenseNet网络结构中的任意两层均通过前向跳跃连接直接相连,即网络中每一层的输入均来自前面所有层的输出,通过特征重用加强信息在网络中的传播,使得位于网络中较后的层也能利用前面层提取到的信息,进而缓解了深层网络在训练过程中的梯度消失现象。同时由于特征的重复利用,每层仅需较少的卷积核,在一定程度上减少了网络参数,提高了网络运算效率。
图2 DenseNet网络结构
图2所示网络结构输出表达式为:
XL=HL([X0,X1,…,XL-1])
(1)
式中:[X0,X1,…,XL-1]表示将0到L-1层输出的特征进行级联;HL表示非线性变换;XL表示第L层的输出。为了在融合浅层特征和深层特征的同时保持较低的计算量,DenseNet在每个dense block模块里使用了bottleneck layer结构。bottleneck layer结构由一个1×1卷积和一个3×3卷积构成,1×1卷积用于减少输入特征图维度,3×3卷积用于特征提取运算。而在dense block之间采用了transition layer结构,transition layer包括一个1×1的卷积和2×2的平均池化层,对特征图尺寸进行逐步缩小。与其他只使用最后一层特征图来进行预测的卷积神经网络相比,DenseNet网络在实现特征重用和提高特征传播效率的同时,还减轻了深度网络带来的梯度消失问题,使得网络模型具备更好的泛化性能。
本文算法采用了迁移学习的思想,在DenseNet121网络的基础上进行了修改,将其最后的池化层和全连接层删掉,并新增卷积层对其最后输出的特征图维度进行压缩,进一步降低特征图维度,提高运算速度。其次,在DenseNet网络之后添加新的卷积层使其构成类金字塔结构,进一步进行特征提取,并利用不同尺度的特征图进行预测。这样构建的网络层次更深,特征提取更加充分,加强了特征传播的同时还提高了对各层特征的重复利用率。表1是本文算法网络结构。
表1 本文算法网络结构
2.2 损失函数改进
在单阶段的目标检测算法中,输入网络中用于计算损失值的先验框分为正样本和负样本。当先验框与目标真实边界框(Ground Truth)之间的IOU大于设定的阈值时,该先验框为正样本,否则为负样本。一般把具有较低损失值和较高置信度的先验框称为易分样本,把具有较高损失值能够引导网络训练趋势的先验框称为难分样本。SSD算法直接在不同层的特征图上的每个位置生成不同尺度的先验框进行正负样本匹配,由于算法生成的先验框数目较大,但是与真实目标匹配的先验框数目较少,也就是被判定为正样本的先验框数目较少,被判定为负样本的先验框数目过多,导致输入网络中的正负样本比例严重失衡。若先进行难分样本挖掘(Hard Negative Mining)[23],然后采用非极大值抑制算法, 则会造成检测样本数量进一步减少,使输入的样本中的易分样本在损失中占据了较高的比重,导致训练被大量的易分样本主导,限制了检测算法精度的进一步提高。
为解决SSD中正负样本和易分难分样本不均衡的问题,本文采用Focal loss函数代替原损失函数中的置信度损失函数,通过调节输入网络中的正负样本比例参数来解决算法中正负样本失衡的问题。
SSD网络的损失函数由置信度损失(Confidence Loss, conf)和位置损失(Localization Loss, loc)的加权和构成,具体表达形式为:
(2)
式中:x为先验框与不同类别的匹配结果,匹配x=1,否则x=0;c为预测框类别置信度;l为预测框位置偏移信息;g为真实边界框与匹配先验框的偏移量;N表示匹配的先验框的数量;Lconf(x,c)表示置信度损失;Lloc(x,l,g)表示定位损失;α表示定位损失的权重。
本文使用 Focal loss 损失函数进行正负样本不平衡校正,其表达式如下:
FL(pt)=-at(1-pt)γlog(pt)
(3)
式中:pt是不同类别的分类概率;γ是大于零的值,用于调节易分样本权重降低的速率;at为0到1之间的小数,作为权重用于调整正负样本的比例。从式(3)可以看出无论是目标还是背景,对于简单样本,pt会比较大,权重(1-pt)γ自然就比较小;针对难分样本,pt比较小,则导致权重会比较大,让网络倾向于利用这样的样本来进行参数的更新。而且该权重是动态变化的,如果难分样本逐渐变得易分,那么它在损失函数中的影响会逐渐下降。
由图3函数曲线可知,当γ=0时函数曲线为SSD中损失函数曲线,可以看出即使是易分样本 (pt≫0.5),它的损失值也很高,导致易分样本在算法中的损失值占比过高。在Focal loss曲线中,当γ越来越大,输入的样本中难分样本所占的权重增加,表明Focal loss 通过at和γ两个参数分别实现对正负样本和难分易分样本比例均衡,从而使参与训练的样本分布更加均匀,能够进一步提高检测算法的可靠性。
图3 Focal loss函数曲线
3 网络训练
3.1 数据集
本文选用ImageNet数据集作为预训练数据集,该数据集涵盖2万多个类别,拥有1 400多万幅图片。利用该数据集训练出的预训练模型具有较好的特征提取能力。为了进一步实现模型对烟火目标的检测,需要大量带标注的烟火数据集对预训练模型进行微调。为获取更真实的烟火数据样本,本文实验的数据集采用从各种场景下录制的烟火视频作为样本,通过对视频进行跳帧截取图像,并按照PASCAL VOC数据集格式对图像中的烟火目标进行标注。实验中用于训练的数据集包含9 721幅图像,其中含有6 725个烟雾目标和6 764个火焰目标。
参考最新的SSD数据增强方法,在训练前对数据集进行预处理操作。对原始图像分别进行了亮度、对比度、饱和度、色度随机变换、水平翻转、随机剪裁、扩展、镜像和颜色扭曲等操作,通过数据增强的方式扩充数据集,使得训练出的模型具有更好的鲁棒性。
3.2 先验框设置
为了检测图像中不同大小和形状的目标,需要在网络中不同层的特征图上设定不同大小与比例的先验框。本文利用Conv3_blk、Conv4_blk、Conv5_blk、Conv6_blk、Conv7_blk、Conv8_blk这6个卷积层输出的特征图进行预测,在每一个特征图的每个基准点上设置同心的先验框。对于先验框的尺度,使用线性递增原则,即随着网络层数的增加,特征图尺寸逐渐降低,先验框尺度线性增加。相应计算公式如下:
(4)
表2 参与预测的特征图尺寸与基准点上预设框数目
3.3 先验框匹配策略
先验框与Ground truth(真实目标)进行匹配有两个原则。第一个原则规定,对于图片中每个Ground truth(真实目标)找到IOU最大的先验框,该先验框与Ground truth进行匹配,这样可以保证每个Ground truth一定与某个先验框进行了匹配。将与Ground truth匹配的先验框称为正样本,将没有与Ground truth匹配的先验框称之为负样本。第二个原则是针对剩余未匹配的先验框进行的操作。设定一个IOU阈值,将剩余未匹配的先验框与任意一个Ground truth尝试进行配对,若两者之间的IOU大于阈值,则认为这个先验框也与该Ground truth匹配。这意味着一个Ground truth可以与多个先验框匹配,但是一个先验框只能匹配一个Ground truth。如果某个先验框与多个Ground truth的IOU大于阈值,那么先验框只与IOU最大的那个Ground truth匹配,并且第二个原则在第一个原则之后进行。本文设定的IOU阈值为0.5,NMS算法交并比的阈值为0.45。
3.4 实验配置及参数
实验平台配置为GPU Nvidia Geforce GTX1080ti;操作系统为Ubuntu16.04;实验框架为Caffe开源框架[24]。本文网络结构中的参数设置为:利用预训练的模型进行权重初始化,初始学习率设为 0.001,使用随机梯度下降算法及动量优化算法优化参数,gamma=0.1,momentum=0.9,weight_decay=0.000 5,批量大小为32,共迭代30 000次。
4 实 验
4.1 测试数据集
目前,已有的烟火识别数据集有Bilkent大学视频库、NIST数据集、仁荷大学计算机视觉实验室建立的ICV数据集和VisiFire数据集。但是这些数据集场景单一,而且样本数量较少。本文通过采集真实场景视频并截取视频获得图片,按照PASCAL VOC的格式进行手工标注,构建标准测试集。该测试集共1 535幅图片,包含738个烟雾目标和819个火焰目标。
4.2 检测效果评价
对于烟火目标检测,首先单独计算各个类别的AP(Average Precision)值,这是评估检测效果的重要指标。取各个类别的AP值的平均值,得到综合指标平均精度值(Mean Average precision,mAP),用于评估目标检测模型的检测精度,其计算公式如下:
(5)
式中:QR表示烟火目标检测任务输出类别。
另一个重要的性能指标是模型的检测速度。只有模型的检测速度够快,才能实现视频目标实时检测的任务。评估检测速度的常用指标是每秒帧率(Frames Per Second,FPS),即每秒内可以处理的图片数量。每秒内可以处理的图片数量越多,模型的检测速度越快。
4.3 实验结果与分析
为验证本文算法对烟火目标的检测性能和本文算法提出的关于SSD算法两点改进的作用,进行以下两组对比实验。
4.3.1与已有算法的对比实验
使用标准测试集测试SSD300、SSD512、RESNET300[25]和本文算法四个算法模型,得到烟火目标检测的各类AP值和mAP值,同时获取各模型在视频上的检测速度用于进行对比,实验结果及效果对比如表3所示。
表3 与已有算法的对比实验结果
对实验结果进行分析可知,SSD512算法由于输入图像尺寸更大,可以使得算法更为有效地进行特征提取,所以其检测精度要比SSD300稍高。但是由于输入的图像尺寸变大,导致算法内部传输的数据块尺寸较大,使得卷积计算量变大,算法整体的检测速度下降较多,所以不考虑使用较大尺寸的图像作为算法的输入数据。RESNET300由于结合了浅层和深层的特征,检测精度超过了SSD300,但是由于网络层次较深,网络参数增多,同样使得算法的检测速度有较多的下降。本文算法采用网络结构更深的稠密连接型网络DenseNet作为算法的基础特征提取网络,使用较高层次的特征层进行小尺寸目标检测,提高了对小尺寸目标的检测精度。DenseNet网络中的旁路连接方式在减少网络参数提高检测速度的同时,又提高了特征复用率,进一步增强了检测精度。通过在损失函数中引入Focal loss函数,实现了算法中样本的均衡分布,提高了模型的可靠性。所以本文算法在检测精度上优于其他三种算法并保持了较高的检测速度。由于本文算法具有较高的检测速度,在实际工业应用场景中,可以通过采用视频序列跳帧检测的策略来满足工业应用场景的实时性需求。
同时本文对带有小目标的图像进行仿真测试,发现本文算法有着较为明显的优势。图4为火焰场景检测效果对比,原图有三种尺寸大小的火焰,SSD512和SSD300能够检测出尺寸较大的火焰,但是无法检测到小尺寸火焰,RESNET300和本文算法可以检测到图中的小尺寸火焰,但是本文算法对小尺寸火焰目标有着更高的置信度。图5显示了烟雾场景的检测效果,尽管四种算法都可以检测到烟雾目标,但是本文算法对烟雾目标具有最高的检测置信度。图6为无烟火目标的场景的检测,发现SSD300和SSD512存在将夜间车灯误检为烟火的情况,RESNET300和本文算法则没有误检情况。从仿真对比实验可以看出,本文算法在检测精度和抗干扰性能上均优于其他三种算法,在保持较高检测速度的同时提高了检测精度。
图4 火焰场景检测结果
图5 烟雾场景检测结果
图6 无烟火场景检测结果
4.3.2针对改进点的对比实验
为进一步验证本文算法对SSD算法两点改进的作用,分别对两点改进进行对比实验。实验一:只对SSD算法的基础特征提取网络进行改进,将VGG-16网络替换为DenseNet网络结构;实验二:只对SSD算法的损失函数进行改进,将Focal loss函数代替原损失函数中的置信度损失函数。使用标准测试集对以上实验进行测试,并将实验结果与SSD300算法模型实验结果进行对比,对比结果如表4所示。
表4 消融实验对比结果
将实验一算法模型与SSD300算法模型实验结果对比可知,实验一的烟火目标检测准确率有明显提升,但算法检测速度有一定下降。可见使用DenseNet网络作为算法的基础特征提取网络可以明显提高算法模型的特征提取能力,进而提高模型检测精度。但同时较深的网络结构也带来了一定的算法运算速度下降。将实验二算法模型与SSD300算法模型实验结果对比发现,实验二的烟火目标检测准确率有一定的提升,同时算法的检测速度保持不变。可见在损失函数中引入Focal loss函数可以实现算法中样本分布均衡,从而提升模型的检测效果。
5 结 语
本文提出基于改进型SSD的视频烟火检测算法,利用更为高效的DenseNet网络作为算法的基础特征提取网络,搭建了层次更深的网络结构,利用跳跃连接加强信息在网络中的传播,在增强了网络的特征提取和表达能力的同时保持了较低的网络参数量。在算法的损失函数中引入Focal loss函数,解决了单阶段目标检测算法中的正负样本不均衡和易分样本在损失函数中占比较高的问题。与对比实验中的其他主流算法相比,本文算法在提高了检测精度的同时也兼顾了模型的检测速度。