吕 鹏,曹江涛,姬晓飞
(1.辽宁石油化工大学 信息与控制工程学院,辽宁 抚顺 113001;2.沈阳航空航天大学 自动化学院,辽宁 沈阳 110136)
火灾是最普遍地威胁社会公共安全和人类发展的主要灾害之一,去年因火灾带来的直接经济损失高达数亿元[1],能够及时并有效地做出火灾预警变得非常重要。火灾检测主要由烟雾检测与火焰检测两部分构成,火灾的初期阶段主要以烟雾为主,其中夹杂着小火苗或者小火星;伴随着燃烧的逐渐充分,火灾达到中期阶段,此时的烟雾与火焰逐渐变大,最终形成火灾[1]。可见,火灾中的烟雾与火焰之间始终有着密切的内在联系。合理利用这种内在联系,将大大提升火灾检测的准确性和适应性。早期的基于计算机视觉的火灾检测算法通常利用运动分割的方法找到视频中的可疑区域,利用烟雾与火焰的颜色[2]、纹理[3]、形状[4]、浓度[5]等特征进行检测和识别。在固定场景下,小样本数据集中具有较好的检测效果。但是,传统方法提取特征本身不具备高度抽象性,在现实的场景中,烟雾和火焰所表现出来的颜色、纹理、形状等特征容易受到周围环境的影响,表现出一定的差异性,导致检测的准确率下降,甚至出现误检测,无法满足预警的要求。
近年来,深度学习在计算机视觉领域大放异彩,研究者们将卷积神经网络(Convolutional Neural Net-work,CNN)和循环神经网络(Recurrent Neural Net-work,RNN)应用于目标检测任务中并取得了较好的效果。在CNN的基础上又有研究者提出了区域卷积神经网络Fast R-CNN[6]、Faster R-CNN[7]、YOLO(You Only Look Once)[8]及SSD(Single Shot Multi-box Detector,SSD)[9]。在RNN基础上提出了长短时记忆网络(Long Short-Term Memory,LSTM)。许多研究者也将上述算法运用到火灾检测上,设计了一系列的烟雾检测算法与火焰检测算法。文献[10]设计专用于烟雾检测的网络SmokeNet,文献[11]提出基于显著性深浅特征融合的卷积神经网络进行烟雾检测,该网络可以突出图像中烟雾所在区域,提高检测的准确性。文献[12]提出FSSD网络,设计中值滤波与自适应直方图进行预处理,在SSD网络中增加注意力模块进行烟雾检测。文献[13]引入先验知识和因果判断机制,运用YOLOv3与InceptionV4网络进行火焰检测。上述文献都是将烟雾与火焰作为单帧图像进行火灾检测,没有关注烟雾与火焰存在的时序关系。文献[14]将改进的GoogleNet网络进行火焰检测。文献[15]运用R-CNN与LSTM进行火焰检测,同时利用贝叶斯网络对周围环境的其他因素进行信息融合,提高火焰检测的精度。至今,大多数的火灾检测算法都是基于单任务学习(Single-Task Learning,STL)设计的,只关注烟雾与火焰中的某一个目标进行算法的设计,没有考虑到烟雾与火焰之间的关联性,导致特征的语义信息缺失。
针对上述问题,该文提出了一种基于对抗性多任务学习(Multi-Task Learning,MTL)的火灾检测算法。首先,将RGB视频序列作为网络的输入,运用CNN网络与LSTM网络提取空间特征和时序特征。然后,将特征空间划分为共享特征空间和私有特征空间,共享特征空间用于提取烟雾和火焰的内在联系中的共享特征,私有特征空间用于提取烟雾和火焰各自的特征。最终,将上述两部分特征通过torch.concatnate方式融合,即:拼接方式,送到全连接层与分类器中,得到识别结果。该算法充分考虑了烟雾与火焰检测的内在联系,在多任务学习的软参数共享框架的基础上,将特征空间划分为共享特征空间与私有特征空间,其目的是在保证烟雾与火焰的私有特征的独立性与完整性的同时,通过共享特征建立两者的联系。并且,利用共享特征空间丰富烟雾和火焰的私有特征空间。引入正交约束使得共享特征中更少地包含私有特征,私有特征中更少地包含共享特征。在网络训练过程中,运用单一烟雾视频和单一火焰视频来训练烟雾与火焰的私有特征空间;运用烟火共存视频来训练共享特征空间。在训练共享特征空间时,运用任务判别器来判断共享特征是否独立于烟雾私有特征与火焰私有特征。实验结果表明,该算法大幅提升了烟雾与火焰检测的准确率。
针对基于单任务学习框架下的火灾检测没有考虑烟雾与火焰内在联系的问题,该文提出了一种基于对抗性多任务学习的火灾检测算法,算法的整体框架如图1所示。图1的编码器部分的结构如图2所示。
图1 算法框架
图2 编码器结构框架
算法主要如下:
(1)特征提取与时序建模:将视频序列中的每帧图像运用残差网络(Residual network,Resnet)提取空间特征,将得到的空间特征序列送入LSTM网络,得到烟雾的时序模型、火焰的时序模型、烟雾与火焰内在联系的时序模型。
(2)私有特征网络的训练:烟雾的私有特征通过单一烟雾视频(以烟雾为主的视频)进行训练;火焰的私有特征通过单一火焰视频(以火焰为主的视频)进行训练。
(3)共享特征网络的训练:结合步骤(2)训练好的网络,烟雾与火焰的共享特征通过烟火共存视频进行训练;在训练共享特征时引入任务判别器,运用任务判别器判断共享特征是否独立于烟雾与火焰的私有特征。
(4)融合识别:将得到的私有特征与共享特征通过拼接方式融合,送到全连接层与分类器,得到识别结果。
私有特征与共享特征分别通过烟雾编码器模块、火焰编码器模块与共享编码器模块进行提取,具体编码器结构如图2所示。考虑到烟雾与火焰在空间与时间的特征变化,该文采用文献[16]提出的Resnet18网络(去掉全连接层)进行空间特征提取,去掉全连接层的目的使ResNet18网络成为一个特征提取网络,仅用于提取视频帧的空间特征,不做检测和识别。将得到的特征序列送入长短时记忆(Long Short-Term Memory,LSTM)网络进行时序建模。这样得到的特征中既包含空间上的特征,又考虑了随时间变化的特征。
图3 Resnet18网络(去掉全连接层)
利用Resnet18网络提取烟雾和火焰的空间特征。由于残差学习结构的存在,使得Resnet18网络在学习深层特征时,不会由于网络的加深而产生梯度消失或者梯度爆炸的情况,能够更有效地学习到深层特征。Resnet18网络结构如图3所示。在运用Resnet18网络时去掉了网络最后的全连接层,仅使用Resnet18网络进行空间特征提取,不用于识别。
Resnet网络提出的残差学习结构如图4所示。
图4 残差学习结构
残差学习结构有效解决了随着网络层数的增加,深层网络存在的梯度消失或者梯度爆炸的问题。对于一个堆积层结构,当输入为x时,学习到的特征为H(x),通过残差学习结构学习的特征为:
F(x)=H(x)-x
(1)
其原始的学习特征为:
F(x)+x
(2)
这样的残差学习结构比原始特征更容易学习,当残差为0时,此时对基层只做恒等映射,保证了网络性能不会退化。但是,在现实情况中,残差并不会为0,这会使得堆积层在输入特征基础上学习到新的特征,进而使网络拥有更好的性能。网络的结构如表1所示。
表1 Resnet18(去掉全连接层)网络结构
最终,烟雾与火焰的视频序列通过Resnet网络提取特征,单视频帧得到的特征维度为(512,3,3)。将得到的空间特征序列送入LSTM中进行时序建模。
LSTM网络常被广泛应用于时序信息的数据建模之中,它可以高效地学习特征序列之间存在的关系。时序关系对于火灾视频而言,是一个很重要的因素。它能够反映火灾随时间的变化规律。基于此,该文将LSTM网络用于火灾视频的时序建模。
如图5所示,LSTM网络由LSTM单元模块构成,每个单元模块保留一个单元状态,该状态保留的是上一个单元模块中的信息,所以,LSTM网络可以学习到时间序列关系。其中,遗忘门ft和输入门it共同控制来自上一个单元模块的信息和隐藏状态的信息,用于生成新的信息保存在当前状态Ct中。由公式(3)~公式(6)表示:
ft=σ(Wf*[ht-1,xt]+bf)
(3)
it=σ(Wi*[ht-1,xt]+bt)
(4)
(5)
(6)
式中,σ为sigmoid函数;Wf,Wi,Wc依次为遗忘门,输入门,当前时刻的LSTM单元状态的权重;bf,bi,bc依次为遗忘门,输入门,当前时刻的LSTM单元状态的偏置。通过网络训练,生成单元的隐藏状态ht,如式(7)、(8)所示:
Ot=σ(W0*[ht-1,xt]+b0)
(7)
ht=Ot*tanh(Ct)
(8)
式中,Ot表示输出门;W0,b0依次表示输出门的权重和偏置。然后,单元状态和隐藏状态传递给下一个LSTM单元模块,形成长期依赖的时序关系。
图5 LSTM模块结构
对上节中运用Resnet18(去掉全连接层)得到的空间特征,将其通道展平,变为4 608的一维张量。按照视频序列排好,送入LSTM网络中进行训练。选择两个连续的LSTM模块,每个LSTM模块中有100个神经元。最终得到的特征维度为(128,100)。为了防止LSTM网络在训练中产生过拟合的情况,引入Dropout避免过拟合的发生。
火灾检测主要由烟雾检测与火焰检测两部分构成,这两部分也是文中算法框架中重要的组成部分。针对烟雾的私有特征训练,将单一烟雾视频的视频帧作为输入,分辨率为224×224,依次通过Resnet网络(去掉全连接层)与LSTM网络,将得到的特征向量送入softmax,得到识别结果。针对火焰的私有特征训练,将单一火焰视频的视频帧作为输入,其他的框架与烟雾的相同。在训练好烟雾与火焰的私有特征网络后,开始对烟雾与火焰内在联系的共享特征网络进行训练。烟雾检测和火焰检测作为火灾检测的两个任务,两个任务之间存在很强的关联性。所以,该文利用烟雾与火焰的关联性,提取其共享特征,目的是利用共享特征丰富烟雾与火焰私有特征的语义信息。
为了确保共享特征的独立性,引入正交约束惩罚冗余特征,其作用使共享特征中尽可能少地包含私有特征,私有特征中尽可能少地包含共享特征,呈现正交化。正交约束L1、L2如公式(9)、(10)所示。
(9)
(10)
式中,SF表示共享特征;PS表示烟雾私有特征;PF表示火焰私有特征。在训练共享特征网络时,将烟火共存视频的视频帧作为输入,分辨率为224×224,依次通过Resnet网络(去掉全连接层)与LSTM网络,添加一个任务判别器,用于判断特征来源哪个任务,公式如(11)所示。
D(SF,θD)=softmax(b+USF)
(11)
式中,D(SF,θD)表示任务判别器;U表示任务判别器的权重;b表示任务判别器的偏置;softmax(·)函数用于映射共享特征的概率。在训练过程中,Shared encoding生成共享特征,阻碍任务判别器对任务来源的判断,确保共享特征的独立性。同时,任务判别器尽可能去判断当前特征是来自于哪个任务。任务判别器的损失函数如公式(12)所示:
(12)
该文采用的是torch框架中的torch.concatnate的方式,即:拼接方式,将共享特征与私有特征进行融合。拼接方式是在保证原始特征图的高度H、宽度W及通道数C都不改变的情况下进行的。通过这种方法将特征联合到一起,其本质是丰富用于描述目标特征的语义信息。并且,拼接并不会丢失原始的特征信息。拼接时,只需要保证拼接维度的一致性即可使用。
torch.concatnate拼接方式分为三种,即:axis=0,1,2。该文采用的拼接方式为axis=0,即:在通道方向进行拼接,这样的拼接方式可以保证共享特征与私有特征的完整性,能够更好地丰富特征的语义信息。得到拼接后的特征维度为(256,100)。通过上述方法,将得到的共享特征与私有特征通过concat方式融合,送入全连接层与分类器,得到识别结果。
如图6所示,使用的视频数据来源于实验室自行拍摄和网络公开的视频,视频帧的分辨率统一为224×224,以满足Resnet网络的输入。火灾视频数据共15个视频。前两行的10个视频为训练集;第三行5个视频为测试集。使用labelimg软件进行手工标注[17]。
图6 火灾视频数据
实验是在window10 64 bit系统下进行,Relu为激活函数,Adam为优化方法,batch_size=128,其余均保持默认设置。该文在训练和测试中使用的软件和硬件配置如表2所示。
表2 软件与硬件配置
实验的评价指标为识别准确率和误识别率,识别准确率和误识别率的计算方法分别如公式(13)和公式(14)所示。
(13)
式中,Accuracy表示识别准确率,TP、FP、TN、FN依次表示被模型预测为正的正样本数量,被模型预测为正的负样本数量,被模型预测为负的负样本数量,被模型预测为负的正样本数量。
(14)
式中,FAR表示误识别率,NFA、NIRA依次表示被错误预测的样本数量;类间样本总数量。为了验证本文提出的多任务学习算法的有效性,将基于单任务学习得到的烟雾检测和火焰检测结果分别本文提出算法得到的检测结果进行对比。上述单任务的网络框架为图2中的编码器框架。对比结果如表3、表4所示。
表3 烟雾检测的单任务学习与多任务学习的结果对比
表4 火焰检测的单任务学习与多任务学习的结果对比
从表3、表4可以看出,对比烟雾检测、火焰检测的单任务学习算法,多任务学习的火灾检测的准确率都有了一定的提高。识别准确率方面,在烟雾检测中,多任务学习算法识别准确率比单任务学习算法高2.4%。在火焰检测中,多任务学习算法的识别准确率比单任务学习算法高1.7%。误识别方面。在烟雾检测中,多任务学习算法的误识别率比单任务学习算法低4.9%。在火焰检测中,多任务学习算法的误识别率比单任务学习算法低7.5%。通过实验可以说明,多任务学习算法比单任务学习算法的识别准确率更高,误识别率更低,进而说明算法的有效性。在某些特定的情况下,算法产生了误识别。例如:少量的白云和水雾在某些情况下会被识别为烟雾,主要原因为白云和水雾在在某些情况下会呈现出与火灾烟雾相同或者相近的特征。当烟雾与火焰混在一起时,火焰的亮红色使薄雾呈现为红色,少数情况下会将烟雾误识别为火焰,主要原因为烟雾特征不足导致的误识别;海平面上太阳的余晖,少数情况下会被误识别为火焰,主要原因为在某些情况下,太阳余晖折射在波动的海平面上,与火灾中火焰的特征相近,少数情况下会被误识别为火焰。
为了更好地验证文中算法的有效性,同其他文献中的烟雾检测、火焰检测算法进行对比与分析,结果如表5、表6所示。由于火灾数据库尚未统一,对比算法中使用的数据库与文中所使用的数据库略有差别。
在烟雾检测方面,从表5中可以看出,提出的多任务学习方法,相比文献[10]提出的SmokeNet网络、文献[11]的显著性视频烟雾检测框架、文献[12]的FSSD网络,取得了更好的识别率。该文提出的算法优势在于考虑到烟雾在空间域的特征变化,更加符合真实的火灾场景,烟雾的变化规律。然而,文献[10-12]都是针对烟雾的空间特征进行检测,并未考虑到烟雾在时间域上的特征变化。特别地,文献[10]在算法中引入注意力机制,这使得文献[10]的误识别率略低于文中算法。
表5 多任务学习烟雾检测对比其他算法结果
在火焰检测方面,从表6可以看出,提出的多任务学习方法,相比文献[13]的Densenet121网络、文献[14]的改进GoogleNet,取得了更高的识别率及更低的误识别率。文献[13-14]都是针对火焰的空间特征进行检测,并未考虑到火焰随时间的特征变化情况。文献[14]的Bayesian Network采用Fast R-CNN结合LSTM网络进行火焰检测,在此基础上还结合了探测器针对检测环境的温度、湿度等变化情况,运用环境因素变化结合视频目标检测算法,使得文献[14]在误识别率低于提出的算法。
表6 多任务学习火焰检测对比其他算法结果
针对大多数的火灾检测算法只关注烟雾或火焰两者间的某一个任务来设计检测算法的问题,考虑到烟雾和火焰的内在联系,设计了一种基于多任务学习的火灾检测算法。将特征空间划分为共享特征空间和私有特征空间两部分,利用共享特征空间可以有效获取烟雾和火焰之间的共享特征,私有特征空间可以有效获取烟雾和火焰各自的私有特征,私有特征可以通过共享特征来丰富自身的语义信息。实验结果证明了多任务学习应用于火灾检测的可行性,检测的准确率有了大幅度提高。在未来工作中,将通过完善火灾数据库的种类,设计更加有效的多任务学习框架,进一步区分上述的实际情况,提高模型的鲁棒性及泛化能力。