巩家昌, 李齐杰
(中国刑事警察学院声像资料检验技术系, 沈阳 110854)
烟雾是火灾早期呈现的主要特征,因此烟雾的有效探测成为火灾预警的主要技术途径。对于传统的烟雾探测器,只有当火灾烟雾接近探测器并且烟雾浓度达到报警阈值后才能触发报警,这种报警方式势必对实际火灾响应不够及时,尤其在高大空间场所的应用过程中,需要火势很大时才能触发感烟探测器发出火灾报警信号。随着安防视频监控系统的普及和计算机模式识别技术的快速发展,基于视频图像的烟雾识别方法已经发展为早期火灾探测预警的有效技术手段[1]。
烟雾图像识别一般包括烟雾特征提取和分类器最终识别两个阶段。因为烟雾特征的准确提取很大程度上影响最终的识别性能,近年来,学者们主要集中于烟雾特征提取问题的研究。纹理特征在烟雾图像识别任务中首先被广泛关注。为了获取烟雾纹理特征的空间分布,Yuan等[2]提出了局部二值化模式(local pattern pattern, LBP)的子方向直方图改进烟雾识别性能。张洁等[3]提出了基于纹理特征和轮廓光流矢量的烟雾识别方法来提高火灾探测的准确性和快速性。Yuan等[4]通过在每个图像像素进行高阶方向导数编码,提出了具有保持局部投影的高阶局部二值化模式。Singh等[5]提出了多通道解码的二值化模式去改善烟雾图像识别性能。除了烟雾图像纹理特征之外,小波变换也成为了描述烟雾图像的重要方法。Gubbi等[6]从三级小波变换图像中的每个子带提取小波特征用于烟雾识别。这些特征包括算术均值、几何均值、标准差、偏度和峰度。Ferrari等[7]使用小波变换去构建一个隐马尔科夫树模型去改善烟雾识别准确率。然而,烟雾颜色、纹理和形状常常因为光照条件和周围环境而呈现不稳定的变化,上述的烟雾特征提取方法通常面临计算复杂和鲁棒性不足的问题。
卷积神经网络(convolutional neural network, CNN)在图像识别[8-13]任务中已经取得了显著的效果。它能够从输入图像中自动学习区分能力强和鲁棒性强的图像特征。浅层卷积层提取像边缘和纹理的简单特征,而深层卷积层提取更加抽象具体的图像特征。有学者已利用CNN提升了烟雾图像的识别性能。Yin等[14]在原有的CNN卷积层结构中增加批规范化运算来增加烟雾识别性能。Yuan等[15]采用并行的卷积结构来提取烟雾图像的多尺度特征,进而提升烟雾识别性能。杨剑等[16]对残差网络进行结构改进,实现精确的烟雾区域检测。Gu等[17]设计了对偶深度卷积神经网络,增强了烟雾识别的鲁棒性。
针对烟雾图像识别任务,进一步考虑烟雾图像的全局信息、多尺度信息流通和计算效率,提出了稠密和非局部卷积神经网络(dense and non-local CNN, DNLCNN)。首先,利用稠密连接和非局部运算构建基本卷积块,稠密连接可以促进卷积层间的信息流通和特征重利用,而非局部运算可以方便与卷积层进行结合,增强卷积过程中的全局信息。然后,堆叠若干基本卷积块和采取多尺度策略,搭建用于烟雾识别的卷积神经网络结构。
首先构造基于稠密连接和非局部运算的基本卷积块,然后将基本卷积块进行堆叠搭建用于烟雾识别的DNLCNN网络。
稠密卷积神经网络(DenseNet)[12]中卷积层间的稠密连接结构增强了卷积层特征图之间的特征重利用,保证了网络中最大程度地信息流通。
DenseNet中的稠密基本块包含l个卷积层,第l个卷积层连接所有以前的卷积层特征图c0,c1,…,cl-1,
cl=Hl([c0,c1,…,cl-1])
(1)
式(1)中:[c0,c1,…,cl-1]为来自第0,1,…,l-1层卷积层特征图的拼接融合;Hl(·)为连续的计算单元序列,包括批规范化(batch normalization, BN)、限制线性单元激活函数(rectified linear unit, ReLU)和卷积核为1×1的卷积运算,再接入另外3个连续运算:BN、ReLU和卷积核为3×3的卷积运算,输出数目为k的特征图,这里k称为扩张率。
为了清晰和便捷地表达,后续提到的卷积层指的是上述连续计算单元序列组合。在一个稠密基本块中,如果每个卷积层经Hl(·)后输出k个特征图,则第i个卷积层的输入特征图数目为k0+k(l-1),其中k0为当前稠密基本块输入层的特征图数目。扩张率k控制每个卷积层对整个稠密基本块的信息贡献程度。包含3个卷积层的稠密基本块结构如图1所示。
图1 包含3个卷积层的稠密基本块Fig.1 Dense basic block comprising 3 convolutional layers
卷积运算通常只考虑图像像素位置的邻域局部信息,而对于烟雾图像识别任务,烟雾图像的整体全局信息十分重要。为了在卷积运算过程中引入全局信息,借鉴非局部均值和非局部神经网络[18]设计,在稠密基本块中引入非局部运算来获取全局信息。深度卷积神经网络中的非局部运算被定义为
(2)
式(2)中:i为图像当前像素位置的指标;j为所有可能参与计算像素位置的指标;x为输入信号;y为输出信号;函数f计算位置i和所有位置j之间的关系;函数g计算输入信号在位置j处的特征表示;输出响应被函数C(x)规范化。
利用Gaussian函数估计像素之间的关系可表示为
f(xi,xj)=exiTxj
(3)
非局部运算是一个灵活的卷积运算构件,非常便捷与已知的卷积运算相结合,因此非局部运算被增加到上述的稠密基本块,与所有的卷积核为3×3的卷积层相结合,最终构成了稠密和非局部基本卷积块。
用于烟雾识别的DNLCNN由上述若干的稠密和非局部基本卷积块堆叠而成,详细的网络构成描述如下。
1.3.1 扩张率增加
原来的DenseNet网络结构包含很多稠密块,每个稠密块包含一些卷积层[12],每层产生k个新的特征图。考虑到深度卷积神经网络结构通常更依赖于深层的具体抽象特征,随着网络深度的增加而增加扩张率k,如在第m个稠密和非局部基本卷积块中,扩张率设置为k=mkinit,其中kinit为第一个稠密和非局部基本卷积块中设置的扩张率。这样增加了来自更深卷积层特征的计算比重,使得DNLCNN能够更多考虑具体抽象的高水平特征。
1.3.2 压缩
为了进一步对模型进行参数压缩,在相邻稠密和非局部基本卷积块之间设计了压缩层,实现了卷积特征图分辨率和特征图通道数目的同时压缩。压缩层将特征图分辨率压缩为原来的1/4,将特征图通道数目压缩为原来的1/2。压缩层使得整个DNLCNN结构更加紧凑,保证最终的特征图通道数目在合理的范围之内。
1.3.3 多尺度特征连接
卷积神经网络在浅层学习纹理等低层次特征,而在深层学习抽象具体的高层次特征,为了增加图像识别性能,采取多尺度特征连接策略构造网络。最终的特征表示由每个稠密和非局部基本卷积块特征图拼接融合而成,再输入到分类损失函数。这样,DNLCNN网络的最终特征表示重新利用了来自不同卷积层的特征信息。
利用随机梯度下降方法(stochastic gradient descent, SGD)训练DNLCNN。批处理样本数为32,初始学习率为0.01,训练过程中当测试准确率饱和时将学习率除以10,整个训练过程,学习率改变3次。当遍历300次样本之后,训练过程终止。
提出的DNLCNN模型使用Pytorch深度学习框架进行训练和测试估计,实验使用的计算机配备Inter(R) Core(TM) i7-3700 3.60 Hz的CPU和NVIDIA GTX1080Ti的GPU。
实验评估所用的烟雾数据库[14]被分为4个子集。如表1所示,整个烟雾图像数据库包含24 217张图像,其中5 695张烟雾图像和18 522张非烟雾图像。由于在实际的生活中很难收集大量的烟雾图像,因此烟雾图像识别任务中通常面临数据不充分和数据分布不平衡问题。
表1 烟雾图像数据库Table 1 Smoke image dataset
烟雾图像数据库包含黑烟和白烟两种颜色,每种颜色中又包含稠密烟雾、稀薄烟雾和模糊烟雾形态。数据库中存在一些与烟雾图像颜色、形状和纹理相似的非烟雾图像,容易导致误报。实验中数据规模相对较大的子集Set3和Set4被用作训练集和验证集,而其他的两个子集Set1和Set2被用作测试集进行性能估计。
检测率(detection rate, DR),准确率(accuracy rate, AR)和误报率(false alarm rate, FAR)通常被用来定量地估计烟雾识别算法,3个估计指标计算公式分别为
(4)
(5)
(6)
式中:Qp和Qn分别为烟雾图像和非烟雾图像的数目;Pp为烟雾图像被正确识别的数目;Np为非烟雾图像被错误识别为烟雾类别的数目;DR表示所有测试的烟雾图像被正确识别的概率;AR表示所有图像数据被正确识别的概率;FAR表示非烟雾图像被误识别为烟雾类别的概率。
烟雾识别网络结构要取得较高的AR和DR值,但同时要达到较低的FAR值。
将所提出的DNLCNN与一些经典的卷积神经网络结构进行烟雾识别性能比较,如AlexNet[7]、visual geometry group (VGG)[8]和Inception-v3[9]。此外,将DNLCNN与另外两个基于深度神经网络的烟雾识别方法DNCNN[13]和DMCNN[14]进行比较。为了采用已经开源的卷积网络结构代码和论文已经报道的实验结果进行公正比较,将DNLCNN的输入图像分辨率分别调整到224×224和48×48。在所有实验中,DNLCNN-r-l-kinit表示包含r个稠密和非局部基本卷积块的DNLCNN网络结构,每个稠密和非局部基本卷积块包含l个卷积层,初始扩张率为kinit。
已经开源的AlexNet、VGG-16和Inception-V3网络结构的输入图像分辨率大约为224×224,为了进行公平比较,将烟雾图像分辨率统一调整为224×224,采用DNLCNN-5-3-8的网络结构进行实验评估。在测试集Set1和Set2上的实验结果分别如图2所示。
图2 测试集上的实验结果Fig.2 Experimental results on testing dataset
从实验结果(图2)可以看出,DNLCNN-5-3-8在测试集Set1上达到最高的DR值(98.01%)和AR值(98.70%),在Set2上达到了最高的DR值(96.54%)和AR值(98.07%)。AlexNet在测试集Set1和Set2上的FAR指标略低于DNLCNN-5-3-8,但DR和AR指标与所提出的DNLCNN-5-3-8存在较大差距。并且,所提出的DNLCNN-5-3-8仅使用0.94M的学习参数就可以达到优异的性能,而AlexNet、VGG-16和Inception-v3的参数量分别为54 M、128 M和33.93 M。
进一步将DNLCNN与另外两个基于深度神经网络的烟雾识别方法DNCNN[14]和DMCNN[15]进行比较。DNCNN在原有的卷积层结构中增加批规范化运算来增加烟雾识别性能,DMCNN采用并行的卷积结构来提取多尺度特征。采取DNLCNN- 4-2-8,DNLCNN- 4-3-8 和 DNLCNN- 4- 4-8网络结构进行实验估计,需要的学习参数量分别为0.33M、0.52M和0.72M。将烟雾图像分辨率调整为48×48,作为实验中深度卷积神经网络的输入。在测试集Set1和Set2上的实验估计结果如表2所示。
表2 测试集上的实验结果Table 2 Experimental results on testing dataset
DNLCNN-4-3-8网络结构仅使用0.52M的参数量就可以在测试集Set1上达到最高的DR值96.20%和AR值98.34%,在测试集Set2上达到最高的DR值97.24%和AR值98.47%。同时,DNLCNN-4-3-8在测试集Set1上达到最低的FAR值0.24%。从表2和表3也可以发现,对于DNLCNN网络,随着网络深度增加,烟雾识别性能指标达到饱和。
实验结果(表2)证明了提出的DNLCNN结构在烟雾识别问题上是更加准确和更加计算有效的,更有可能被应用到实际的烟雾识别任务中。
在烟雾识别问题中,烟雾颜色、纹理和形状常常因为光照条件和周围环境而呈现不稳定的变化,传统的烟雾特征提取方法通常面临计算复杂和鲁棒性不足的问题,为了解决上述问题,提出了稠密和非局部卷积神经网络用于烟雾识别,通过对提出的DNLCC进行分析和实验,得出以下结论。
(1)DNLCNN中的稠密连接设计增强了深度卷积网络结构中的信息流通和特征重利用。
(2)DNLCNN中非局部运算操作促进了深度卷积神经网络结构中全局特征和局部特征的有效融合,进而改善烟雾识别的鲁棒性。
(3)通过实验证明了,所提出的DNLCNN既具有更高的计算效率又具有更令人满意的识别性能,只使用不到1M参数量的条件下取得更好的识别性能,在FAR指标相差不大的同时取得更高的DR值和AR值,因此具有更高的实用价值。