黄 杰,巢夏晨语,董翔宇,高 云,朱 俊,杨 波,张 飞,尚伟伟*
(1.国网安徽省电力有限公司检修分公司,合肥230061; 2.中国科学技术大学信息科学技术学院,合肥230027;3.国网安徽省电力有限公司,合肥230022)(∗通信作者电子邮箱wwshang@ustc.edu.cn)
随着计算机视觉的发展,基于计算机视觉的火焰检测技术得到了大量的研究。从图像中检测火焰比烟雾报警器更快,从而能够对火灾进行提前预警。目前,基于机器视觉的火焰检测方法(后简称为火焰检测)主要分为基于人工设计的图像特征与基于卷积神经网络提取的深度特征两大类。在基于深度特征的方法中,一种广泛使用的方法是将卷积神经网络作为分类器应用于火焰检测,这种方法仅能判断出图像中是否存在火焰,而无法给出火焰所在的位置,因此仅能用于火灾的预警。而对于需要自动灭火的场合,如自动灭火机器人[1]、大空间自动射流装置[2]等,需要首先确定火焰所在图像中的位置,才能进一步计算与火焰之间的距离,从而实现自动扑灭火焰。
在传统的火焰检测方法中,一般采用人工设计的特征进行火焰识别。Töreyin等[3]训练一个高斯混合模型作为火焰的颜色模型,结合运动检测算法来提取候选区域,再对这些区域进行时域与空域上的小波分析,从而判断各区域是否为火焰区域;Foggia等[4]使用背景减法来获取候选区域,再利用颜色、形态变化、运动这三种图像特征,建立三个评价模块来对各个区域进行判别,并使用一个有权重的投票策略进行综合决策。这两种方法仅能用于固定的摄像头上,无法应用于自身存在运动的视觉系统中;Chino等[5]构建了BoWFire数据集,同时提出了一个颜色特征与超像素纹理辨别相结合的火焰检测算法框架,其局限性在于对图像中火焰的召回率不能满足实际应用的需求。
由于深度特征在多个领域取得了比人工特征更好的效果,深度特征也被应用在了火焰检测领域。Muhammad等[6]训练了一个二分类的GoogleNet用于检测火焰,在数据集[5]上取得了较好的准确度(84%~92%),且能展现较好的鲁棒性;Frizzi等[7]使用卷积神经网络来获取图像的特征图,再在特征图上以12×12大小的滑动窗口判断是否存在火焰或烟雾,其局限性在于没有在更大规模的数据集中进行测试;Maksymiv等[8]使用局部二值模式(Local Binary Pattern,LBP)特征与AdaBoost算法来获取图像中可能存在火焰的区域,再使用一个卷积神经网络对各区域进行判别;王华秋等[9]提出一种基于双曲正割函数的变步长最小均方算法(Least Mean Square,LMS)改进的小脑模型神经网络(Cerebellar Model Articulation Controller,CMAC),使用最优阈值搜寻算法分割图像后,提取区域的特征向量输入CMAC进行判别。随着基于深度特征的目标检测方法的兴起,先进的通用目标检测方法被应用在火焰检测上。Barmpoutis等[10]训练一个更快速的区域卷积神经网络(Faster Region-based Convolutional Neural Network,Faster R-CNN)[11]模型来获取图像中潜在的火焰区域,使用线性动态系统(Linear Dynamical System,LDS)提取这些区域的纹理特征,再使用局部聚合描述向量(Vector of Locally Aggregated Descriptors,VLAD)算法对特征编码,并最终判别各个区域是否为火焰区域;Kim等[12]使用Faster R-CNN检测可能的火焰区域,随后由长短期记忆(Long Short-Term Memory,LSTM)网络在一个时间区间内累积该区域的特征,并判别区间内该区域是否存在火焰,最后利用多个时间区间的判别结果进行投票得到最终的检测结果。
针对上述研究,本文提出一种由颜色引导的Faster RCNN模型,利用掩膜卷积技术,使锚仅生成在颜色与火焰相近的区域,提高了Faster R-CNN火焰检测的效率。本文主要工作包括以下方面:
1)提出颜色引导的抛锚策略,使用简单的颜色模型有效减少了Faster R-CNN在火焰检测任务中初始锚生成的数量。
2)提出了掩膜RPN(Region Proposal Network),利用掩膜卷积技术,改进Faster R-CNN的区域生成网络,使得Faster RCNN在火焰检测任务上的速度相较于原Faster R-CNN提高了10.1%。
3)将提出的方法在BoWFire与Corsician数据集上进行了实验,并与最新的火焰检测方法进行了比较,验证了本文方法的有效性。
中国旅游节由国家林业和草原局主办,广州市人民政府、广东省林业局、广东省文化和旅游厅共同承办,主题是“绿水青山就是金山银山——粤森林、悦生活”。
Faster R-CNN[11]是一种在区域卷积神经网络(Regionbased Convolutional Neural Network,R-CNN)[13]和快速区域卷积神经网络(Fast Region-based Convolutional Network,Fast RCNN)[14]的基础上改进得到的通用目标检测方法,它与另外两种R-CNN的主要不同在于使用区域生成网络(Region Proposal Network,RPN)来获取初始的候选框,以代替耗时的选 择 性 搜 索 算 法 。Faster R-CNN 在 COCO[15]与 PASCAL VOC[16]目标检测任务上取得了很好的效果,因此,本文选择Faster R-CNN作为文中方法的基础。
Faster R-CNN的检测框基于锚生成,锚是在目标检测过程中生成的最初的一批候选框。依据人为确定的m种大小比例(Scale)与n种横纵比(Aspect Ratio),将这些比例与横纵比进行组合,可以在每个锚点处获得m×n种形状确定的锚。图1展示了一个锚点以及该点处生成的所有锚候选框,图片中心处的点为锚点,其周围的方框即为锚。锚点以一定间隔分布在整张图像上,因此锚可以覆盖整幅图像。
图1 一个锚点以及该点处的锚候选框Fig.1 An anchor point and theanchor candidate boxesgenerated at that point
本文使用的Faster R-CNN模型结构如图2所示,主要分为三部分,分别是特征提取器、区域生成网络和R-CNNhead。其中,特征提取器主要由一系列卷积层构成,输入图像经过特征提取器后可以得到该图像的一系列特征图。随后,这些特征图被送入RPN中,RPN是一个滑动窗口形式的物体检测器,它的本质是3个卷积层,输入特征图后,经过3×3卷积层将特征图映射到一个较低维的空间,并由两个并联的1×1大小卷积核的卷积层在特征图的每个点处生成各个锚中是否包含物体的置信分数S与各个锚的修正量,RPN输出的锚修正量为其中与代表锚中心位置在图像X、Y方向上的偏移量代表锚长宽的变化量。将锚经过对应的修正后得到一系列候选框,再对这些候选框进行非最大值抑制,滤除与置信度最高的候选框面积交叉过大的候选框。经过非最大值抑制后,对每个候选框分别进行感兴趣区域(Region of Interest,RoI)池化,得到各候选框对应的特征图,最后由R-CNNHead的线性层分别输出每个候选框的分类预测p与进一步的候选框修正量R-CNNHead输出的修正量与RPN输出的修正量的物体意义完全相同。
图2 Faster R-CNN模型结构Fig.2 Structureof Faster R-CNNmodel
在Faster R-CNN中,为了使锚点分布在尽可能广的图像位置上,保证各个区域都被大小合适的锚所覆盖,其锚点是密集分布的,锚生成在特征图的每一个点上。在通用目标检测中,没有特定的目标种类,所以需要密集的抛锚策略。但是在火焰检测任务上,图像区域的种类仅剩下两种:火焰或者背景,密集的抛锚策略会使得锚生成在很多没有火焰的图像区域。再考虑到火焰在图像上存在的显著特性,这使得Faster R-CNN的检测可以在引导下进行。本文中,受到文献[17]中导向性抛锚的启发,提出了一种稀疏的抛锚策略,在Faster RCNN中使用火焰自身的图像特性来引导锚的生成,代替原本密集的抛锚策略,从而提升检测火焰的效率与准确度。
在火焰的图像特征中,颜色特征较为容易获取,也是在火焰检测中被广泛使用的火焰特征。为了使得锚能够生成在图像中所有与火焰颜色相近的区域,且锚框尽量不会遗漏火焰区域,本文使用了一个较为宽松的颜色模型。这个颜色模型覆盖了一般火灾情形下的火焰颜色,不考虑特殊材料燃烧时产生的火焰的颜色(蓝色等),其定义为式(1):
其中:M(x,y)表示生成的火焰颜色掩膜;fR、fG、fB指图像的R、G、B三通道的图像值;TR表示R通道上设置的阈值。在该模型中,TR的取值依据于本文中使用的数据,其典型值为150~200,TR取值过大会使得模型过于严格,导致一些火焰区域存在被漏检的可能,TR取值过小则模型偏向于宽松,RPN中锚的生成数量增加,导致检测效率的下降。
通过这个颜色模型,可以获得一个较为宽松的颜色掩膜,这个掩膜中包含了火焰,以及所有与火焰颜色相近的图像区域。本文中,将Faster R-CNN原本的密集锚生成策略,改变为由颜色引导的抛锚策略:仅将锚点设置在掩膜中的感兴趣区域,而掩膜的其他区域则不生成任何锚,这样可以大大减少初始生成的锚数量,且锚都分布在与火焰颜色相近的物体周围,这也提高了锚的平均质量。图3展示了由颜色引导的抛锚策略的锚点位置,图3(c)中分布在火焰附近的点即为锚点。为了实现以上说明的抛锚策略,本文主要对Faster R-CNN的核心,即RPN进行了改进,称之为掩膜RPN,它接受一个与特征图大小一致的额外掩膜作为输入,从而可以结合掩膜信息,使得锚仅在感兴趣的区域生成。
图3 颜色引导的抛锚策略的锚点生成Fig.3 Anchor generation of color-guided anchoringstrategy
模型的整体结构如图4所示。首先,将图像输入特征提取器,得到特征图;同时将输入图像通过颜色模型,获取输入图像的火焰颜色掩膜;将特征图与缩放到相同大小的掩膜输入掩膜RPN,得到经过筛选与修正的区域;最后,将各区域输入分类与回归两个分支网络,即R-CNN Head,得到最终的检测框。图4中展示了掩膜RPN的具体结构,在Faster R-CNN的基础上,将各个卷积层均替换为掩膜卷积(masked convolution)[18-19]层,掩膜卷积仅在掩膜的感兴趣区域进行卷积,其他区域均置零,从而可以减少一部分矩阵点乘运算。通过使用掩膜卷积来实现颜色引导的抛锚策略,可以提高模型计算的效率。
此外,上述颜色引导的抛锚策略对于其他基于锚的目标检测算法同样适用,如 YOLOV2[20]、YOLOV3[21]、SSD(Single Shot multibox Detector)[22]、特征金字塔网络(Feature Pyramid Network,FPN)[23]等,由于这些方法均在特征图的每一个点上生成锚,故与本文中提出的方法相同,在抛锚策略中加入火焰颜色掩膜即可,即将对应的普通卷积层替换为掩膜卷积层。
图4 由颜色引导的Faster R-CNN模型结构与掩膜RPNFig.4 Model structureof color-guided Faster R-CNNand masked RPN
对于Faster R-CNN的训练,本文参照文献[11]中的训练策略:每一张训练图像中,选取64个正样本候选框与64个负样本候选框,若正样本候选框数量达不到64个,则使用负样本候选框补齐,保持总数为128个。误差的来源有四个,分别是RPN、R-CNN Head的分类误差与定位误差。对于RPN输出的候选框的分类误差与R-CNNHead输出的候选框的分类误差,均采用交叉熵计算损失,而对于候选框的定位误差,则使用平滑L1损失函数。相较于文献[11]的四步交替迭代训练方法,本文使用近似联合训练,从而使得训练以端到端的形式进行,速度更快。训练的主要困难来源于掩膜RPN,即掩膜卷积层的误差反向传播问题。为了解决这个问题,本文使用以下方案:在训练时,将掩膜RPN各层替换为普通卷积层,对于掩膜RPN层输出的候选框,将中心在掩膜感兴趣区域外的候选框全部滤除。
RPN的损失函数设计为:
其中:表示交叉熵函数;表示平滑L1函数;s i是RPN输出的第i个候选框的置信度分数,表示该候选框中是否包含物体的置信度;s*i是该候选框对应的ground truth候选框的置信标签;t ri是RPN输出的第i个候选框的修正量,t ri*为该候选框移动到对应的ground truth候选框所需的修正量。其中,修正量包括候选框中心在X、Y方向上的偏移量与候选框长、宽的变化量。
R-CNNHead的损失函数设计为:
与RPN的损失计算相似的,p i是R-CNN Head输出的第i个候选框的分类分数,表示该候选框中的物体为火焰或其他,是该候选框对应的ground truth候选框的分类标签是RCNNHead输出的第i个候选框的修正量,是该候选框相对于对应的ground truth候选框所需的修正量。最后,Faster RCNN的整体损失计算方法为式(2)与式(3)的相加,即RPN与R-CNNHead的损失之和。
本文中使用了来源不同的多个数据集,包括ImageNet、BoWFire、Corsician Fire[24]这3个公开的火焰数据集,以及利用Google与Baidu搜索引擎下载的一些火焰图像,表1展示了实验中使用的各数据集名称以及各数据集中的图像数量。训练Faster R-CNN的数据集来自 Baidu、Google以及 ImageNet,共1525张图像。本文的测试在BoWFire数据集与Corsician Fire数据集上进行,共822张图像,测试数据集不参与模型的训练。
表1 实验中使用的数据集名称及图像数量Tab.1 Different datasetsand their numbersof imagesused in experiments
一般目标检测任务中衡量模型性能的指标为平均精度均值(Mean Average Precision,MAP),由于火焰检测是单目标检测,该指标与平均精度(Average Precision,AP)等价。但是,火焰目标检测中,火焰的标注没有一个确定的标准,不同人的标注风格不尽相同,因此,以往的研究中,火焰检测的性能评判标准都是按帧计算的,而不使用AP值来衡量。但在Faster R-CNN的训练中,仍需要通过AP指标来确定模型是否向正确的方向收敛,为了能够在BoWFire数据集与Corsician Fire数据集上计算AP指标,本文对这两个数据集进行了标注。同时,为了与其他火焰检测方法进行比较,衡量本文模型性能的指标也按帧计算:对于一幅火焰图像,当图像中的火焰均被检测框覆盖,则认为这张图像的检测结果正确。
首先,本文在BoWFire数据集上研究本文方法在火焰检测任务上的性能,并与基于人工特征的方法[5]、基于卷积神经网络的先进方法[6]进行了比较。表2在精度、召回率与F值三个方面与Chino等[5]和Muhammad等[6]的方法进行了比较。其中:文献[5]中使用朴素贝叶斯模型构建火焰颜色模型,并使用超像素的方法将图像分块并进行纹理分析;文献[6]训练一个二分类的GoogleNet来辨别图像中是否存在火焰,并使用迁移学习方法进一步提高了网络在火焰检测上的性能。
表2 各方法的性能比较Tab.2 Performancecomparison of different methods
从表2中可以看到:由颜色引导的抛锚机制可以小幅提升火焰检测的召回率,97.48%的火焰图像中的火焰都被正确检出,达到了各种方法中的最优,但是这也会带来一些精度上的下降。综合上述效果,火焰检测的F值略有上升。
随后,本文也进行了效率上的测试,结果如表3所示。由于在掩膜卷积中,掩膜中不感兴趣的区域都被忽略,故计算速度较原来提高了10.1%,而提高不是特别明显的原因是仅掩膜RPN中的普通卷积层替换为了掩膜卷积层,若将特征提取器的卷积层也进行替换,则可以进一步提高检测速度。此外,掩膜的计算也需要耗费一些时间(在BoWFire数据集上约耗费3 s)。
表3 各方法的运行时间对比 单位:sTab.3 Comparison of running time of different methods unit:s
最后,在Corsician Fire数据集上进行了测试,以进一步检验对火焰的检测效果,表4展示了Corsician Fire数据集上的实验结果。可以看到使用了颜色引导的抛锚机制的Faster RCNN达到了更优的准确度,Barmpoutis等[10]的方法在该数据集上达到了最优的检测结果。在Faster R-CNN后串联纹理分析会使得火焰检测更加可靠,但显然会进一步增加计算量,因此本文方法也可以应用于文献[10]的方法中,提高其火焰检测的速率。
表4 各方法在Corsician Fire数据集上的准确度对比Tab.4 Accuracy comparison of different methodson Corsician Firedataset
本文实验所使用的硬件平台均为英特尔I7-9700K八核CPU与有12 GB显存的GeForce GTX TITAN X GPU。实验软件开发环境为python,使用的模型通过pytorch框架搭建。实验中,Faster R-CNN使用的骨干网络为ResNet101。图5展示了仿真环境下一些火焰图像的检测结果,可以看到图中一些较小的火焰没有被检出,其余均被正确检出。
图5 检测结果示例Fig.5 Samples of detection results
本文提出了由颜色引导的火焰检测方法,一个新颖的颜色引导的抛锚策略。该策略易于实现,并可以提高Faster RCNN在火焰检测中的效率与召回率。通过在BoWFire数据集上与两个现有工作进行的比较,本文方法可以达到最高的召回率(97.48%)。同时,通过在BoWFire数据集上进行的速度测试,颜色引导的抛锚策略可以将Faster R-CNN的检测速度提升10.1%。最后,在Corsician Fire数据集上进行的实验验证了本文方法的鲁棒性。本文方法的良好性能来自两个原因:一是Faster R-CNN中卷积层的强大特征提取能力,另一个是训练数据集的丰富性。未来的工作中,将研究在特征提取层使用掩膜卷积来进一步提升检测效率,并将本文的方法移植到消防机器人上,在实践中测试其有效性。