文献标识码:A
DOI:10.16157/j.issn.0258-7998.180118
中文引用格式:王涛,宫宁生,蒋贵祥. 基于深度学习的烟雾识别研究[J].电子技术应用,2018,44(10):131-135.
英文引用格式:Wang Tao,Gong Ningsheng,Jiang Guixiang. Smoke recognition based on the depth learning[J]. Application of Electronic Technique,2018,44(10):131-135.
0 引言
火灾对人类社会造成的伤害无可估量,每年都有大量的生命财产因为火灾而蒙受了巨大损失,不同于室内火灾监控技术的成熟,户外火情由于各种因素的影响为实时监控带来了困难。随着计算机技术的发展和图像识别技术的广泛普及,通过视频监控智能地进行火情监控将是未来火灾预警的重要手段。由于野外火情具有相当的隐蔽性,直接对火焰检测效果甚微,而对火情发生时产生的大量烟雾进行检测就成为了一个有效的方案,如何提高烟雾的识别率和效率就成为了当前研究的重点。
近年来众多研究学者在烟雾检测方面做出了许多研究,众多学者提出了许多对于烟雾检测的方法和方案。其中李红娣等[1]提出的采用金字塔纹理和边缘特征的检测方法,王欣刚等[2]利用运动检测和小波分析的方法进行检测,袁非牛等[3]提出了根据运动方向进行判断的检测方法。这些方法多为现今烟雾识别领域的主流方法,但是由于此类算法多是基于单一颜色和运动变化等方面对烟雾检测或需要大量运算难以保证检测的实时性,在复杂环境条件下应用尚有不足,再进行田地里的秸秆焚烧监控时,由于干扰量多且实时性和准确性要求较高,这种情况下传统方法难以达到预期效果。
深度学习领域近来发展迅猛备受关注,成为了目前各行各业研究的热点,同时国家也对人工智能深度学习方面进行大力扶持。不久前AlphaGo在围棋上大获全胜更使得深度学习成为了热门话题,深度学习在人工智能[4]、语音识别[5]和图像识别等方面都有突出表现,其中在图像识别方面的应用已经较为成熟,通过深度网络抽取目标特征加以识别被广泛应用。因此,本文针对传统烟雾检测算法的不足,通过深度学习算法对烟雾进行实时监测预警,经过实验验证该算法识别率高具有较好的检测效果,并且大幅优化了深度学习中由于复杂的神经网络而造成的大量运算,相比于传统图像识别方法有更好的自适应性和灵活性。
1 视频运动检测
由于在发生火情形成烟雾的情况下烟雾不是静止不动的而是运动状态,因此可以对视频中运动物体进行检测来提取疑似烟雾目标,但是由于烟雾具有移动缓慢的特点,传统的光流法、帧间插法、背景插法等运动检测算法检测效果不佳。针对这些不足,本文综合帧插与背景插法结果叠加从而准确有效地检测运动区域。
首先对具有n帧的连续视频片断中全部的n帧进行三帧插处理,即在第i帧与i-1帧、i+1帧这3帧之间做两两帧插,帧插公式如下:
最后将三帧插结果D与背景插结果做或运算,结果即为本文运动检测结果。接下来对检测到的运动目标区域送入深度学习模型检测。
图1为对田间烟雾进行运动检测的效果,基本保留了烟雾整体形态,具有较理想的效果,可以将烟雾区域基本选取出来。
2 数据预处理
深度学习通过对数据的特征分析从而完成对模型的训练,通常一个图像数据中包含了大量信息,而对最终的学习效果产生影响的只有主要特征,而大量特征造成了数据冗余而使得运算效率大打折扣。一个500×500大小的视频帧图像其原始特征就会达到M=250 000维,这在应用过程中产生了庞大的运算量,严重影响到运算效率。由于本文应用的系统目标是对烟雾进行实时的监控报警,对算法实时性有较高要求,因此为了减少图像在训练、测试和检测过程中的运算量、提高运算效率,对图像数据使用经验值法[6]进行灰度化处理后利用PCA算法进行数据的降维处理,以减少无关特征的影响。
3 卷积网络模型构建
卷积神经网络(CNN)是一种深度学习的架构,在人工智能、文本处理、图像识别等方面被广泛应用。卷积神经网络对烟雾识别的主要过程是使用现有烟雾图像对网络进行训练,进而提取烟雾图像特征,由于类似于人类的记忆学习过程近似,故被称为网络的学习过程。本文通过预处理的烟雾图像数据集对卷积神经网络训练提取烟雾特征,并结合Inception Resnet v2[7]网络模型进行烟雾检测,在基于TensorFlow[8]的多GPU支持下本文对烟雾特征的提取训练时间大大缩短。
3.1 基本卷积神经网络原理
卷积神经网络是一个利用反向传播算法进行特征训练的多层神经网络,卷积核就是其核心,当前在各领域被广泛运用。一个基本的卷积神经网络通常是由一系列卷积层、非线性层、池化层和完全连接层组成的。与普通神经网络不同,在卷积层中一个神经元只与部分相邻层的神经元相连,图2展示了一个卷积神经网络卷积的基本结构。
从图2中可以看出,在前几层里每一层的节点和上一层部分节点相连,全连接层中每个节点与上一层的全部节点连接。根据不同需求可以构建多层神经网络,为了使神经网络能够解决更复杂的问题,使用具有更多层次的网络可以识别更高级的特征,多层网络中上一个卷积层的输出即为下一层的输入。但是网络层数增加的同时也带来参数过多、资源消耗过大、网络退化等问题。
3.2 网络模型构建
针对深层网络的退化、效率低、资源消耗大等问题,本文在Inception Resnet v2网络模型的基础上对神经网络进行了改进。在增加了卷积层数提高特征提取的精度的同时,避免由于网络的加深训练误差和测试误差加大造成的网络退化的现象,并确保资源的消耗尽可能地低,使用Inception结构和全局池化层增加计算效率,使用Resnet残差块解决深层网络的退化问题。
Inception结构将不同的卷积层以并联的方式连接;Inception使用不同尺寸的过滤器,将各自的处理结果拼接成一个更深的矩阵;Inception结构增加了网络深度和宽度,可以更好地提取特征,同时减少了参数,保证了计算效率。图3展示了Inception模块结构。
Resnet残差网络利用shortcut将一个卷积层的输入和输出连接起来即构成了一个残差块, 当残差函数F(x)与输入向量大小相同时,使用式(9)表达残差块公式:
式(10)中使用线性投影Ws进行维度匹配。残差网络的使用最大限度地解决了因为网络深度增加而带来的退化问题。在网络最后一层使用全局池化层代替全连接层,对全部的输出特征图进行全局均值池化得到输出,取消了全连接层可以大幅减少参数,避免了全连接层由于参数过多而造成的过度拟合和过度消耗资源。
图4展示了改进后的网络结构,由于模型深度很深,为了能更直观地展示,将部分重复的残差区块进行了压缩。整个模型架构由40个Inception Resnet模块组成,整个模型中有233个卷积层。Inception Resnet模型可以快速准确地提取更多的特征,使得训练和检测过程中的效率和准确率都进一步得到了保证。
4 算法流程
本文的烟雾检测系统流程分为对神经网络的训练和烟雾检测实现两个部分。图5展示了算法的整体流程。
图5中,上部分为网络的训练过程,数据集经过预处理后送入网络模型中进行训练,最终得到经过数据训练的网络模型。下部分为烟雾视频检测,对原始视频流进行运动检测后,将运动目标送入训练完成的网络中识别,若检测为烟雾图像则将其在原始图像中标记后进行报警。
5 烟雾识别的实现与分析
本文基于Google开源的TensorFlow平台构造深度学习网络模型,考虑到算法实时性要求使用GPU进行硬件支持,实验环境为Windows10系统下的tensorflow1.2的GPU版本,硬件设备为NVIDIA TESLA K80显卡。
5.1 数据集准备
首先收集含有烟雾的图像制作训练数据集,将1 000张包含烟雾的图像和500张其他干扰图像作为训练数据,将其中1 000张作为训练数据集,500张作为测试数据集。将全部训练数据集和测试数据集的图像进行灰度化和PCA降维处理后使用深度学习网络进行训练学习。其中每个图像都包含了对应的分类标签。
5.2 模型训练
得到训练数据集后,通过深度学习网络模型对数据集进行训练,训练过程可以通过Tensorboard可视化工具进行观察分析。
图6即为训练过程中损失函数Loss的变化趋势,可以看出整个训练过程进行了10 000次迭代,其中在到达6 000次的时候损失基本趋于稳定,训练过程基本达到预期。该算法的训练效率对运行环境有较高的依赖,本文实验仅在单GPU环境下进行,通过提高GPU的数量并行运算可以使得训练时间大幅缩短。
5.3 结果分析
训练完成后使用模型对图像进行识别,为了检验本文算法在户外实时烟雾检测过程中的效果,截取了3段不同环境下的烟雾视频,共有52 300帧,其中有烟雾的帧数为37 201帧,测试视频情况如下。
分别对田间、树林、工厂不同环境下的监控视频进行检测,表1展示了实验后的结果统计,通过深度学习算法进行烟雾检测结果准确率满足了实际应用要求。表2展示了本文算法与当前主流烟雾检测算法对比情况。
通过表2可以看出本文算法相对于其他烟雾检测算法减少了误检、漏检情况的发生,检测准确率高于其他算法,并且本文算法的准确率与训练数据有较大关系,后期通过提高烟雾图像数量和迭代次数对模型进行进一步训练,检测准确率有进一步提高空间。
图7展示了各个烟雾检测算法的检测效率,本文算法在运行效率方面与当前主流方法相差不大,其中由于大运算量的小波分析影响,王欣刚[2]的算法相对效率较低,而常规的深度学习算法由于没有经过视频流的运动检测和数据降维的处理造成了大量的无用运算,因此效率很低无法运用到实际项目中。
本文算法实现了对烟雾进行实时监控的目的,并在算法准确率和效率之间达到了较好的平衡。
5.4 实际应用效果
图8展示了本文算法在某地秸秆焚烧监控系统中的实际应用效果,识别过程中将模型认为是烟雾区域概率大于50%的区域进行了框选,4幅图像均采用了室外秸秆焚烧的烟雾图像,可以看出烟雾均被准确检测。
经实际运用验证了该算法在田间的烟雾识别效果较好,工厂环境下由于房屋等建筑干扰和工厂中工业制造所排放的烟雾干扰造成了识别效果有所下降,但识别率均达到了90%以上,总计漏检率为3.3%,误检率为4.3%,最终准确率为92%。本文算法成功达到了秸秆焚烧监控目的,并且在进一步增加训练数据集的情况下准确率有进一步提高空间。
6 结论
本文基于TensorFlow平台利用PCA降维算法和深度学习对预处理后的烟雾图像进行训练提取烟雾图像主特征,并对图像中的烟雾区域进行识别。相比于传统的图像识别方法,基于深度学习的识别具有自学习和适应能力,可以更好地对目标进行识别。经实验验证,该方法具有较高的识别率,可以有效地对烟火进行检测,对室外的烟雾报警火灾预防有较好的应用价值。
参考文献
[1] 李红娣,袁非牛.采用金字塔纹理和边缘特征的图像烟雾检测[J].中国图象图形学报,2015,20(6):772-780.
[2] 王欣刚,魏峥,刘东昌,等.基于烟雾动态特征分析的实时火灾检测[J].计算机技术与发展,2008,18(11):9-12.
[3] 袁非牛,张永明,刘士兴,等.基于累积量和主运动方向的视频烟雾检测方法[J].中国图象图形学报,2008,13(4):808-813.
[4] BENGIO Y.Learning deep architectures for AI[J].Foundations & Trends in Machine Learning,2009,2(1):1-127.
[5] GRAVES A,MOHAMED A R,HINTON G.Speech recognition with deep recurrent neural networks[C].IEEE International Conference on Acoustics,Speech and Signal Processing.IEEE,2013:6645-6649.
[6] 陈锻生,宋凤菲,张群.一种彩色图像灰度化的自适应全局映射方法[J].计算机系统应用,2013(9):164-167,171.
[7] SZEGEDY C,IOFFE S,VANHOUCKE V,et al.Inception-v4,Inception-ResNet and the impact of residual connections on learning[Z].2016.
[8] ABADI M,AGARWAL A,BARHAM P,et al.TensorFlow:large-scale machine learning on heterogeneous distributed systems[Z].2016.
作者信息:
王 涛,宫宁生,蒋贵祥
(南京工业大学 计算机科学与技术学院,江苏 南京211816)