高杨
(西藏自治区科技信息研究所,西藏 拉萨 850008)
随着全国范围内的城镇乡村不断融合,人员聚集度越来越高,火灾防控压力急剧增加。据统计,2020年全国共接报火灾25.2万起,含重大火灾1起,较大火灾65 起,1183 人死亡,775 人受伤,造成40.09 亿元财产损失[8],其中很多是没有配备有效的火灾探测器/探测系统导致的。
实现更早、更有效地发现火灾,在楼道、房间等室内布局监测点的同时,室外的大场景火灾监测也极为重要。针对传统点式传感器融合的火灾探测技术无法处理大场景的检测需求,越来越多的科研人员将发展突破口瞄准了人工智能技术。宋卫国等[1]运用BP神经网络开展火灾探测,对比常规火灾探测系统,改算法检测精度有所提高。Qiu G Q 等[2]运用改进帧差法捕捉火焰运动的特征,依据Lab 颜色空间捕捉火焰颜色的特征,判断图像中是否存在火情,算法能提高检测率,但普适性较低。Dunnings A J 等[3]应用In‐ception 网络,研究了实时范围内视频(或静止)图像中火像素区域的自动检测,降低网络架构的复杂度,相对性能得到提升。李杰等[4-7]将火灾探测与卷积神经网络进行深层次结合,提升检测性能。本文主要在前人研究基础上,进一步提升深度神经网络在火灾探测上应用的检测速度。
为解决传统神经网络连接计算量大、泛化能力弱、缺乏特征描述的问题,拥有局部感知的前馈神经网络卷积神经网络(CNN)应运而生。经典卷积神经网络有AlexNet、VGGNet、GoogLeNet 等。CNN 一般包含卷积层、池化层和全连接层。卷积层以卷积计算的方式见式(1),选取一定尺寸的核函数w 作为感受野,滑动提取感受野尺寸的特征值S;最终以权值共享和多核运算来减少参数数量、提升特征提取质量。
池化层一般在卷积层之后,总结并选取特征结果,池化公式见式(2)。卷积层产生的多个特征图FK,经过特定的pooling 操作GP后,形成融合特征ZK。常用的池化操作有average pooling、max pooling,池化操作可减少参数,防止过拟合。全连接层主要是连接各个神经元,进行最终分类。
GoogLeNet 衍生出Inception 结构,Inception V1 设计22 层网络,利用1x1、3x3、5x5 尺度的卷积核,广泛地提取目标图像的特征,并通过1x1 的卷积核降低特征图厚度,增加网络的宽度,提升网络应用的普遍性。图1所示。
图1 Inceptionv1网络结构图
Inception V2 在V1 基础上,先是将5×5 的卷积核拆成两个串行的3×3卷积核,再把n×n的卷积核,拆分为串行的1×n、n×1卷积核,从而降低运算量。
Inceptionv3 扩大网络至46 层,共包括11 个In‐ception 模块,添加RMSProp 优化算法加快训练速度。加入BN 算法,以处理神经元的方式来处理特征图,对整层数据进行归一化处理,消除梯度弥散问题,提高了计算速度。
以Simple Linear Iterative Clustering(SLIC)算法先对图像执行迭代聚类以减少空间上的网络参数,分割图像成相同大小的超像素,再输入改进的Inceptionv3网络,进行火灾探测,最后输出是否发生火灾及火源位置。
SLIC是以图像的色彩、纹理、明暗度等为标准,将邻域内的像素聚类划分,得到具有相似特征的超像素。经过SLIC的预处理操作,使得本应计算所有像素点数量缩小到超像素的个数,从源头上减少了输入参数。具体实现步骤有以下三步:①初始化聚类中心,设置超像素的大小;②在每个聚类中心的领域内,推举出最小梯度像素点作种子点;③对聚类中心领域内的像素点进行打标,明确所属的聚类中心;④分别算出像素点与种子点的位置距离DC、色彩距离Ds,归一化为距离D,D 表示聚类像素点的相似度,计算见式(3~5);⑤通过对步骤②③④进行一定次数的迭代,来寻找出最为合理的聚类划分,图2为超像素分割图效果。
图2 Inception V1网络结构图
在传统Inception V3 的基础上,将11 个Inception模块缩减为3个,从而达到简化网络结构,精简参数数量,达到计算速度提升的效果,图3所示。第一层为卷积operation,设置卷积核数量为32,尺寸为1×1,滑动步长为2,通道数量为3,valid 补洞策略,relu 激活函数,输出得到111×111×32 尺寸的图。第二、三层继续进行卷积operation。第四层为池化operation,设置池化方式为max pooling、窗口尺寸为3、滑动步长为2,得到49×49×64尺寸的特征图。经一系列卷积、池化operation 后,由softmax 进行归一化处理,得到一个概率值。
图3 Inception V3-onfire网络架构图
实际实验中,根据输出结果对网络进行了调整,调整后的3 种Inception 模型结构如图4~6。Inception A 与传统Inception V1 结构类似,采用1x1,3x3,5x5 三种卷积核进行特征提取。Inception B 与Inception V2设计理念类似,将n×n 的卷积核尺寸分解为1×n 和n×1。Inception C则对网络再次进行细化。
图4 Inception A结构图
图5 Inception B结构图
图6 Inception C结构图
实验使用的硬件平台为10 核inter(R) Xeon(R)CPU E5-2630 v4 @2.20GHz 和8G 显存的NVIDIA RTX2080 SUPER GPU,软件开发环境为Python3.7,搭建模型使用的框架为tensorflow1.15、opencv4.5,所使用的操作系统为ubuntu16.04。
由于目前公开的火灾视频、图像数据集较小,本文采用Selenium 自动化测试工具和icrawler 框架进行爬虫,共完成了近14000条火灾数据集的采集,并利用labelImg 工具,人工标注图像,如图7 所示。其中10000条提供训练,4000条提供测试。
图7 labelImg工具标注图
在读入数据后,先将数据调整为224×224×3 大小,再应用SLIC 进行图像分割,最后将getlabel方法打标好的数据传给CNN。CNN 选取categorical_cros‐sentropy 交叉熵损失函数、rmsprop 优化器以及softmax激活函数,设置30 个epochs,学习率learning rate 设定为0.001。实际火灾检测效果如图8所示。其中,红色标记为火源区域,绿色标记为无火区域,直观视觉认为算法能够精准判断是否发生火灾并锁定火源位置。
图8 火灾检测效果图
为充分评估本文算法Inception V3-onfire的效果,将实验结果与Qiu G Q 等[2]研究成果Inception V1、Inception V1-onfire 对比情况见表1。从表中可看出,Inceptionv3-onfire 虽然在准确率上有所下降,但网络参数数量有所减少,检测速度有较大提升,总体检测性能良好。
表1 网络结构效果对比表
本文运用网络爬抓等技术手段,构造了一定体量的火灾视频、图片数据集。以SLIC算法为预处理环节的核心算法,将图像分割为具有一定相似度的超像素。在InceptionV3的基础上,进一步简化网络结构,缩小参数数量,形成了改进算法。总体而言,本算法应用卷积神经网络算法,实现了具有良好检测效果的火灾探测的算法设计,但因未应用更先进的深度学习算法,以及缺少更大体量的实验数据集等原因,深度学习算法在火灾探测方向的应用还具有很大提升空间。