杜渐,宋建斌,胡弘毅,符锌砂
(1.招商新智科技有限公司,北京 100073;2.华南理工大学土木与交通学院,广东 广州 510641)
截至2020 年末,我国公路总里程已达到519.81 万km[1]。公路运营安全受到全社会的广泛关注,高速公路特别是隧道路段一旦发生火灾,若不能第一时间发现险情,往往容易演变成重特大交通事故,给人民群众生命财产安全造成极大的威胁[2]。因此,火灾烟雾的及时识别与报警对于道路运营管理非常重要。随着我国高速公路的监控系统由初期的重点路段监控逐步发展为全路段无盲点的视频监控覆盖,基于监控视频图像对公路火灾事件进行识别研究非常重要。
早期多采用传统图像处理方式提取图像特征,建立烟雾识别模型。胡燕等[3]根据烟雾运动特征,通过Harris 检测算法寻找特征点,计算运动矢量信息,实现多特征烟雾识别。刘鹏[4]融合背景差分法和RGB 颜色特征检测获取图像中的疑似烟雾区域,并采用Adaboost 分类器检测烟雾面积与边界。类似地,袁雯雯等[5]提出基于改进高斯混合模型(Gaussian Mixture Model,GMM)的林火烟雾识别算法,融合背景差分法提取场景光照特征,检测场景中相对完整的动态烟雾区域。然而传统图像处理方法的特征提取能力有限,建立的模型泛化能力不强,对于不同的场景,模型的检测效果往往差别很大。随着深度学习的发展,卷积神经网络(Convolutional Neural Networks,CNN)[6]在目标检测领域中发展出Faster R-CNN[7],YOLO[8]等识别网络,不少学者也在烟雾识别研究中应用了深度学习方法。杨明潇[9]通过人工采集和公开林火烟雾数据集训练Faster R-CNN,SSD 和VGG神经网络,基于神经网络构建了烟雾识别可视化平台,识别准确率达到75%。冯路佳等[10]提出了一种基于目标区域的卷积神经网络火灾烟雾识别方法,构建2 层的火灾烟雾识别模型,提取烟雾目标区域并输入识别层,通过卷积神经网络精细提取烟雾的深层特征后进行分类,完成火灾烟雾的识别。Saponara等[11]基于YOLOv2网络构建了室内火灾识别系统对固定场景火灾进行识别报警。卷积神经网络特别是深度卷积神经网络,由于具有多层线性与非线性映射参数,对图像数据的特征提取能力相较于传统手工特征提取方法有了很大提高,但由于网络层数多,造成网络参数量大,计算复杂度高,网络参数和中间层输出占用大量计算资源和显存,导致深度卷积神经网络在边缘端需要布设多台设备才能同时处理多台公路监控摄像机的图像输入,同时为训练出精度满足实际识别要求的卷积神经网络而需要导入大量图像数据,故对训练样本的标注质量也有较高要求。
针对公路场景烟雾识别的精度问题,本文基于目前目标检测领域的新型网络YOLOX[12]进行研究,深入分析其结构与特征提取优势,同时人工收集公路场景烟雾图像结合部分Smoke100K 数据集作为训练数据集,采用数据增强方法对数据集进行扩充,提高训练集的多样性,从而提高网络在不同场景下的识别能力。针对深层卷积网络计算资源占用过多的问题,利用深度可分离卷积方法压缩网络主体结构,实验阶段构建并对比分析不同结构网络的烟雾识别精确度,旨在搭建满足精确度要求且计算资源占用尽量小的模型,实现基于视频图像的公路场景火灾烟雾智能识别及工程应用。
近年来,目标识别网络在交通行业的应用越来越普遍,YOLO 系列识别网络在车辆识别[13]、行人识别[14]、交通标志检测[15]等任务中取得了较好的效果。然而对于公路场景下的烟雾识别,由于烟雾的形状不固定,公开的训练数据集较少,传统的目标识别网络对烟雾的识别效果一般,因此在烟雾识别任务中对目标识别网络的特征提取能力有更高的要求。同时,由于公路场景一般由多摄像头同时监控,若模型参数过于庞大,对硬件算力和存储需求较高,将直接导致计算成本大幅增加,因此追求模型精度的同时必须尽量减少网络的参数量与中间层输出。
YOLOX 网络在YOLOv5[16]的基础上对模型网络作了优化,在特征提取部分采用了CSPDarknet网络[17],获取特定特征层作特征融合后,在分类回归层中采用了YOLOHead[12]方法,对传统YOLO网络的分类回归层结构作了优化调整。本文针对公路场景下的烟雾识别问题,构建了小型烟雾图像数据集,网络训练过程中在图像预处理上采用Mosaic 数据增强方法[17],提升了数据的多样性,同时为了实现网络轻量化,采用深度可分离卷积的方法压缩主干网络,构建nano网络,降低了部分精度但大大精简了网络结构的总参数量。本文就YOLOX 主干网络、模型轻量化方法进行分析。
YOLOX 的主干网络包括3 部分,分别是特征提取层CSPDarknet 网络、特征融合层以及分类回归层YOLOHead。
1.1.1 特征提取
CSPDarknet 网络是通过堆叠多个Resblock body 模块对图像特征进行提取,具体结构见表1。首先输入640×640 的RGB 三通道图像并通过Focus对图像尺寸和通道数进行调整。利用4个堆叠的Resblock body 模块作特征提取。Resblock body模块由卷积层与CSPlayer 层组成,其中CSPlayer层优化了参数数量并保留了较好的特征提取能力。最终CSPDarknet 的输出是第2,3,4 个Resblock body模块的输出特征图。
表1 CSPDarknet结构
1.1.2 特征融合
CSPDarknet 输出的3 个特征图会输入至特征融合层,用作特征融合与加强特征提取。特征融合层采用YOLOv4 的Panet 结构[17],输入特征图通过卷积层调整尺寸,通过上、下采样层(UpSampling2D,DownSampling2D)作特征融合。特征融合层的有效输出是部分CSPlayer层的输出特征图,特征融合层的具体结构见图1。最终用于分类回归层的有效特征图为输出特征图6,7,8。
1.1.3 分类回归
完成特征融合与加强特征提取后,3 张输出特征图将分别输入至分类回归层YOLOHead,最终输出网络识别结果,包括物体识别的种类和标注框的坐标。传统YOLO 系列识别网络的分类回归层通过1×1 卷积层实现分类和回归同时处理,但YOLOHead 具有2 条卷积分支,其中一条卷积分支用于实现物体分类(Cls),输出物体识别类型;另一条卷积分支用于判断特征点中物体是否存在(Obj)和回归标注框坐标(Reg)。YOLOHead的具体结构如图2所示。
Sifre等[18]提出的深度可分离卷积是网络轻量化的重要方法。该方法将标准卷积操作拆分为深度卷积和逐点卷积两个步骤。通过深度可分离卷积方法,在尽量减少网络精度损失的同时,可大大精简网络参数,减少运算量。
标准卷积过程中,取N组具有相同尺寸(Dk×Dk×C)的卷积核对输入图像进行卷积,假设需要的特征图尺寸为(W×H×N),卷积核参数总量(P)和卷积操作的总运算量即内积运算量(CA)的计算公式分别如式(1)、式(2)所示。
标准卷积操作如图3(a)所示,假设输入的图像尺寸为10×10×3,通过3×3×3 的卷积核可以卷积获得1个8×8×1的特征图,若堆叠256组具有相同尺寸的卷积核则可以对输入图像卷积获得8×8×256 的输出特征图。对于该标准卷积操作,根据式(1)、式(2),该卷积层参数量为3×3×3×256,共6 912;内积运算量为3×3×3×256×8×8,共442 368。
深度可分离卷积则包含2个步骤,如图3(b)所示。第1 步是深度卷积。深度卷积的卷积核为单通道形式(3×3×1),取3 组卷积核对图像进行标准卷积操作,此时获取的特征层尺寸维度为8×8×3,深度卷积的卷积核参数量为3×3×1×3,共27;总运算量为3×3×1×3×8×8,共1 728。第2 步是逐点卷积。逐点卷积的卷积核为3 通道但尺寸为1×1,采用256组相同的1×1×3的卷积核对深度卷积的输出图像进行标准卷积操作,即可获得与标准卷积方法相同的8×8×256 输出特征图,逐点卷积的卷积核参数量为1×1×3×256,共768;总运算量为1×1×3×256×8×8,共49 152。在完整的深度可分离卷积过程中,卷积层总参数量为27+768=795,内积运算量为1728+49152=50880。相较于标准卷积,深度可分离卷积的卷积层总参数量与内积运算量均显著减少。
两种方法各自需要的卷积层参数量、内积运算量如表2 所示。深度可分离卷积方法可压缩网络规模和减少运算量,在利用相同宽和高的卷积核获取固定尺寸特征图的过程中,深度可卷积方法的总参数量与内积运算量均为标准卷积方法的1/N+1/Dk2,是实现轻量化的关键。nano 网络是在普通YOLOX 网络的基础上运用深度可分离卷积方法精简参数构建的轻量化网络。
表2 两种卷积方法对比
本文搜集了多个高速公路路段不同监控场景、不同摄像机视角下的烟雾图像样本,同时为了增加样本场景的多样性,数据集中加入了公开数据集Smoke100K[19]的部分烟雾数据图像。数据集共有图像5 367 张,对图像中的烟雾部分进行了人工标注,按照7∶1∶2 划分为训练集、验证集和测试集,部分样本实例及标注形式如图4所示。数据集导入网络训练前,采用Mosaic 数据增强方法对数据集进行扩充。
由于实验收集标注的烟雾数据集为小型数据集,训练样本量较少且存在重复场景,为了增加烟雾样本的多样性,丰富目标的背景,本文在图像数据预处理过程中采用了Mosaic 数据增强方法[17],尽量避免网络在训练过程中陷入过拟合,以提高网络的识别精确度与泛化能力。
Mosaic 数据增强对训练集的具体操作如图5所示。首先从总的训练数据集中随机抽取一批图像,然后从该批图像中随机选出4 张,再对4 张图像分别进行随机裁剪、放缩、旋转操作,最后拼接为新的图像并作为网络训练的输入图像。需要注意的是,处理过程中的图像是含有标注框坐标信息的,因此获取的新图像同样含有烟雾标注框的坐标信息。
本实验的机器配置如下:一个NVIDIA GTX-3060-12G 图形处理器(GPU)和一个AMD Ryzen 7 5800X 中央处理器(CPU)。基于深度学习框架Pytorch 搭建YOLOX 目标检测模型,即根据结构与参数量的不同搭建YOLOX-m,YOLOX-s,YOLOX-tiny 和YOLOX-nano 共4 种目标检测模型。在训练阶段导入烟雾数据集测试之前,为了提高网络的泛化能力,预训练权重采用经由大型数据集COCO[20]训练的模型参数,梯度下降优化策略采用Adam 优化器。实验过程中采用两阶段训练法:第1 阶段冻结网络主体参数,仅训练网络分类层参数,初始学习率设置为0.00 1;第2阶段训练网络所有参数,初始学习率设置为0.00 01。实验过程中两阶段各训练60 个迭代(epoch),共训练120 个迭代。需要对原始图像作预处理,压缩为640×640 的RGB 图像,同时不同参数规模的网络每批次输入的最大图片数量也有所不同:对于YOLOX-m 和YOLOX-s,第1 阶段每批次输入图像数为64,第2 阶段每批次输入图像数为16;对于YOLOX-tiny和YOLOX-nano,第1阶段每批次输入图像数为128,第2 阶段每批次输入图像为32。通过实验设置可以发现,网络结构越精简、参数量越少的网络同一批次能处理的图像数量越多。
本节对YOLOX 不同规模的目标检测网络(m,s,tiny,nano)进行对比。以精确度(Precision)作为实验结果评价指标,具体网络参数与实验结果如表3所示。识别效果实例见图6。
表3 YOLOX不同规模网络的实验结果对比
由实验结果可知:
(1)4 种规模的YOLOX 在公路场景下的烟雾识别精确度均达到90%以上。其中,tiny,s,m 网络的识别精确度达到了95%以上,可以满足实际运营管理要求。就同系列YOLOX 的网络精度与规模而言,本次实验结果符合目标检测网络的一般性结果,即:结构层数越多、参数量越多的卷积神经网络特征提取能力越强,模型的泛化能力越强,识别精确度越高。
(2)4 种网络的精确度差异不超过10%。测试过程中每秒识别帧数(Frames Per Second,FPS)均大于30,但网络模型大小与总参数量差异极大,tiny网络和nano网络在普通YOLOX 网络基础上作了极大的精简,tiny 网络模型大小及总参数量是m 网络的1/5,nano 网络模型大小及总参数量仅为m 网络的1/25,说明在相同硬件条件下轻量化模型tiny 和nano 能处理更多的输入图像。由于目前高速公路运营管理部门普遍设置多摄像头同时对公路交通状况进行监控,而轻量化网络模型能同时处理多摄像头传输图像,因此能有效减少需要布置的图像处理设备数量,在满足识别精确度的前提下降低设备成本。
综上所述,YOLOX 网络模型在烟雾识别精度与速度方面均满足使用要求,轻量化模型tiny网络和nano 网络在模型大小和参数量指标上较m网络和s 网络有较大改善,能更好地完成多图像并行处理的识别任务,满足对多交通视频流同时进行烟雾识别的工程应用需求。
本文通过收集并标注多公路监控场景下的烟雾图像数据集,结合Smoke100K 部分数据集,整理形成公路场景烟雾数据集;搭建并训练了多种结构不同层数的YOLOX 目标识别网络,对YOLOX 系列网络的主体结构与轻量化方法进行了分析。在训练过程中采用Mosaic 数据增强手段对数据集进行扩充,有效地提高了模型的泛化能力。通过导入烟雾图像测试集,从网络识别精度、模型大小及总参数量等指标的角度对4种YOLOX 识别网络进行对比分析,结果表明YOLOX 系列模型均能较好地完成烟雾识别任务,精确度均达到90%以上,m,s 和tiny 网络的识别精度达到95%以上,说明YOLOX 网络结构具有较强的烟雾特征提取能力,可以满足公路运营监控对火灾烟雾事件的识别精度要求。同时,基于深度可分离卷积方法构建的轻量化网络nano,烟雾识别精度比m 网络和s 网络略低,但模型规模远小于m 网络和s 网络;nano 网络较m 网络的识别精度低8.35%,但模型大小及总参数量仅为m 网络的1/25,说明轻量化模型对计算资源的占用较少,在识别精度满足公路运营监控要求的前提下适当压缩模型规模,可以增加同批次输入网络的图像数量,使烟雾识别模型在边缘端得到更好的应用。
此外,受Mosiac 数据增强方法的启发,在今后的研究中将从对样本数据集作特征提取的角度进一步探究轻量化模型在样本不足条件下的训练精度问题。同时,注意到由于参数量减少会降低轻量化模型的特征提取能力进而影响识别精度,后续将继续深入研究模型轻量化与识别精度的平衡问题,分析网络各层的特征提取能力,进一步提高公路场景下烟雾识别效率。