孙 超,温 蜜,景俐娜
上海电力大学 计算机科学与技术学院,上海 200090
随着人工智能和交通网络技术的不断发展,计算机视觉算法服务于自动驾驶领域中的交通标志检测的需求也日益增加。交通标志检测[1]是高级辅助驾驶系统和自动驾驶系统中的子任务,对维护驾驶员的安全有着重要作用。但由于目标尺寸小、光照变化、部分遮挡、背景杂乱等问题[2],在实际的自然场景中对交通标志进行检测还存在一些困难。
过去,传统的交通标志检测方法主要通过提取目标的颜色、形状等特征进行分类。Li等人[3]提出一种Ohta空间的颜色概率模型来计算目标的颜色概率图,提取交通标志的轮廓信息进行检测。Liang 等人[4]为目标的每个类别设计了一组模板,用于匹配每类交通标志的形状。Wang等人[5]在德国交通标志检测大赛中,采用方向梯度(histogram of gradient,HOG)特征和支持向量机(support vector machine,SVM)分类器的直方图来检测交通标志并获得了高分。Xiao等人[6]使用BCNN(Boolean convolutional neural networks)结合HOG特征对GTSDB[7](German traffic sign detection benchmark)基准上的交通标志进行识别。上述方法虽然提高了交通标志的检测精度,但在实时性方面依然难以满足工业应用的要求。
自2012 年AlexNet[8]在ImageNet[9]图像分类比赛中获得巨大成功后,基于CNN(convolutional neural networks)的目标检测方法逐渐成为主流,大致可分为两类:多阶段目标检测和单阶段目标检测。
多阶段目标检测方法先提取图像候选框区域,然后基于候选框做二次修正得到检测结果。早期的Overfeat算法[10]利用多尺度滑动窗口对目标进行检测。RCNN(region-CNN)算法[11]利用选择性搜索[12]策略来建立ROI(region of interest)区域,并使用SVM 进行最终预测。为了检测不同尺寸的图像,Fast R-CNN[13]基于RCNN对SPP-Net(spatial pyramid pooling networks)[14]进行改进,使得网络可以实现端到端的训练。考虑到Fast R-CNN中选择性搜索的巨大时间成本,Faster R-CNN[15]提出了一种RPN(region proposal network)网络,通过共享卷积层从准确性上进一步提升了目标检测器的性能。
单阶段检测方法直接对图像进行检测,在牺牲精度的基础上提升了检测效率。其中YOLO(you only look once)[16]算法将物体检测作为回归问题进行求解,提升了检测速度。YOLOv2[17]为了解决YOLO 检测精度低的问题,在其基础上增加先验框、多尺度训练等策略。随后,刘紫燕等人[18]在YOLOv3[19]算法的基础上融合SPP网络并对FPN(feature pyramid network)结构进行改进,提升了交通标志的检测精度。SSD(single shot multibox detector)[20]算法融合YOLO的回归思想和Faster R-CNN的Anchor 机制,使用多个不同尺度的特征图对目标进行检测,在检测精度和速度上达到了更好的平衡。而在实际的道路交通中,交通标志拥有更小的尺寸、更复杂的背景信息,单阶段检测算法虽然能在大多数目标上取得较好的检测结果,但在交通标志检测的应用场景中还存在一些不足。
综上所述,由于单阶段检测算法具有良好的实时性能,本文在SSD 网络的基础上,提出一种改进的交通标志检测方法。首先对SSD的特征提取网络进行改进,提出新的浅层特征提取方法,从不同维度提取目标的特征信息,增强交通标志的感受野区域。同时,对网络中的深层特征图进行处理,通过条件参数卷积来加深网络模型容量,提升交通标志的特征表达能力。其次引入通道注意力机制,通过改进全连接层来减少通道降维对模型的影响,并在特征通道中融入更多目标的空间位置信息,增强交通标志在特征图中的显著性。最后优化算法的默认框参数,调整默认框的尺寸和数量来提升SSD模型对交通标志的检测效果。
SSD 检测算法对骨干网络VGG16 进行改进,将全连接层FC7更改为卷积Conv7层,同时在后续的特征提取网络中添加Conv8、Conv9、Conv10 和Conv11 这4 个卷积块。通过级联卷积的方式为目标生成不同尺度的特征图,并将得到的38×38、19×19、10×10、5×5、3×3 和1×1 大小的特征图输送到后续的回归和分类任务分支中。其中,浅层特征图层Conv4_3和Conv7用于识别小目标,而深层的Conv8_2、Conv9_2、Conv10_2和Conv11_2特征图用于检测中等或大物体。SSD的网络结构如图1所示。
图1 SSD网络结构Fig.1 SSD network structure
SSD 在不同尺度特征图的每个单元上设置不同尺寸和宽高比的默认框,通过默认框的设计来降低网络训练的难度。一般来说,每个单元都会设置多个默认框,但在尺寸和宽高比上会有一些变化。其中Conv4_3 特征图层上的尺寸进行单独设计,产生的最小尺寸为30,其余特征图中默认框的大小由式(1)计算:
其中,m为特征图的数量,Conv4_3 层的默认框尺寸是单独设计的,因此m=5。Sk表示默认框尺寸与原图的比例,其中Smin=0.2,Smax=0.9。
在SSD的不同尺度特征图中,对每个单元上的默认框设置不同的宽高比,来提高网络对不同形状目标的鲁棒性。每个默认框的高度和宽度由式(2)计算:
对宽高比tr=1 的默认框,在其基础上产生一个新尺寸的默认框,公式表示为:
因此,总共可以产生6 个不同宽高比的默认框,宽高比的设计如图2 所示。不同特征图上每个默认框的中心坐标为:
图2 默认框的宽高比Fig.2 Aspect ratio of default box
其中,|fk|为特征图的尺寸。通过将不同尺度特征图中的特征映射与不同比例和宽高比的默认框结合起来,SSD网络可以适应不同大小和形状的目标。
SSD 检测算法通过不同尺度的特征图和设定的默认框对目标进行检测,在显著的目标上取得了较好的检测效果,但由于交通标志目标在原始图像中的分辨率较低,特征信息经过卷积、池化等操作后将逐渐减少,严重影响交通标志的检测精度。为解决这个问题,本文在SSD的基础上进行改进优化,提出了基于改进特征提取网络、融合注意力机制和优化默认框参数的检测方法,通过实验和测试,验证了改进的算法在交通标志检测上的有效性。
本章将对改进的网络模型进行介绍,其中包括本文提出的特征提取方法、改进的通道注意力机制以及SSD的默认框参数优化。
SSD 利用不同卷积块中的特征图对不同大小的目标进行检测,为了更好地提取复杂场景下交通标志的特征信息,本文提出新的特征提取方法。首先,从不同的维度提取交通标志的位置信息和方向感知,并将其聚合到新的特征图中,以此来增强目标特征的表达能力。其次,引入条件参数卷积(CondConv)[21]的方法,对SSD网络的Conv8_2、Conv9_2、Conv10_2 和Conv11_2 特征图层进行卷积操作,利用特例化的卷积内核来减少网络开销并提升模型的表达能力。改进后的SSD 网络结构如图3所示。
图3 改进SSD网络结构Fig.3 Improved SSD network structure
(1)特征提取网络
由于高分辨率特征图中包含更多交通标志的特征信息,本文选取SSD网络的浅层Conv4和Conv7卷积块进行特征提取,整个过程如图4所示。
图4 浅层特征提取网络Fig.4 Shallow feature extraction network
为了更好地保留目标空间方向的位置信息,使用(H,1)和(1,W)大小的池化内核对输入特征图进行池化操作,沿水平和垂直方向将其分解为两个一维特征,大小分别为C×H×1 和C×1×W。随后通过两个不同尺寸的卷积内核进一步提取特征信息,并对H×W×C/2 大小的特征图进行融合,经过BN 和ReLU 激活函数处理后将其输送到后续的特征提取网络中。此外,为了更好地提升交通标志的感受野区域,对特征图进行分组卷积,利用C组1×1大小的卷积内核来学习更多的特征信息,最后将编码后的特征图输送到SSD网络的分类和回归任务分支中。
通过本文提出的特征提取网络对特征图进行处理,目标的空间位置信息被很好地保存下来,同时交通标志的感受野区域进一步增强,可以有效地提升复杂背景下交通标志的检测精度。
(2)条件参数卷积
在SSD的后续特征提取网络中,对4个不同尺度的输入特征图进行特例化的卷积计算,随后再使用得到的卷积核对特征图做卷积操作得到对应的输出,整个卷积过程的数学表达式为:
其中,σ表示激活函数,n为专家混合的数量,Wi为SSD网络中原始卷积层的内核维度,而αi=ri(x)是一个依赖于输入特征图的标量权重,由具有学习参数的路由函数计算得到:
条件参数卷积的应用相当于多个专家公式的线性组合,数学公式表示为式(7),其中每个专家对应于传统的静态卷积。因此,条件参数卷积具有与n个专家线性混合相同的容量,但是计算效率更高,因为只需要对一个昂贵的卷积操作进行运算。
图5 为条件参数卷积示意图,可以看出,对输入特征图(H×W×C)做全局平均池化(global average pooling,GAP)得到C维向量之后,通过FC层获取n维向量(对应n个专家的加权值),然后利用Sigmoid 函数将值约束到[0,1]中来作为n个卷积核参数的加权权重,最后与输入特征图进行组合可生成具有权值的新特征图,并将该层特征图用于后续的任务分支中。
图5 条件参数卷积Fig.5 Conditional parameter convolution
本文对SSD模型的特征提取网络进行改进,单独处理网络的Conv4_3、Conv7层特征图,通过特征提取网络对交通标志的空间坐标信息和位置信息进行探索,让网络学到更多目标的细节信息,并进一步增强浅层特征图上目标的感受野区域。同时,使用条件参数卷积内核对深层特征图进行计算,通过提升核生成函数的复杂性来提升模型的容量,在减少网络参数的同时增强交通标志的特征表达能力。
为了使SSD模型关注到更多的交通标志目标,本文引入注意力机制并进行改进。通道注意力机制首次由SE-Net[22]提出,通过建立特征之间的空间相关性,提升卷积神经网络的性能,其网络结构如图6所示。
图6 SE-Net结构Fig.6 SE-Net structure
具体来说,给定输入特征,SE-Net 对每个通道进行全局平均池化(GAP),然后使用两个全连接层(FC)和Sigmoid函数来生成通道权重。尽管这种策略被广泛用于后续的通道注意力模块中,但降维操作会破坏通道与权重之间的直接对应关系,同时SE-Net 只对特征通道进行处理,忽视了目标的空间特征信息。基于此,本文在SSD 网络中融入通道注意力模块,并对其进行改进,强化特征通道之间的信息交互,优化通道与权值的对应关系,改善目标的空间特征表达。
本文使用的通道注意力结构如图7 所示。给定输入特征图χ∈RH×W×C,首先沿着通道方向将其分为2个分支,即χ1,χ2∈RH×W×C/2。其中χ1利用通道间的相互关系生成通道注意力图,χ2通过特征之间的空间位置关系形成空间注意力图。
图7 改进通道注意力结构Fig.7 Improved channel attention structure
对于通道注意力子图,使用全局平均池化进行编码,生成大小为1×1×C/2 的特征通道。同时为了减少SE-Net中全连接层带来的降维影响,使用一维卷积内核来学习通道之间的直接对应关系,随后通过简单的Sigmoid 函数将其编码为不同的权重数值,并最终与输入特征图进行相乘操作,得到具有更强目标相应的子特征图。
同时,为了更好地学习交通标志在特征图中的位置敏感度,对χ2输入使用1×1 的卷积内核得到H×W×1的特征图,然后使用Sigmoid 函数进行激活,并与输入χ2进行空间信息校准生成空间注意力子图。最后对两个不同的特征子图进行融合操作,输出具有交通标志关键特征信息的新特征图,并将该特征图用于SSD网络的后续特征提取网络中。
综上所述,由于高分辨率的特征图拥有更丰富的交通标志特征信息,本文选择在SSD 网络的浅层特征图Conv7 后加入通道注意力模块。通过对Conv7 层特征图进行分解,并行提取目标的重要感知信息和空间位置信息,增强交通标志目标在特征图上的显著性,提升SSD模型对交通标志的检测精度。
SSD算法利用不同尺度的特征图对目标进行检测,每层特征图上设置不同尺寸和数量的默认框。为了让默认框更好地框定目标并减少复杂背景信息的干扰,本文根据交通标志尺寸小的特点对默认框的尺寸和数量进行优化,将SSD 网络使用的Smin和Smax设计为0.14和0.86,并将用于检测大目标的Conv10_2 和Conv11_2层特征图上的默认框数量调整为0,来减少网络参数。改进后的目标默认框尺寸和数量如表1 所示。通过减少默认框的尺寸和数量,可以有效避免交通标志因尺寸小而无法与默认框匹配的问题,同时可提高SSD对交通标志的检测速度。
表1 每层特征图上的默认框尺寸和数量Table 1 Default box size and number on each layer of feature maps
为了验证本文方法的有效性,在CCTSDB数据集上与其他方法进行对比分析,并在该基准上对提出的方法进行消融实验,同时通过LISA 数据集来验证改进的SSD检测模型在其他交通标志上的鲁棒性。
3.1.1 CCTSDB数据集
CCTSDB为中国交通标志数据基准,其中包含来自城市道路和高速公路等场景的15 734张图像,分辨率为1 000×350~1 024×768,数据类别为mandatory、prohibitory、warning。
本文在CCTSDB数据集中选取不同场景、相似度较低的3 105张图片,挑选合适的图片进行数据增强操作,对符合条件的图片加入雨、雾、雪和多云4 种不同的天气因素进行扩充,使其具有更多的自然天气场景,扩充后的数据集示例如图8所示。通过数据增强操作,共有4 000 张图片用于训练和测试,其中3 200 张训练图片,800张测试图片,对本文改进的算法进行评估。
图8 基于天气因素的数据增强Fig.8 Data enhancement based on weather factors
3.1.2 LISA数据集
美国交通标志LISA 数据集提供6 610 张分辨率为648×480~1 024×522的图像,共有47个类别。该数据集中大多数类别的实例数较少,因此本文选择实例数较多的4类交通标志进行检测,分别为stop、pedestrianCrossing、singalAhead、speedLimit。经过对LISA 数据集进行处理,将3 764张图片用于训练,941张图片用于测试。
本文实验基于Ubunta18.04操作系统,CPU为Intel®CoreTMi9-9900K,GPU为NVIDIA GeForce 2080,16 GB显存,训练及测试在深度学习Pytorch框架上完成。
为了对改进的SSD交通标志检测算法进行评估,选用查准率(precision,P)、召回率(recall,R)、AP 和mAP作为评价指标,计算公式为:
式中,TP表示检测到的目标类别与真实目标类别一致的样本数量;FP为检测到的目标类别与真实目标类别不一致的样本数量;FN是真实目标存在但未被网络检测出来的样本数量;N为目标类别数。
3.3.1 与其他方法的性能比较
本小节将本文改进的SSD 检测算法与其他先进的方法进行比较,其中包括Faster R-CNN,YOLO 系列的YOLOv3、YOLOv4[23],基于Anchor-free的CornerNet[24]、CenterNet[25]方法以及SSD的不同改进DSSD[26]和FSSD[27]算法。
表2 为不同算法在CCTSDB 数据集上获得的类别AP 值,其中SSD300 和SSD512 模型在3 类交通标志上获得的准确率分别为84.9%、83.1%、91.0%和85.0%、85.9%、90.7%。相比于其他常用的检测方法,SSD 在具体数据类别上并没有取得较好的优势。通过本文的方法对其进行改进,SSD300 和SSD512 模型的类别AP 值分别提高了8.1个百分点、9.5个百分点、5.1个百分点和8.8个百分点、10.2个百分点、5.9个百分点。与其他的检测算法相比,本文改进的SSD交通标志检测算法在不同的输入尺寸下均取得了较好的检测结果,具有更好的准确性。
表2 不同算法的AP对比Table 2 AP comparison of different algorithms
为了验证本文所提方法的实时性,对各模型的检测速率进行对比,实验结果如表3 所示。可以看出,本文提出的方法获得了较好的检测结果。具体来说,Faster R-CNN 的检测准确率为83.9%,但检测速度只有15.4 FPS。YOLOv4可以在YOLOv3算法的基础上进一步提升mAP 和FPS,检测单张图片只需11 ms。Center-Net 算法的mAP 超过了SSD512 模型,检测精度为87.7%。与其他的检测算法相比,本文改进的SSD300可以获得更高的准确率,mAP 达到93.9%,检测速度为87.5 FPS,检测图片所需的时间也仅为11 ms。随着输入图像的分辨率的提升,检测精度也进一步提升,改进SSD512 模型的mAP 为95.5%。实验表明,本文改进的SSD检测算法具有良好的实时性和准确性,可满足实际场景的检测需求。
表3 不同算法的性能对比Table 3 Performance comparison of different algorithms
此外,根据上述几种检测方法和改进的SSD300 在三种数据类别上的Precision 和Recall 值,绘制了P-R 曲线,如图9所示。可以看出,本文改进SSD网络的P-R曲线在不同数据类别的检测结果中,都能够包围住其他的检测模型,说明本文方法可以有效地检测出其他算法未检测到的交通标志。
图9 不同算法的P-R曲线Fig.9 P-R curves of different algorithms
3.3.2 消融实验结果与分析
本小节对提出的方法进行消融对比分析,实验结果如表4所示,其中改进1、2、3、4分别表示改进SSD300的浅层特征提取网络,对深层特征图进行条件参数卷积,在Conv7层特征通道后融入注意力模块,以及对默认框参数进行优化。
从表4 中可知,对浅层特征提取网络进行改进,充分学习交通标志的位置感知和方向感知信息,可将检测精度提升4.7个百分点,但检测速度有所下降;使用条件参数卷积内核对SSD网络的深层特征图进行处理,可有效增强交通标志的特征表达能力,带来更少的网络开销,相比于SSD 算法依然能保持较高的检测速率;引入通道注意力模块来增加目标的显著性可提升检测的平均准确率,mAP 达到89.9%,同时由于对特征通道进行分组处理,减少了部分网络参数,检测每张图片需要的时间仅为11 ms;默认框参数的优化进一步提升了检测速度。最后结合上述四种不同的改进方法,相对于SSD检测模型,本文改进的SSD 将检测精度提升7.6 个百分点,检测速度达到87.5 FPS,检测图片所需的时间与SSD模型一样,这表明本文改进的交通标志检测算法具有较好的应用价值。
表4 消融实验结果Table 4 Results of ablation experiments
为了进一步验证本文改进的SSD 检测模型对其他交通标志的鲁棒性,在LISA数据集上进行实验,相关实验结果在表5中进行展示。
表5 整体检测性能对比Table 5 Overall detection performance comparison
通过对比表5中的检测结果可知,改进后的SSD300和SSD512 模型在LISA 数据集上获得的mAP 分别为94.6%和96.7%,相比于SSD提升了8.5个百分点和6.2个百分点。同时,改进后的SSD检测算法依然有较高的检测速率,表明本文提出的方法在其他交通标志数据集上具有良好的鲁棒性。
本节随机选取部分图片进行可视化,图10为CCTSDB数据集上的检测结果,从左到右分别为SSD检测结果和改进的SSD检测结果。可以看出,在不同的自然交通道路场景中,本文改进的SSD模型均可检测出交通标志类别,并在SSD 算法的基础上进一步提升了检测精度,可满足工业应用的高准确性要求。
图10 CCTSDB数据集可视化Fig.10 CCTSDB dataset visualization
LISA 数据集的可视化结果如图11 所示。可以发现,不管在什么样的拍摄图片中,本文改进的SSD 模型依然有很好的表现,不仅可以检测到SSD漏检的交通标志,还可以在原有的基础上提升检测精度。综上各种环境下的图片检测结果可知,改进后的SSD算法在交通标志检测方面具有良好的性能。
图11 LISA数据集可视化Fig.11 LISA dataset visualization
针对无人驾驶场景中交通标志检测精度低、实时性差等问题,本文对SSD算法进行改进。首先设计新的特征提取网络来学习目标的位置和方向信息,增强交通标志的特征表达能力,同时通过条件参数卷积来提取目标的重要特征信息。其次在网络中加入通道注意力模块,增强交通标志目标的显著性。最后对默认框尺寸和数量进行优化,提升网络对交通标志的检测效果。改进后的SSD 算法在保持检测速率的同时将检测精度提升了7.6个百分点和8.5个百分点,并对复杂自然场景中的交通标志具有更好的鲁棒性。在未来的研究工作中,将关注如何在高分辨输入图像的前提下,提升SSD模型对交通标志的检测速度。