赵维科 焦良葆 孟 琳 浦 东
(南京工程学院人工智能产业技术研究院 南京 211167)
传统的烟雾检测方法主要是根据烟雾、气体、温度等物理量变化,采用感温、感光、气体探测以及复合式探测而设计了各式各样的烟雾探测器。但是烟雾探测器由于自身的特性而受到空间的限制,尤其是在室外环境,烟雾探测器无法检测大范围,而且烟雾易被气流吹散,烟雾到达不了烟雾探测器。故而近年来,烟火隐患的探测技术正逐渐朝着视频图像处理的趋势发展,通过最近兴起的机器视觉技术可以对烟火隐患这类目标进行有效的检测定位,从而能够更准确的定位烟雾发生地,避免火灾发生更多地延伸。相比烟雾探测器,具有监控范围广、监控距离远、反应快速等显著的特点。
随着计算机科学的发展和深度学习理论的不断完善,目标检测的研究得到进一步发展,检测精度与速率都有大幅提升。文献[12]中将SSD算法中的VGG16网络进行重构,通过增加6个卷积层和1个池化层,来提升对高铁监控视频中烟火的检测精准度,一定程度上减少了目标检测漏报率,但同时由于增加了网络层数导致模型变大而使得检测速率降低,影响实时检测效果。文献[14]利用深度卷积网络生成对抗网络和自适应前景分割技术来对输电线路的工程车辆入侵进行检测,该算法在烟火隐患检测的应用中会因在前景分割时花费较多时间大幅降低了识别速率而导致漏帧。文献[15]根据交通灯尺寸特点,精简YOLO网络结构,然而在对复杂环境下的检测中识别效果会大幅下降,无法准确定位识别目标。文献[17]通过结合跨阶段局部网络对骨干网络进行改进,降低计算量,同时利用改进后特征融合增强,有效提升了在复杂环境下检测中的目标识别效果,由于山火烟雾这类形状不固定的柔性目标,在环境中检测更加复杂,需要对柔性目标检测提取更多的特征信息。深度卷积网络的深度学习主流目标检测算法主要有两阶段的Fast R-CNN[2~3]和一阶段的YOLO[4,14~15,17,19,23]和SSD[12],其中YOLO算法经过更新发展,结合了多特征提取以及残差网络特性,使得对目标的检测精度识别速率都有较大提升。
针对上述问题以及应用需求,本文提出了YO⁃LO深度卷积网络的优化算法,该优化算法包含了2个方面的创新点:一是,利用GIoU_Loss损失函数替换L2 Loss损失函数,降低损失值,提升检测精度;二是,在输出层之前添加SPP模块,将目标特征从多尺度方面进行融合,融合多尺度可以扩大感受范围,获得更丰富的信息,从而提高目标检测的准确性。
烟火隐患作为一类特定目标可以划分为两种目标,分别为山火和烟雾,利用目标检测算法[4]可以对烟火隐患做出大致范围的划定。
目标检测是将图像或者视频中的目标与其他不感兴趣区域进行区分,判断是否存在目标,确定目标位置,识别目标种类的计算机视觉任务。以AlexNet为分界线,2012年之前为传统算法,包括Viola-Jones[6]算法、HOG特征算法以及DPM[1]模型。2012年,Hinton教授的团队使用了卷积神经网络设计了一种名为AlexNet的网络结构,该网络结构在ImageNet数据集上击败了所有传统方法,使得卷积神经网络成为计算机视觉领域中最重要的工具。基于深度学习的目标检测算法大致分为三类:1)基于区域建议的算法,如R-CNN[3]、Fast R-CNN[2]、Faster R-CNN等。2)基于目标回归的检测 算 法,如YOLO、SSD[12],retinanet,EfficientDet。3、基于Anchor-free的算法,如CornerNet,Center⁃Net,FCOS等。
使用coco数据集对比不同目标检测算法可知,基于目标回归的检测算法在检测精度上高于An⁃chor-free的算法,检测速率上远超区域建议的算法。在这基础之上,目前目标回归算法中的YOLO算法在检测精度上与Fast R-CNN相近,检测速率上也与SSD相持平,如表1所示,因此YOLO算法在对目标进行实时监测效果最佳。
YOLO本质上是一个实现了识别与回归功能的深度卷积神经网络,通过对图片的全局区域进行训练,速度加快的同时,能够更好的区分目标和背景。
这个深度卷积神经网络主要是由一系列的1×1和3×3的卷积层组成,每个卷积层后都会跟一个BN层和一个LeakyReLU激活函数,网络结构如图1所示。它一共有53个全连接卷积层,所以该网络模型结构又称为Darknet-53。该结构为了增加网络的深度,借鉴引入Resnet网络中的残差结构,相比较其他深度卷积网络算法中类似VGG那样直筒型的网络结构,YOLO因残差结构训练层难度大大减少,因此这里可以将网络做到53层,精度明显提升。
图1 YOLO网络结构
对于原YOLO算法在应用到烟火隐患检测时对于不固定形状的烟火图像在检测时,会产生大范围的烟雾检测不全,同时还会对小范围目标的烟雾检测不准的问题,因此提出了下面的改进策略。
在YOLO算法中把目标边界框表示为四个变量(x,y,w,h)或(X1,Y1,X2,Y2)。目标边界框回归问题通常采用L2 loss(L1 loss、Smooth L1 loss)对上述四个变量进行回归,但是,这种做法有以下缺点:
1)L2 loss在计算边界框损失时,先独立地求出四个点的损失Loss,然后进行相加,这种做法假设了这四个点是相互独立的,但实际上应该是有一定相关性的,因为这四个点都依赖于同一个目标。
2)实际评价框检测的指标是使用IoU,这两者是不等价的,多个检测框可能有相同大小的L2 Loss,但它们的IoU可能差异很大。
3)L2 loss并不具有尺度不变性。大边界框的L2损失通常会大于小边界框的损失,这使得在网络训练过程中,网络会更加注重大边界框的定位,忽视小边界框的定位,最终导致模型对小目标的检测性能比较差。
由图2所示,其中灰色框为真实框,黑色框为预测框,从图中可以看出,当L2范数相等时,IoU与GIoU的值都有很大的差异,这表明使用L范数来作为衡量边界框的距离是不合适的。
图2 L2范数相等时IoU及GIoU对比
为了解决上述问题,提出了IoU来构造损失函数,然而IoU loss在当预测框A和目标框B不相交时,即IoU(A,B)=0时,不能反映A,B距离的远近,此时损失函数不可导,IoU loss无法优化两个框不相交的情况。如图3所示,场景1和场景2的IoU都为0,由于场景1的两边界框比场景2的更近,L范数更小,因此场景1的检测效果更佳。
图3 IoU为0的两种不同情况的回归
针对IoU作为坐标误差损失函数IoU无法优化无重叠的bounding box,所以本文使用一种泛化版的GIoU[8],计算公式如下:
其中,C是能完全包围A和B的最小矩形框。与IoU相似,GIoU[7]也是一种距离度量,作为损失函数的话,LGIoU=1-GIoU满足损失函数的基本要求。GIoU不仅关注重叠区域,还关注其他的非重合区域,能更好的反映两者的重合度。当两个框没有重叠区域时,此时GIoU是一个在[-1,0]范围内变化的数,存在梯度,能够对训练进行优化,优化方向是逐渐拉近两个框之间的距离。将GIoU作为YOLO的边界框回归损失函数,可以有效降低目标检测训练过程时的损失值,从而提高识别的准确精度。
在目标检测领域,为了更好的提取融合特征,通常在Backbone和输出层,会插入一些层,这个部分称为Neck。相当于目标检测网络的颈部,也是非常关键的。改进的Neck结构主要采用了SPP模块[16]、FPN+PAN的方式。
3.2.1 SPP模块
SPP模块的全名是空间金字塔池化层模块[17]。图像空间金字塔[18]是多尺度图像处理,它使用多分辨率并表征了图像强大而简单的结构[19],所提出的模型获取高级特征,纹理特征,提高了模型的准确性。在SPP模块中,使用k={1×1,5×5,9×9,13×13}的最大池化的方式,再将不同尺度的特征图进行Concat操作如图4所示,此处的最大池化采用padding操作,移动的步长为1,比如13×13的输入特征图,使用5×5大小的池化核池化,padding=2,因此池化后的特征图仍然是13×13大小。在《DC-SPP-Yolo》[22]中对YOLO目标检测的SPP模块进行了对比测试,结果表明,采用SPP模块的方式,比单纯使用k×k最大池化的方式,更有效地增加主干特征的接受范围,显著的分离了最重要的上下文特征。在使用608×608大小的图像进行测试时发现,在COCO目标检测任务中,以0.5%的额外计算代价将AP50增加了2.7%,因此采用SPP模块。
图4 SPP模块
3.2.2 FPN+PAN
FPN+PAN借鉴的是18年CVPR的PANet[20],当时主要应用与图像分割领域,将其拆分应用到YO⁃LO中,进一步提高特征提取的能力。YOLO的只有单一的FPN层,它是自顶向下的,将高层的特征信息通过上采样的方式进行传递融合,得到进行预测的特征图。而改进的结构在FPN层的后面还添加了一个自底向上的特征金字塔,其中包含了两个PAN结构[21],如图5所示。这样结合操作,FPN层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征,两两联手,从不同的主干层对不同的检测层进行特征聚合,从而扩大感受野,提高特征提取能力,提高检测精度。
图5 FPN+PAN结构
本文中基于Darknet框架搭建神经网络,利用C和Python编程语言进行实验。模型训练和测试环境如下:Intel(R)Xeon(R)Glod5118 CPU@2.3GHz处理器,GeForce RTX2080Ti型GPU,24GB显存,Centos7.0操作系统,内存128G。
本文以YOLO V3作为改进和比较的对象,但本文所述的改进适合于所有YOLO框架算法。实验中将改进的YOLO算法与原算法进行比较。
利用国网公司南京分公司与苏州分公司提供的输电通道烟火隐患数据进行模型训练和测试。采用电力杆塔上安置的摄像头对输电通道周围环境进行拍摄,针对输电线路通道中可能存在的山火以及烟雾进行模型训练以及测试。选用其中拍摄清晰、无明显压缩痕迹的二维目标图像作为数据集,转换标签文件格式。将数据集按照8∶1∶1的比例随机分为互斥的训练集,验证集和测试集,如表2所示,其中山火为主要检测类别,烟雾由于其涉及范围较广,容易出现误判断,因而将其归类为次要检测类别。
表2 数据集类别及数量
在深度卷积神经网络中的参数是数以万计的,为了使得这些参数能够达到最佳工作状态则需要大量的数据进行训练,因此提出了数据增强的方法来利用有限的数据集产生更多的等价数据。使用Mosaic数据增强[10,13],对四张烟火隐患图片进行随机旋转拼接,每一张图片都有其对应的目标框,利用四张图片拼接之后就获得一张新的图片,同时也会获得这张图片对应的目标框,将这张新的图片传入到神经网络当中去学习,相当于一下子传入四张图片进行学习,训练效果相对于原本算法增强了近4倍。利用labelimg标注软件将这2类目标标注出来,根据VOC数据集目录结构,将数据集标记文件保存为txt格式。
选用查全率R、查准率P和平均精度mPA评估模型的检测准确率,其中R、P的计算公式如下:式中:T为将目标烟火隐患预测为对应目标;F为将目标烟火隐患预测为非对应目标;P为将非目标烟火隐患预测为目标。通过计算每个样本类别的T、P、F值,得到每个类别对应的查全率、查准率。通过计算每个样本类别的T、P、F值,得到每个类别对应的查全率、查准率从而绘制查全率-查准(PR)曲线,mAP为曲线下的面积[23]。mAP的计算公式如下:
式中f为PR曲线。
利用国网公司提供的数据集进行训练得到原算法和改进后YOLO算法的训练模型,并对其性能进行比较。实验中设定batch为64,即在训练集中每次迭代处理64个样本,设定subdivisions为8,即将batch分割为8个batch。本文中训练迭代次数为33800,学习率0.001,使用数据集,在GPU上进行了约1天的训练,获得最终烟火隐患目标检测模型权重。
为了评估GIoU_Loss损失函数融合后的YOLO算法的识别效果,引入了Loss损失曲线图,用于与原来的使用常用边界框损失函数的YOLO算法进行比较,通过Loss损失曲线图可以看出,通过GIoU_Loss损失函数与YOLO算法融合后,算法通过Darknet框架进行训练后的损失值最终降低至0.5532,而原本使用L2 Loss损失函数的YOLO损失值最终降低至0.8905,损失值效果提升了近62%,L2 Loss损失函数Loss曲线图如图6改进前所示,GIoU_Loss损失函数Loss曲线图如图6改进后所示。
图6 Loss损失曲线图
为了评估融合了金字塔池化层的YOLO算法对复杂环境下目标检测的识别效果,利用原始数据集训练数据增强后的YOLO算法,进行金字塔池化层融合实验,并将融合后的识别结果与原始模型结果进行比对分析,图7所示为改进后的算法与原算法在测试集中PR曲线对比。从图中可以看出,相比于原算法,改进后的算法PR曲线下的面积更大,平均精度更高。相比于YOLO算法,改进后的算法平均精度提升了2.7%。
图7 PR曲线图
为了验证本文算法相较其他网络模型的优势,首先在同样的实验环境下利用相同的训练样本数据重新训练了SSD、Fast R-CNN以及YOLO原网络,获得相应的模型,然后利用相同的测试数据集,将其他模型检测结果与本文算法模型进行对比。
以模型检测平均准确率mAP、检测速度FPS作为评价指标,分别对比SSD、Fast R-CNN、YOLO原算法以及本文算法的性能,如表3所示。
从表3中可以看出,本文算法在平均准确率上几乎与Fast R-CNN持平,同时检测速度上与SSD与YOLO算法模型相近,因此,本文算法在针对山火烟雾这类目标检测时相较于其他网络模型有着准确率高和速率快的优势。
表3 各模型检测结果
为了进一步体现本文算法相对于原算法在检测精度上的优势,利用查全率和查准率两个评价指标对原算法和本文算法进行对比。通过Mosaic数据增强、GIoU_Loss损失函数、金字塔池化层融合后的YOLO能够在一定程度上在不影响YOLO实时检测速率的同时提升检测精度,识别精度在阈值设置为0.2时对比数据如表3所示。
通过表4可知,原算法在查全率和查准率上对于原算法都有较大提升,山火的查全率提升了1.9%,查准率提升了2.4%,烟雾的查全率提高了0.8%,查准率提高了1.8%。
表4 查全查准率对比
其检测效果图如图8所示,在图中可以看出对于不同形状的烟雾都能有较好的检测效果。
图8 检测效果图
本文中提出的YOLO改进算法,该算法通过Mosaic数据增强,优化网络训练数据集,提升训练效果;利用GIoU_Loss损失函数来降低训练损失值;同时,引入空间金字塔池化,增大感受野,提高小目标识别效果,从而在不影响识别速率的同时提高复杂化境下的烟火隐患检测识别精度。使用改进后的算法对山火烟雾这类安全隐患进行实时监测,快速定位隐患火灾发生地,有效避免灾害进一步扩散。
实验结果表明,YOLO优化算法取得了更高的检测准确率的同时优化了数据集改善了误报率较高的问题,基本满足了对烟火隐患的实时监测需求。另外,该优化算法并不局限于烟火隐患的检测,也可应用于其他领域的目标检测,具有广阔的应用场景,适用性强。