范博森,左云波,徐小力,王林枫
(北京信息科技大学 机电工程学院,北京 100192)
道路信息涵盖车辆、路坑、交通指示牌、车道线等信息。近年来随着行车道数量的持续增加,如何有效收集道路信息的问题日益突出。凭借人力以肉眼观测记录道路信息所需时间久、任务难度高、时效性差,还容易出现漏检、错检,于是,人们开始利用传统图像处理方法完成道路信息检测任务。文献[1]中对图像进行颜色空间表示转换和形态学运算的预处理,通过多蓝色直方图和最小二乘特征匹配法完成对交通指示牌的检测;文献[2]提出了一种基于局部纹理特征的结构保持型Retinex算法用于检测路面裂缝,减小了光照和阴影对检测带来的影响;文献[3]提出了一种基于改进霍夫变换的Canny算法用于检测车道线,改善了恶劣天气下检测精度差的问题。但是传统图像处理方法大多鲁棒性较差、计算时间过长、泛化能力和精准度都达不到要求[4]。
如今深度学习算法崭露头角,并在目标检测领域展现出了较传统图像处理方法精度更高、速度更快的优势。文献[5]将更快卷积神经网络(faster region convolutional network,Faster RCNN)算法应用于道路车辆检测,检测精度高于传统图像处理方法;文献[6]将基于VGG16改进的Faster RCNN算法应用于路面裂缝检测,提高了检测准确率和定位精度;文献[7]将基于ResNet101改进的Faster RCNN算法用于小目标车辆检测,提高了检测平均精度以及小目标车辆的检测性能。基于深度学习的道路信息检测算法与传统图像处理方法相比性能更好[8]。
He等[9]提出的掩膜区域卷积神经网络(mask region convolutional network,Mask RCNN)算法从Faster RCNN派生而来,使用ROIAlign层代替ROIPooling层减小量化误差,添加了掩码任务分支实现了目标的实例分割,提高了检测任务精度,提升了小目标检测性能。文献[10]将基于ResNet50/101的Mask RCNN算法应用于路面缺陷检测,该算法在精确率和检测速度上较Faster RCNN算法有明显提升。但是基于Mask RCNN算法的道路信息检测仍然存在着检测速度较慢,对特征不明显的小目标检测效果较差等问题[11]。
本文以基于ResNet50/101特征提网络的Mask RCNN算法为基础,使用深度可分离卷积(depthwise separable convolution,DSC)替换普通卷积,减少网络参数量与模型计算量,提高算法检测速度;在特征提取网络中引入卷积注意力模块(convolutional block attention module,CBAM)提高网络对目标的专注度,提升特征提取质量;并使用双向特征金字塔网络(bidirectional feature pyramid network,Bi-FPN)替换原有特征金字塔网络(feature pyramid network,FPN)作为算法的特征融合网络,丰富特征图包含的语义信息;在PASCAL-VOC2012公开数据集上完成模型的预训练,提高模型的拟合力;针对自制道路信息数据集完成模型最终训练。实验表明,本文改进的算法较原算法在精确率、召回率以及检测帧频上有明显提升。
Mask RCNN算法应用于道路信息检测中检测速度慢、检测精度低,对尺寸小于32×32像素的小目标车辆、指示牌等目标检测效果差。本文引入DSC、CBAM与Bi-FPN对原算法进行改进。
道路信息检测模型的检测速度由算法结构直接决定。Mask RCNN算法结构如图1所示,主要由特征提取网络、特征融合网络、区域候选网络等组成。其中特征提取网络的卷积计算开销占据了大部分模型整体计算量[12]。本文选择ResNet50/101作为Mask RCNN算法的特征提取网络。
图1 Mask RCNN算法结构
如表1所示为ResNet50/101网络配置。ResNet50/101构建了深层残差网络结构,保证了网络深度对模型拟合度提高的同时又不会因层数过深而导致模型退化[13]。其中残差结构可以在一定程度上降低网络的参数量与计算量,避免冗杂的计算增加模型的检测速度。但是ResNet50/101使用大量的普通卷积依旧会导致检测速度缓慢[14]。
表1 ResNet50/101网络配置
为了提高模型的检测速度,本文采用DSC代替ResNet50/101网络中原有的普通卷积。DSC原理如图2所示。其将普通卷积操作分解成两步完成,第一步采用数量为M、通道数为1的一组卷积核分别对输入特征图的每个通道进行卷积操作,其中M与输入特征图通道数一致。对得到的特征图再通过数量为N、尺寸为1×1、通道数为M的一组卷积核进行卷积操作,其中N与原卷积数量一致。DSC保留了普通卷积对特征图进行基于空间和通道角度特征提取操作的同时,采用分步计算的方式降低了网络中的参数量与计算量。并且保证了在替换后不改变原输出特征图的尺寸与通道数,无需对网络做其他更改。
图2 DSC原理示意
普通卷积层总体参数量为
PN=DK×DK×N×M
(1)
式中DK×DK为普通卷积核尺寸。
普通卷积层总体计算量为
CN=DK×DK×N×M×DF×DF
(2)
式中DF×DF为输入特征图的尺寸。
DSC层的总体参数量为
PD=DK×DK×M×N×M×1×1
(3)
DSC层的总体计算量为
CD=DK×DK×M+N×M×DF×DF
(4)
DSC层总体计算量与普通卷积层总体计算量的比值为
(5)
在ResNet50/101卷积层中,N∈{64,128,256,512,1 024,2 048},DF∈{14,28,56,128},DK∈{1,3}。且ResNet50/101中使用大量卷积层,采用DSC可以大量减少模型的计算量,从而提高道路信息检测速度。
道路信息检测模型的检测精度由ResNet50/101的特征提取质量直接决定。在检测任务中,目标的类别与其在各个通道上的表达效果以及在图片中存在的位置具有关联性。在特征提取过程中充分利用空间关联性与通道关联性可以有效增强目标特征的表达能力,抑制无效特征的表达。本文在ResNet50/101中引入CBAM提高检测模型对目标的通道注意力与空间注意力。
CBAM由通道注意力模块(channel attention module,CAM)与空间注意力模块(spatial attention module,SAM)组成。CAM结构如图3所示,输入的特征图并行经过基于空间的平均池化与最大池化处理,得到尺寸为1×1、通道数不变的两个包含通道信息的特征图;接着两个特征图并行输入共享网络隐藏层多层感知器(multi-layer perceptron,MLP),通过元素对应的方式相加;最后通过激活函数得到通道注意力特征图,将其与原输入特征图元素对应相乘得到最终特征图输出。
图3 CAM结构示意
通道注意力特征图计算过程为:
(6)
SAM结构如图4所示,输入的特征图同时并行经过基于通道的平均池化与最大池化处理,得到尺寸不变、通道数为1的两个包含空间信息的特征图;接着将两个特征图进行通道拼接,通过卷积与激活函数得到空间特征图MS,将其与原输入特征图元素对应相乘得到最终特征图输出。
图4 SAM结构示意
空间注意力特征图计算过程为:
(7)
ResNet50/101+CBAM结构如图5所示,本文将CBAM模型放置在各个残差块之间,使得模型特征提取注意力时刻集中在道路信息目标上,提高特征提取的质量,从而提高道路信息检测模型的精度。
图5 ResNet+CBAM结构示意
道路信息检测任务中存在检测诸如远方车辆、指示牌等小目标。Mask RCNN算法通过特征金字塔网络(FPN)对不同尺度的特征图进行特征融合,提高小目标的检测性能。
FPN原理如图6所示。C1~C5为ResNet50/101自底向上提取出的特征图。FPN使用横向连接结构,采取最邻近法,按照从深到浅的顺序对深层特征图上采样将其尺寸变为与下一浅层特征图相同,对浅层特征图通过1×1卷积将其通道数变为与上一深层特征图相同。两者直接相加后通过3×3卷积消除混叠效应,最终得到融合后的P2~P6特征图,其中P6由P5降采样。FPN提升了对小目标的检测性能,但是其未能充分利用浅层特征图包含的位置信息,依旧会导致道路信息检测中出现小目标的漏检、错检。
图6 FPN原理示意
本文引入Bi-FPN替换FPN作为Mask RCNN算法的特征融合网络,提升道路信息检测模型对小目标的检测性能。Bi-FPN原理如图7所示。
图7 Bi-FPN原理示意
Bi-FPN在FPN的基础上得到特征图B4、B3、P2和P6。添加一条从浅到深的路径,通过对浅层特征图进行最大池化与上一深层特征图相加得到特征图P3、P4和P5。Bi-FPN可以使得深层浅层特征充分融合,得到的特征图带有丰富的语义信息和位置信息,除此之外Bi-FPN在每次特征融合操作中为每个输入特征图赋予可训练的权重,使得模型可以针对不同特征的重要性进行学习,提高特征融合质量,增加模型的检测精度。
本文实验模型训练基于PASCAL-VOC2012公开数据集与自制道路信息数据集。
在深度学习算法模型进行训练时,一般给模型设置随机网络参数从头训练,为了提升模型学习能力,所需数据集要求数量庞大且特征丰富[15],但是目前并没有符合条件的公开道路信息数据集。本文借鉴迁移学习的思想,通过利用优质数据集对道路信息模型进行预训练,增强网络对多种特征的学习能力。本文选取PASCAL-VOC2012公开数据集对模型进行预训练,其中包含20类目标共15 000多张图片,经常被用作深度学习的预训练数据集。共选取10 000张图片作为预训练数据集,其中8 000张作为训练集、1 000张作为验证集、1 000张作为测试集。
本文从行车记录仪中收集道路信息,为提高道路信息的丰富度,选取不同路段、不同光照、不同道路类型的行车记录仪视频进行图片截取自制道路信息数据集。数据集包含图片2 000张,其中1 600张作为训练集,200张作为验证集,200张作为测试集。
本文模型的训练在Ubuntu18.04操作系统中完成,处理器选择Intel(R) Core(TM) i5-8500 CPU @ 3.00 GHz,显卡选择16 GB内存的 GTX 1080 Ti。模型的测试在Win10操作系统中完成,处理器选择Intel(R) Core(TM) i7-10870H CPU @ 2.20 GHz。使用开源keras和tensorflow深度学习库搭建模型框架。
设置输入图片分辨率为1 280×720像素,模型预训练100轮次,每轮训练1 000次,模型正式训练120轮次,每轮训练1 000次。其中学习率设置为0.001,权衰减系数设置为0.000 1,学习动量设置为0.9。
2.3.1 网络损失
道路信息检测模型的网络训练损失函数收敛曲线如图8所示,图中损失函数曲线由上至下依次为基于ResNet50的原Faster RCNN算法、改进后Faster RCNN算法、基于ResNet50的原Mask RCNN算法、基于ResNet50的改进后Mask RCNN算法、基于ResNet101的原Mask RCNN算法以及基于ResNet101的改进后Mask RCNN算法。可以看出6个模型在迭代100~110轮次后损失达到收敛,证明了网络训练效果良好。
图8 损失函数收敛曲线
2.3.2 评价指标
本文选择平均精度均值(mean average precision,mAP)、召回率(Recall)和帧率(frames per second,FPS)用来衡量算法性能。平均精度均值为:
(8)
式中:m为类别总数;RAP为平均精度:
(9)
式中:NH为包含类别H的图片总数;RH为类别H的精确率:
(10)
式中:NTH为对H类预测正确的数量;NFH为对H类预测错误的数量。
召回率为
(11)
式中,NNH为包含类别H的所有图片中未正确检测出来的数量。
帧率为
(12)
式中:Ti为第i张图片检测所需要的时间(ms),将其设定为从模型读取图片至模型得出结果所经历的时间;n为用作测试的图片总数。
2.3.3 模型测试
从自制道路信息检测数据集的测试集中选取100张图片输入模型进行测试,计算结果如表2所示,对全部样本计算其mAP、Recall和FPS三项指标。
表2 模型测试计算结果
表中MR代表算法基础为Mask RCNN;FR代表算法基础为Faster RCNN;50代表特征提取网络采用ResNet50;101代表特征提取网络采用ResNet101。可以看出经过本文改进后的算法模型的3项指标较原算法都有明显提升。当特征提取网络选择相同时,Mask RCNN比Faster RCNN检测精度更高但检测速度更慢。当算法基础相同时,采用ResNet101比采用ResNet50精度更高。全面考虑检测精度与检测速度指标时,改进后采用ResNet50的Mask RCNN算法模型综合性能最佳。
改进后的基于ResNet50的Mask RCNN算法部分图片检测时间如表3所示,检测帧率为24.8帧/s。
表3 检测帧率结果
2.3.4 检测效果
基于自制数据集测试集对6个模型进行实际效果图测试,部分检测效果图如图9所示。从图9(a)、(b)可看出,改进后基于ResNet101的Mask RCNN算法可以检测出原算法无法检测出的指示牌。从图9(b)、(d)、(f)可看出,原Mask RCNN算法与原Faster RCNN算法对小目标的检测效果不佳,存在漏检的现象,且对目标的定位偏差较大。图片中存在多个目标时,检测性能变差,漏检现象较为明显。从图9(a)、(c)、(e)可以看出,采用本文方法改进后的模型对于小目标检测效果变得更好,同时在有多个目标存在时,性能稳定。检测总体效果与评价指标的测试结果相吻合,证明了本文改进方法可以提高算法模型的检测精度与小目标检测性能。
图9 分割结果检测对比图
2.3.5 消融实验
本文针对基于ResNet50的Mask RCNN算法,设计如表4所示的对比实验验证各改进方法的有效性。表中√代表算法采用对应的改进方法,×代表算法未采用对应的改进方法。
表4 对比实验设计
基于自制道路信息数据集测试集分别对每个实验进行测试,计算出各实验对比结果如表5所示。从表中可以看出,算法的特征提取网络使用DSC明显提高了模型的PFPS,略微降低了模型的RmAP与RRecall。分析其原因为,DSC减少了模型的参数量与计算量,提升了模型的检测速度,但同时会略微削弱模型的表达能力,些许影响模型检测精度。算法的特征提取网络使用CBAM明显提高了模型的RmAP与RRecall,略微降低了模型的PFPS。分析其原因为,CBAM强化了模型对目标的注意力,减少了冗余特征的表达,提升了模型的检测精度,但由于其放置于各个残差块之间,会增加些许计算量,影响模型的检测速度。算法使用Bi-FPN作为特征提取网络的总体效果与算法使用CBAM大致相同,但是其对RmAP与RRecall的提升相对较小,对PFPS的影响也更小。分析其原因为,Bi-FPN增强了融和后的特征图中语义信息与位置信息的丰富度,主要提高了模型对小目标的检测精度。但其相较于原FPN增加了些许计算量会略微降低模型检测速度。可以得出本文的改进算法较原算法检测精度更高、检测速度更快。
表5 对比实验结果
本文基于Mask RCNN对道路信息检测算法进行优化。在特征提取网络中使用DSC提高模型检测速度,引入CBAM提高模型的检测精度,采用Bi-FPN作为特征融合网络,提升模型对小尺度目标的检测效果。经过消融实验验证了本文各改进方法的有效性。基于ResNet50的Mask RCNN算法经过本文方法改进后,平均精度均值达到95.2%,较原算法提高了4.5%,检测帧率达到24.8帧/s,较原算法提高了8.3帧/s,且对指示牌等小目标检测性能较好,证明本文改进方法能够有效提升模型的综合性能。