APP下载

基于ELU卷积神经网络的视频烟雾检测

2020-07-10郝建红范宗皓

燕山大学学报 2020年4期
关键词:烟雾卷积神经网络

郝建红,范宗皓,王 晖

(华北电力大学 电气与电子工程学院,北京 102206)

0 引言

2007-2016年全国共发生火灾228.14万起,死亡人数15 124人,受伤人数9 561人,事故造成直接财产损失283.92亿元[1]。火灾带来的危害是非常严重的,在火灾发生之前能够及时检测到烟雾对于杜绝事故的发生是极其重要的。然而由于烟雾边界具有不确定性、半透明性和易受其他因素影响的特性[2],导致传统的图像识别方法对于烟雾的检测存在较大的缺陷和局限性。对烟雾的检测,不同的学者都提出了不同的解决办法,文献[3]和文献[4]采用颜色、形态和运动相结合的方法来识别运动的烟雾,但是在烟雾变化缓慢或者白雾的情况下并不能准确识别,有一定的误判率。文献[5]提出了一种基于Gabor小波的火灾烟气模型,利用Boosting分类器对提取的特征进行分类和匹配,然而对训练条件要求比较严格,仍有改进空间。文献[6]提出了一种基于RGB与HIS颜色空间模型的火焰检测方法,然而在干扰性较大的背景下,效果不是很理想。文献[7]提出了一种基于累积运动量的烟雾检测方法,然而烟雾的运动方向采用的是简单的像素求和,导致方向的估计不够准确。文献[8]采用基于迁移学习的神经网络进行烟雾识别,具有较高的识别精度,然而网络层数高达16层,复杂度较大,计算量较高。

深度学习中的卷积神经网络(Convolutional Neural Networks,CNN)是一种特殊的深层神经网络模型,与传统神经网络相比,其局部连接、权值共享、池化实现的特性既能降低网络模型的复杂度减少计算量又能达到识别位移、缩放和扭曲不变性的目的[9],因而常用于图像的识别与分类,但目前用于烟雾的检测还很少。文献[10]将BP神经网络用于驾驶员的行为判断,并取得不错的检测效果,验证了BP算法更新神经网络是很有效的,故本文的权重更新也采用BP算法。CNN的激活函数一般采用的是RELU函数(本文把采用RELU的CNN简称为RELU_CNN),但是随着层数的增加,会进入硬饱和区,权值无法更新,影响收敛速度,导致学习效率低[11]。文献[11]利用ELU激活函数代替RELU函数,解决了RELU函数左侧硬饱和问题,并用于舰船的检测具有很高的识别率。本文针对上述若干问题尝试将ELU卷积神经网络用于烟雾的检测,实验结果表明该方法具备更快的学习效率,比传统方法具备更高的识别率和更低的误检率。

1 数据集制作

卷积神经网络需要大量的样本训练模型,但由于烟雾缺乏较为权威和统一的数据集,本文的数据集来源于网上(http://staff.ustc.edu.cn/~yfn/vsd.html)和自制。故会出现样本的尺寸不一,需要统一尺寸。传统的运动和颜色相结合的方法对具有烟雾的视频识别率很高,故本文利用该方法的优势对烟雾视频进行识别制作具有烟雾特征的训练样本。

1.1 烟雾训练样本制作

具有烟雾特征的训练样本制作流程图如图1所示。

图1 烟雾样本制作流程图
Fig.1 Sample production flow chart

具体制作流程为:

1) 读取12段具有烟雾特征的视频,将每一帧视频输入系统中;

2) 首先利用文献[12]的背景减除法和文献[13]的颜色特征法,找出动态的烟雾目标,然后用开运算消除噪声,最后结合轮廓检测法用32×24矩形框标记出烟雾特征区域;

3) 利用标记好的矩形框裁剪视频,并保存在本地硬盘上作为样本使用,共制作了10 000张具备烟雾特征的样本,作为烟雾训练样本。而对于负样本用了10段没有烟雾的视频,截取32×24像素并保存在本地即可,加上网上收集的无烟雾图片,共制作了10 000张负样本。

1.2 烟雾检测视频制作

由于样本的制作格式是32×24像素,为了方便检测烟雾,利用了像素关系重采样法把一些尺寸较大的视频进行了裁剪和缩放,从而可以避免波纹出现,并统一制作成了320×240像素尺寸的视频,共制作了12段具有烟雾的视频和10段无烟雾的视频作为测试视频。

2 烟雾检测过程

CNN与传统神经网络相比,能够降低模型的复杂度减少计算量。RELU_CNN的激活函数存在左侧硬饱和的问题,影响权值更新,导致学习效率低,而ELU左侧输出不为0,输出均值趋于0,能够使算法收敛性更快、学习效率更高。在本文构建的CNN模型中,激活函数由RELU替换为ELU(本文把采用ELU的CNN简称为ELU_CNN),可以解决RELU函数影响算法收敛速度的问题,同时借鉴文献[14]滑动窗口的思想先把视频每一帧均匀分块,再输入CNN网络来检测烟雾。

2.1 烟雾算法检测过程

检测烟雾的算法流程图如图2所示。

图2 烟雾检测流程图
Fig.2 Flowchart of smoke detection

具体检测流程如下所示:

1) 将待检测视频输入系统;

2) 对输入图像进行按照32×24像素划分区域,利用背景减除法结合开运算先提取出运动区域的特征作为待识别图像,这样就不需要把整个图像输入后面的网络,既能先排除部分非烟雾视频,又能够减少系统运算量,加快识别速度;

3) 将待检测图像输入训练好的烟雾检测模型进行识别;

4) 利用矩形框标记出识别的烟雾区域。

2.2 烟雾检测模型

CNN 通过卷积操作,组合低层特征形成更加抽象的高层特征,使模型能够针对目标问题,自动学习良好的特征[15-16]。故利用CNN可以通过大量的训练样本自动学习烟雾的特征,解决人工选择单一,鲁棒性差的问题。

本文采用随机组合方式每次从20 000张训练样本里选取64张图片进行CNN训练,共训练10 000次,相当于对640 000张图片进行了烟雾识别训练,既能解决单次训练20 000张样本耗时严重的问题,又能变相增加了训练的样本数,其检测模型如图3所示。

图3 烟雾检测模型
Fig.3 Smoke detection model

从图3可看出本文的烟雾检测模型包括输入层、3层卷积层、3层池化层、2层全连接层、输出层,其参数配置如表1所示。

表1 烟雾检测模型参数配置表 Tab.1 Table of smoke detection model parameter configuration

特征图数核大小步长输出节点数输入层3——32×24×3卷积层1325×5132×24×32池化层132—216×12×32卷积层2965×5116×12×96池化层296—28×6×96卷积层31285×518×6×128池化层3128—24×3×128全连接层1———1 536全连接层2— ——1 024 输出层———2

该模型能够学习到大量的输入和输出的映射关系,其采用BP算法负向反馈来更新卷积层和全连接层的权重和偏置,更新公式为

(1)

式中,w′表示更新过的权重,b′表示更新过的偏置,w表示更新前的权重,b表示更新前的偏置,dw表示负向反馈的更新权重值,db表示负向反馈的更新偏置值,α表示学习率。

卷积层和全连接层输出z为

z=wx+b,

(2)

式中,x代表该层的输入。

在BP算法中引入损失函数,目的是输出的烟雾特征与期望的烟雾特征无限逼近。本文采用的损失函数是交叉熵函数,其公式为

(1-y(i))log(1-a(i))],

(3)

式中,i代表的是样本数,m是训练样本的总数,a(i)是期望的输出,y(i)是实际的输出,通过该式对w和b求偏导,来反向更新权重和偏置。

根据文献[17],为避免过拟合,在全连接层采用Dropout方法舍弃部分神经元。在模型训练过程中每一层卷积层输出都会经过激活函数,使其非线性化,然而由于激活函数会影响w和b的更新,从而影响模型的训练效率,故下文将分析常用的激活函数和本文模型所采用的ELU激活函数。

2.3 烟雾检测模型激活函数

激活函数Sigmoid、Tanh在学习率选择不当时,容易找不到全局最小值,并且经过多层神经网络,其偏导数趋于0,而激活函数RELU的输出值没有负值,故输出的均值会大于0,当激活值的均值非0时,就会对下一层造成均值偏移[18-19],如果激活值之间不会相互抵消,随着神经网络的增加,偏移量就会越大,导致训练过程不稳定,同时负区间偏导数为0,学习效率慢。本文基于烟雾独有的特征采用ELU激活函数替代传统的激活函数,其具备了RELU和Sigmoid的优势,具有左侧软饱和性,4种激活函数对比图如图4所示。

图4 4种激活函数对比图
Fig.4 Four activation functions comparison chart

ELU激活函数数学公式为

(4)

其导数公式为

(5)

将式(2)和(5)代入(3)得

z>0时:

(6)

z≤0时:

(7)

3 实验结果与分析

实验机器采用Intel I5-4570 的 CPU,8G 内存,Ubuntu操作系统。在 pycharm环境中使用 python3.6 语言编写程序。模型的构建、训练和检测功能模块都是基于tensorflow。

为了验证上述构建的ELU_CNN模型检测烟雾准确率,本文分别用RELU_CNN和ELU_CNN对22段视频共7 234帧样本进行检测实验,其中12段是有烟雾的视频,共5 247帧,10段是无烟雾的视频,共1 987帧,算法检测出的烟雾用白框画出,部分视频烟雾检测结果如图5所示,所有视频帧的检测结果如表2所示。

图5 部分视频烟雾检测结果
Fig.5 Part of the video detection results

表2 烟雾检测结果

Tab.2 Smoke detection results

方法烟雾帧数非烟雾帧数T1 F1T2F2RELU_CNN 5 247 1 987 4 794 453 1 744243ELU_CNN 5 247 1 987 4 816 431 1 814173

烟雾识别结果一般用漏报率M、误报率F和准确率A衡量, 计算公式分别为

式中,T1表示烟雾样本中被识别为烟雾的帧数,F1表示烟雾样本中未被识别为烟雾的帧数,F2表示非烟雾样本中被识别为烟雾的帧数。

表3对本文提出的ELU_CNN与文献[3]的颜色+运动+形态方法、文献[5]的基于 Gabor 小波的检测方法以及RELU_CNN进行了比较。然而由于文献[3]和文献[5]的数据与本文数据的误报率和漏报率定义不一致,故将文献[3]和文献[5]的数据按照本文的定义统一化以后与RELU_CNN和ELU_CNN的测量数据对比如表3。

表3 烟雾检测的4种方法对比结果
Tab.3 Comparison of four smoke detection methods

颜色+运动+形态方法基于Gabor小波的检测RELU_CNN ELU_CNN漏报率 14.29% 10.29% 8.63% 8.21%误报率 5.88% 6.15% 4.82% 3.47%准确率 90.32% 94.15% 95.18% 96.53%

从表3可看出,本文所提出的方法准确率是最高的,达到了96.53%,而且漏报率和误报率均得到了不同程度的降低。同时在Ubuntu上利用tensorflow框架进行训练样本实验,相同条件下,相同结构的RELU_CNN模型训练时间为78 min,ELU_CNN模型训练时间为66 min,训练时间减少12 min,训练效率提升了15.4%,并且准确率提高了1%,说明ELU_CNN相比RELU_CNN学习效率更高,收敛更快。

4 结论

本文从理论上分析比较了采用ELU函数的烟雾检测模型相比采用Sigmoid、Tanh和RELU具有输出均值不为0的优势,同时分别搭建了9层RELU_CNN模型和ELU_CNN模型,对22段视频进行测试。实验结果证明相比颜色+运动+形态方法、基于 Gabor 小波和RELU_CNN模型,ELU_CNN模型的烟雾检测准确率能够提高1~5个百分点的同时,降低误检率和漏报率,并且相比RELU_CNN训练时间减少了12 min,训练效率提升了15.4%,由此可看出ELU激活函数还具有提高训练速度、加速收敛的效果。

猜你喜欢

烟雾卷积神经网络
基于3D-Winograd的快速卷积算法设计及FPGA实现
薄如蝉翼轻若烟雾
卷积神经网络的分析与设计
影视剧“烟雾缭绕”就该取消评优
神经网络抑制无线通信干扰探究
从滤波器理解卷积
基于神经网络的中小学生情感分析
基于傅里叶域卷积表示的目标跟踪算法
咸阳锁紧烟雾与尘土
基于神经网络的拉矫机控制模型建立