基于改进的DenseNet深度网络火灾图像识别算法

2019-04-01 12:44:02
计算机应用与软件 2019年2期
关键词:火焰卷积火灾

杨 其 睿

(中国石油工程建设有限公司西南分公司 四川 成都 610041)

0 引 言

由于油气生产场所具有高温高压、易燃易爆的特征,一旦发生火灾事故,就会造成严重的经济损失,甚至会引发人员伤亡[1]。现有的火灾预警系统大都采用红外、烟感等被动传感器进行烟火检测,其结果易受外界干扰,误报率高,不能实时准确地进行火灾预警[2]。如何从油田安防设备获取的海量图像数据中检测到烟火信息,提高火灾预警系统的响应时间,在国内外都是一个具有挑战性的研究课题。

随着油气田安防监控系统的广泛利用,通过对采集到的视频进行实时分析,具有检测范围广,信息特征丰富,预警响应时间短等特征[3]。近年来,国内外学者对火灾检测进行了大量的研究,取得了重大的进展。现有的火灾检测算法大致上可分为两类:基于特征模型和基于学习模型[4]。前者旨在分析火焰、烟雾等特征,通过总结火灾区域的特征规律,实现火灾预警;后者则是通过智能算法获取一种具有学习能力的分类器或者特征提取模型。Chen等[5]通过对大量的火焰进行统计分析,提出了基于颜色模型的火焰识别准则,但该算法仅仅考虑了颜色信息,导致检测结果虚警率较高。Dimit等[6]则利用火焰的动态跳动的特征,提出了基于小波时频特性的火焰边界检测模型。为了实现早期预警,Tore等[7]利用火灾早期具有大量烟雾的特性,提出了基于烟雾模型的火灾预警。可以看出,通过直接提出视频特征进行火焰判断,是最直接有效的方法,但单一的火焰特征难以适应变化多端的监控环境。

基于机器学习的焰火检测模型是目前研究较多方向,在一定程度上提高了检测的精度。为了增强火焰检测的抗干扰能力,Gubbi等提出了多特征火焰分类模型,该算法主要利用多种特征组合形成的特征向量进行SVM分类,在火焰特征空间中构建最优超平面,得到全局最优分类模型,提高检测精度[8]。然而,传统的图像处理、机器学习等火焰检测模型泛化性不强,对噪声等干扰比较敏感,不能对油田安防领域的大规模图像数据进行有效检测。相较于SVM、决策树、集成学习等浅层学习模型的检测算法,以CNN为代表的深度学习强调了模型结构的深度,更突出火焰特征学习的重要性,利用大数据来学习特征,更能表征数据丰富的特征信息。张兴坤首次将深度学习模型应用到火焰检测,通过设计一种更深层次的网络结构,并采用Dropout技术增强模型的泛化能力,其检测精度超过传统浅层学习模型[9]。深度模型本质上是一种深层非线性网络结构,通过网络中多隐层节点将低层特征组合成更加抽象的高层特征,实现复杂函数逼近,具有强大本质特征的学习能力[10]。

随着深度学习模型的发展,国内外学者提出了多种深度网络模型。LeNet是最早提出的深度模型,由两个卷积层、两个池化层、两个全连接层组成[11];AlexNet是由Alex提出的一种经典深度网络架构,并衍生出许多优秀的改进模型,如VGG、GoogleNet等[12],其中GoogleNet认为采用更多的卷积算子、更深的层次可以得到更好的深度网络结构;然而,随着网络深度的增加,梯度信息逐渐消失,造成学习停滞,残差网络(ResNet)则在输入与输出之间建立跨连接,通过恒等映射解决网络退化的问题,但现有的深度网络主要用于解决特定问题,不能直接应用于火焰检测。例如,实际监控视频中,发生火灾的区域可能范围比较小,很难从背景中识别出来;自然界具有大量类似火焰的区域,比如灯光、晚霞等,造成检测失败;DenseNet网络卷积核的大小非常小,很难得到监控画面中不同尺度下火焰特征[13]。传统的DenseNet架构不适合油田安防中火灾的检测。

针对油田安防领域火焰特征,本文在DenseNet深度模型的基础上,提出了一种改进的DenseNet火焰检测算法。该算法具有DenseNet能够融合浅层与深层特征进行分类的优势,利用通过设计更加密集的残差结构,增加特征复用能力与特征传播效率,极大地增强了特征表征能力并降低网络参数量。同时,将原有交叉熵损失函数替换为Focal Loss,增强网络中对复杂背景下火焰的学习能力,提高分类准确率。

1 DenseNet深度模型

DenseNet网络是2017年提出的最优深度模型,该网络借鉴了深度残差网络(ResNet)与Inception网络的优点,但并没有采用加深网络层数(ResNet)和加宽网络结构(Inception)来提升网络性能,而是直接从最优特征的角度出发,通过设置特征复用和旁路连接,既增强检测精度,又降低网络参数。

众所周知,由于多层深度网络中前面层上的梯度是来自于后面层上梯度的乘积。随着网络深度的加深,前面隐藏层的学习速率可能低于后面隐藏层的学习速率,这就造成后面层的分类准确率反而下降,形成梯度消失和梯度爆炸。现有的大多数网络采用网络之间形成的跨连接,形成类似恒等映射的交叉结构,如ResNet、FractalNets等,其单元结构输出如下式所示:

xl=Hl(xl-1)+xl-1

(1)

式中:xl表示l层的输出数据,Hl表示网络非线性变换。可以看出,l层的输出是l-1层的输出加上对l-1层输出的非线性变换。传统的深度网络每一层提取的特征都相当于对输入数据的一个非线性变换,而随着深度的增加,更多非线性函数的复用导致变换的复杂度也逐渐增加。DenseNet网络也是将所有层连接起来,但每一层的输入来自前面所有层的输出,这相当于每一层都直接连接输入层和损失层,因此就可以减轻梯度消失现象,网络结构变得越来越紧密,其输出如下式所示:

xl=Hl([x0,x1,…,xl-1])

(2)

式中:[x0,x1,…,xl-1]表示将0到l-1层输出的特征图进行级联,类似Inception操作。为了避免随着网络层数的增加,后面层的特征维度增长过快,DenseNet在每个单元模块之后进行了池化均衡,如图1所示。首先通过一个卷积层将特征维度压缩至当前输入的一半,然后再进行Pooling的操作。因此,相比于一般深度网络直接依赖于最后一层输出的特征,而DenseNet可以融合利用更多低层次的特征,其训练得到的分类器具备更加泛化的分类性能。

图1 5层DenseNet网络

由于人工低层次特征具有良好的统计特性和可解释性,自学习高层次特征具有优秀的表征能力。为了让DenseNet网络更好地胜任火灾检测的任务,本文根据油田安防监控中火灾区域特点,重新设计了DenseNet网络结构。通过将几种可以很好代表火焰区域的低层次特征提取出来,并且这些特征被作为最后自学习出来的高层次特征的一种特征补充,增强检测的精度。

2 改进火焰检测算法

前面提出采用密集连接的DenseNet网络强化了特征的传播,支持特征的复用,大幅度减少了参数量,具有很强的表征能力,即便在大数据集下也不会出现过拟合现象。即便如此,笔者在仿真测试过程中,通过对网络连接进行剪枝,其预测结果也不会产生太大的影响,因此足以说明DenseNet网络获取的特征仍然存在冗余。同时,现有的深度网络大都强调模型的深度与宽度,但实际应用过程中,大多数烟火图形序列并不需要更深的网络进行特征提取,低层次特征也足以获得比较准确的结果。因此,本文提出了一种改进的DenseNet网络结构,可以有效地降低深度模型的平均计算开销,而不降低精度。

2.1 改进的DenseNet网络

图1展示的5层DenseNet网络结构可以看出,相邻的单元模块之间通过卷积层与平均池化层连接,而没有采用全连接层,这是为了减少整个网络的参数量,抑制过拟合现象,最后通过线性分类器对最终学习到的特征进行分类。

假定网络中有L层,传统的深度网络只有L个连接,而DenseNet网络则有L(L-1)/2个连接。虽然这样可以充分利用之前层的所有信息,若不对卷积核尺寸加以限制,势必增加算法的复杂度。为了降低所有层之间的特征级联的维度,一般采用1×1卷积在不同的通道上进行线性组合,调控特征深度,从而完成网络升维或降维的功能。虽然极大提升了特征的流动性与利用率,但该网络需要大量的空间存储中间变量。为了降低网络存在的冗余特征,本文提出了一种自适应裁剪策略,即每一层单元结构并不接收之前所有面层的输出特征,其目的是保留重要权重的连接。

为了解决传统的DenseNet网络不能适应弱小目标的检测,本文引入了多尺度思想进行网络架构设计。新的多尺度密集块的设计目标是捕获数据中的多尺度的目标。每个多尺度密集块中有24个不同的卷积层,每个层具有不同尺度的卷积核。卷积内核的尺度比上层较大,便于生成更多的特征映射以提取不同尺度下目标特征。在下层,卷积内核接收前一层中的所有输出和原始输入。由于网络结构支持特征复用,因此多尺度密集块将具有不同尺度的所有特征连接到过渡层(Translation)中以进行进一步操作。同时通过对改进的网络结构进行裁剪,降低存储复杂度。

假定ai是第i层的特征,其上面有N个单元结构,一般N≤i。这表明ai与上面层之间存在K个连接,其连接权重记为bi1,bi2,…,biN。因此,我们可以计算ai与bin的相关系数:

(3)

式中:u与σ分别是测试数据集上获取的均值与方差。通过对正相关的权值向量进行排序,并对前λ的数据进行随机采样,得到λsN+个连接,其中s为对应的稀疏度。随机分组将输入通道平均分配到每个组,满足稀疏重构的精度要求。因此,通过将连接权值小于一定阈值的直接移除,最终就得到了稀疏的网络连接,降低网络的复杂度。由于DenseNet网络卷基层数据通过全局池化进行级连,其获取的参数具有稀疏特性,并呈现结构化分布。为了增强特征传播的精度,降低存储数据量,本文采取结构化操作,通过将网络卷积核分为多个组,在训练过程中逐渐减小每个组内不重要的参数连接。可以看出,本文采取的裁剪策略是由网络进行自学习得到,学习到的特征参数可以呈现结构化稀疏的分布,后续对权值进行剪枝时不会带来太大的精度损失。

2.2 Focal-Loss损失函数

DenseNet网络的单元结构中,1×1卷积并不完全考虑像素与周边其他像素空间关系,依赖于坐标位置的线性映射变换,因此大部分的网络都会添加一个非线性的激活响应函数,例如sigmoid、Relu、softmax等,其中传统深度网络常用的softmax损失函数是空间特征的映射。DenseNet网络在在输出部分都使用的是softmax函数与交叉墒损失(Cross Entropy loss)相结合的方式,其Loss函数表示如下:

(4)

式中:x是特征值,i与j表示类别编号。由于油田安防领域构建的数据集存在不平衡性,为了增强火灾检测系统最终分类预测的准确性,本文引入Focal损失函数进行不平衡校正,其表达式如下:

FocalLoss(pt)=-(1-pt)γlg(pt)

(5)

式中:pt是特征值属于某一类的概率,r是调节变化幅度的参数。因此,结合式(4),在使用softmax与交叉墒损失的CNN模型中,加入focal loss后,其损失函数如下:

(6)

仿真测试表明,Focal-loss使得交叉墒函数的逐渐递减,这样增加了损失函数的非线性度,从而在训练的过程中使难分类的样本自动调整,不仅能解决训练数据的的不平衡性,还能提升最终分类精度。

3 实验仿真及其分析

3.1 实验数据集

目前,对于火灾识别所建立的数据集有美国国家标准与技术研究院建立的NIST数据集、仁荷大学计算机视觉实验室建立的ICV数据集和VisiFire数据集,然而这些数据集样本量较少,且背景单一。为了获取更真实的火灾数据实验效果,本节实验数据集采用从各类影视作品、火灾视频以及现场拍摄的火焰视频中提取,其正样本712张,负样本812张。为了增加样本的数量,本文还对样本进行循环采样,使用火焰周围区域的循环矩阵采集正负样本,其中火焰区域尺寸大小从9×17到275×421不等。为了确保标注的客观性,工程部多名同事同时处理一个视频序列,取大多数人的标注结果作为视频帧的火焰样本。同时,所有的测试样本都统一到相同的尺寸。

3.2 实验配置及参数设置

本文提出了一种改进的DenseNet深度网络火灾识别算法,其软硬件平台:CPU:Intel(R) Core(TM) i7-8700 CPU @3.20 GHz;GPU:NVIDIA GeForce GTX 1070Ti;操作系统:ubuntu 16.04LTS;深度学习框架:TensorFlow。为了验证本文提出的火焰识别检测算法的有效性,目前最优算法被采用作为对比算法,分别是DenseNet网络[15]、SSD网络[16]与ResNet网络[17]。在实现DenseNet时,不能只是把所有层连接起来,而是把具有相同高度和宽度的层堆叠在一起。因此,本文将多个卷积层堆叠到一起,然后应用跨层(Striding)或池化层(Pooling layer)进行处理。本文提出的网络参数设置如下:depth=40,growth_rate=12,bottleneck=True,reduction=0.5,学习率设置为0.001,dropout参数设置为0.8,最高迭代次数设置为10 000次,其中每个单元网络里面的层数n_layers=6,每层中卷积核的个数均为12,大小为3×3。改进的Focal-Loss损失函数中正则化系数为0.001时,网络的泛化能力最佳。为了获得k通道的卷积输出,先采用1×1卷积进行通道数降维。其余对比算法则采用Github项目源码进行训练测试。

3.3 实验结果及其分析

目前,油气田外场智能监控分析系统已经能够识别出火焰、烟雾等火灾场景。然而,现有的算法存在大量误检,主要是类似的火焰目标太多。因此,本文采用评价标准则是FPPI,侧重考察FP(False Positive)出现的频率。火焰检测结果统计量如表1所示。

表1 火焰检测结果统计量

对于每张图像获得的火焰检测矩形框,本文采用的评价准则是检测率DR(Detection Rate)与误检率FPPI(False Positive Per Image),其关系如下:

(7)

FPPI=FP/(FP+TN)

(8)

式中:TP代表正确检测出来的正例个数;TP+FN代表图片中包含所有的正例个数;FP代表误判为正例的个数。为了便于分析,我们将测试数据集分成五类,其标识及特点如表2 所示。表3展示了不同评估算法对不同测试子集的检测结果。

表2 不同测试子集的特点

表3 不同数据集下检测率 %

从表3的仿真测试结果可以看出,本文提出的改进DenseNet深度网络的火焰检测结果优于原始DenseNet,主要归因于多特征级联与裁剪策略以及最后分类层采用的Focal-Loss所具有较好的泛化能力,适应火灾识别的二分类问题。数据集E是整个测试数据中最复杂的图像,图像中存在大量的干扰目标,尤其是室内的灯光、室外的尾灯,直接影响网络的检测效果。从实验的结果可以看出,数据E上的检测率是最低的,但也比其他网络的效果好。

本文对测试集中质量较低的监控图像进行仿真测试,发现本文改进的DenseNet的优势体现得更佳明显。图2是储油罐发生火灾的图片,检测结果可以看出,DenseNet网络会识别到类似的目标,如红色的衣服或浅红的配电箱。在图3中存在较多背景干扰的情况下,如室内的壁灯、火红的花束等,壁炉中的火焰并不明显,几乎所有的对比算法漏检情况很严重,尤其是SSD只检测到墙上的挂灯。虽然ResNet检测到了火焰,但该网络也几乎检测到所有红色的区域,存在大量的误检。DenseNet网络得到的检测结果与本文提出的改进算法接近,但检测到的区域存在偏移,主要是由于DenseNet网络在特征级联候进行全局池化,其结果与最坐标存在不一致。另外原始的DenseNet网络在同等软硬件配置下的运算复杂度高于本文算法21%。从图4实验结果来看,基于改进的DenseNet网络火焰识别模型在不同场景下检测效果令人满意。该网络能成功将墙壁上的倒影与燃烧的火焰分开,即便与火焰背景一致的贴画也能够准确地识别;尤其是夜晚灯火的造成的反光,本文提出的网络也没有发生误检。实验结果说明了,该火焰检测网络对于各种场景下的火焰能有效进行检测,并且有一定的抗干扰能力。同时,原始的DenseNet网络在同等软硬件配置下的运算复杂度高于本文改进网络21%。因此,对比实验结果充分说明了本文改进的网络不仅对火焰的识别精度具有一定的提升,也通过网络裁剪降低了计算复杂度。

(a) 本文算法 (b) ResNet

(c) DenseNet (d) SSD图2 数据集A中图像检测结果对比

(a) 本文算法 (b) ResNet

(c) DenseNet (d) SSD图3 数据集C中图像检测结果对比

(a) 本文算法 (b) ResNet

(c) DenseNet(d) SSD图4 数据集E中图像检测结果对比

4 结 语

传统的浅层学习网络过度依赖人工选择火焰特征,无法适应复杂多变的监控场景。本文在DenseNet深度神经网络架构的基础上,提出了一种改进的火灾检测模型。为了增强特征传播的精度,降低存储数据量,本文采取结构化稀疏操作,通过将网络卷积核分为多个组,在训练过程中逐渐减小每个组内不重要的参数连接。同时,本文引入Focal损失函数对分类层进行火灾识别,大大增强了模型的泛化能力。大量的定性定量实验表明本文提出的火灾检测方法能够有效定位到火灾图像位置,对于火焰、烟雾等火灾现象均能有效识别,且不易受干扰环境的影响,适合工程应用。下一步,我们将着手在现有硬件平台下对网络模型进行移植,为油气田安全、高效生产运行提供技防保障。

猜你喜欢
火焰卷积火灾
《火焰》
最亮的火焰
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
电子制作(2019年11期)2019-07-04 00:34:38
漂在水上的火焰
基于傅里叶域卷积表示的目标跟踪算法
遇火灾怎么办?
吹不灭的火焰
学与玩(2017年6期)2017-02-16 07:07:22
掌握火灾逃生知识
一种基于卷积神经网络的性别识别方法
电视技术(2014年19期)2014-03-11 15:38:20