改进YOLOX-S实时多尺度交通标志检测算法

2023-11-20 10:58王能文
计算机工程与应用 2023年21期
关键词:交通标志主干卷积

王能文,张 涛

江南大学 人工智能与计算机学院,江苏 无锡 214000

随着计算机、通信和智能信号处理技术的发展,智能交通系统(intelligent transportation system,ITS)越来越普及。ITS的一项关键技术是交通标志检测,它是自动驾驶技术的基础。在交通标志检测任务中,车辆获取的图像帧容易受到光照强度和天气条件的影响,且交通标志目标往往只占据整个图像的一小部分。所以,实时交通标志检测仍然存在许多挑战[1-2]。

首先,传统的目标检测技术难以用于交通标志检测。传统目标检测算法[3]使用滑动窗口方法或图像分割技术生成大量的候选区域,然后为每个候选区域提取图像特征。例如方向梯度直方图(histogram of oriented gradient,HOG)[4]、尺度不变特征变换(scale-invariant feature transform,SIFT)[5]和Haar[6]。最后,这些特征被输入到分类器,如支持向量机(support vector machine,SVM)[7]、自适应增强[8]和随机森林[9]等,以确定每个候选区域的类别。传统方法在生成候选区域的时候需要大量的计算开销。然而,交通标志识别在实际应用中对速度和精度都有着严格的要求。因此,传统目标检测方法的精度和速度远远不能满足自动驾驶的要求。

其次,基于复杂神经网络的交通标志检测算法也很低效。Krizhevsky 等[10]在2012 年提出了AlexNet,这使得卷积神经网络(convolutional neural networks,CNN)引起了极大的关注。此后,基于深度神经网络的目标检测算法[11-14]进入快速发展阶段,它以更多的存储和计算开销为代价,实现了比传统方法更高的精度。然而,交通标志检测任务的存储空间和计算能力有限,所以,使用基于复杂神经网络的交通标志检测算法也不太适用。由于上述两种方法的不足,使用轻量级卷积神经网络检测和识别交通标志是目前比较理想的方法。文献[15]提出一种具有类层次结构的新型架构级联扫视网络,用于交通标志检测,在TT100K数据集上小目标的平均精度提高了6%。文献[16]为了聚合不同尺度的特征并抑制背景中的杂乱信息,提出一种多尺度注意金字塔网络,在多种交通标志数据集上都取得了不错的效果。文献[17]在YOLOv3 主干网络中融合SPP 并改进特征金字塔网,利用K-means 聚类算法对数据集进行聚类分析,重新定义候选框,以提升检测性能。文献[18]在YOLOv5基础上进行各种优化策略,包括提出区域上下文模块、在主干部分引入特征增强模块和进行多尺度特征融合,以此来提高交通标志检测精度和召回率。虽然现有交通标志检测算法取得了较好的成果,但是由于交通标志目标小、受背景环境影响大,在实时场景中仍然存在检测速度慢、精度低和漏检问题。所以,实时交通标志检测还需要进一步研究。

Ge等[19]提出YOLOX算法,采用SimOTA、解耦头等改进措施显著提升检测性能。YOLOX包含多种不同体量的模型,其中,YOLOX-S 模型参数量较少,比较适用于实时性要求较高的应用场景。但YOLOX-S相比于其他体量大的模型在检测精度上还有差距。本文提出一种改进的YOLOX-S 实时多尺度交通标志检测算法,既保证了模型的实时性要求,又提高了多尺度交通标志检测的精度。改进思路如下:(1)设计ResNet50-vd-dcn代替原YOLOX-S中的CSPDarknet53主干网络,ResNet50-vd-dcn 由最新的ResNet-D 结构和可变形卷积网络(deformable convolutional network,DCN)[20]设计而成,其减少了模型的计算量,同时也可以保证网络的学习能力。(2)本文提出增强特征图模块(enhanced feature map module,EFMM),加入到主干网络的三个特征层之后。EFMM采用特征图连接流和注意力机制流,减少特征图生成过程中的信息丢失。在保持检测速度的同时有效地提高了模型的识别精度。(3)提出一种三通道加权双向特征金字塔网络,替换原YOLOX-S 颈部的路径聚合网络(path aggregation networks,PAN)[21],增强对不同层级特征的信息融合能力,提高对多尺度目标识别的能力。(4)在后处理阶段,使用Focal Loss[22]损失函数解决正负样本不平衡问题,提高模型对正样本特征的学习能力,进而提高模型对小目标物体的检测率。

1 研究与方法

本文改进算法框架主要分为主干网络、特征增强网络、特征融合网络和检测头,整体算法架构如图1所示。输入图片大小以416×416 为例,首先经过ResNet50-vddcn主干网络生成尺度大小为52×52、26×26、13×13的三个特征通道,其次三个通道中的特征信息再进入特征增强网络EFMM 进一步提升语义信息维度,之后进入到特征融合网络中进行交互融合。最后将融合后的特征图输入到检测头进行检测。

图1 YOLOX-S网络结构Fig.1 YOLOX-S network structure

1.1 主干网络的改进

YOLOX-S 使用CSPDarknet53 作为主干网络,经查阅参考文献[23]发现,该结构在检测小目标物体上会存在一定缺陷,因为使用该主干网络,模型在反向传播中各个神经元节点之间会存在梯度重复现象,会降低模型的整体性能,因此本文设计ResNet50-vd-dcn 替换原YOLOX-S 模型的主干网络CSPDarknet53。研究表明[24],残差网络能够提取更加丰富语义信息的特征图,此外,ResNet-50 残差网络的模型计算量和大小远小于CSPDarknet53。本文选择ResNet 最新的ResNet-D 结构,其中ResNet50-vd 优化了ResNet 下采样信息丢失问题,然后结合可变形卷积DCN,设计出ResNet50-vd-dcn作为主干特征提取网络,在保证模型检测速度的同时,能够显著提升其在小目标物体上的表现能力。

1.2 特征增强网络

图片中的小目标所占像素少,并且容易受环境和背景因素等影响,直接使用YOLOX-S模型算法,在进行卷积采样的时候,会造成小目标特征信息的丢失,使得模型的表示能力降低,影响小目标物体的检测效果。因此本文提出增强特征图模块EFMM,加入到主干网络的三个特征层之后,使得模型更加关注小目标,减少特征图生成过程中的信息丢失,在保持原有速度和精度的同时提高对小目标的检测准确率。

首先,为了在保持检测速度的同时提取更多的语义信息,本文提出了一种轻量级的特征图连接流,将输入特征图的通道分成两半,并在其中一个半图上执行三个卷积操作。由于只对卷积层使用特征图的一半权重来抑制卷积增加的参数数量,与一般卷积相比,这种方式学习量减半。最后,通过卷积层的特征图和另一个特征图使用跳跃连接相互连接。其次,从浅层提取的低级特征会激活图像中的边缘或背景,如果模型能够聚焦在一个物体上,它就可以检测到小物体被捕捉到的区域。对此,本文提出一种使用重要性图的有效注意力机制流。重要性图由通道平均池化和sigmoid激活函数生成。输入特征图的像素被平均,然后归一化到0~1。生成重要性图时,模型不执行卷积操作。在这个流中,模型只执行两个简单的操作,没有额外的学习。因此,它防止了检测速度的下降。最后,将重要性图和连接图元素相乘,并将其添加到输入特征图中。通过这种方式,本文提出增强特征图模块,将其加入到主干网络之后,可以有效地检测小目标物体。

增强特征图模块EFMM如图2所示。首先,注意力流通过通道平均池化(channel-wise average pooling)对输入特征F(f∈RH×W×C)的所有通道进行压缩,将通道中的所有像素相加,再除以通道数生成自注意力图(self-attention map)mattn∈RH×W×1。其中C是通道数,H和W分别是高和宽。通过平均输入特征图通道的像素值,其中高值像素被认为是高级语义特征,生成的特征图包含对象及其周围区域的信息。如图2所示,自注意力图通过一个sigmoid 激活函数生成重要性图(importance map)mimp∈RH×W×1。这样,重要性图中的像素被归一化为(0,1),从而平滑了特征图像素值的过渡。接近于1 的重要性图的每个像素被认为是最具辨别力的部分(前景),而接近于0的像素值对应于辨别力较差的部分(背景)。通过这些操作,使得检测器专注于对象区域。重要性图计算公式如下:

图2 增强特征图模块EFMMFig.2 Enhanced feature map module EFMM

最后是两张图的结合,在获得重要性图mimp和特征图连接流mconcat后,将它们组合以生成最终的增强特征图f′∈RH×W×C。重要性图mimp充当对象感知掩码,并按元素乘以特征连接图mconcat以生成对象感知特征图。从公式(3)可以看到,通过添加对象感知特征图和原始输入特征图来创建最终的增强特征图f′。增强的特征图f′用作下一个卷积层的输入,与现有模型相比,其共享更高级别的特征。

1.3 特征金字塔结构的改进

YOLOX-S 的Neck 模块使用的是路径聚合网络PANet,PANet 是在FPN 的基础上再建立一条自下而上的通路,将位置信息也传到预测特征层中,使得预测特征层同时具备较高的语义信息和位置信息。但仍然存在缺陷,由于预测特征层级之间特征利用率较低和过多的信息冗余,会导致特征层融合不够充分,丢失对小目标物体的特征信息,降低模型的检测精度。针对PANet存在的上述缺陷,Tan 等[25]提出加权双向特征金字塔网络BiFPN,BiFPN处理每个双向路径作为一个特征网络层,并重复同一层多次,以实现更高层次的特征融合。基于BiFPN 结构,同时结合大核注意力,设计了适用于本文算法的三通道加权双向特征金字塔网络,如图1所示。输入图像通过主干网络生成特征映射{C1,C2,C3,C4,C5},最上层的C3、C4、C5三个大小不同的特征图输入到三通道加权双向特征金字塔网络中,进行特征融合。该网络结构不仅可以连接不同级别之间的特征信息,还保留了相同层级的原始特征信息,将底层细节信息和高层语义信息充分融合。

本文采用大核注意力(large kernel attention,LKA[26])的方式给LKA-BiFPN特征融合网络的多尺度通道分配权值。大核注意力分配权值的方式相比于原BiFPN 随机分配权值的方式,可以显著增加模型的感受野,提高对小目标物体的关注度。

大核卷积可分为3 个部分,空间局部卷积、空间远程卷积和通道卷积。如图3(a)所示,LAK 模块写作式(4)、(5):

图3 LKA与Self-Attention结构对比Fig.3 Comparison of LKA and Self-Attention structures

其中,F∈RC×H×W是输入特征,Attention∈RC×H×W表示注意力图,注意力图中的值表示每个特征的重要性。将注意力权重与输入特征图进行逐元素相乘,即可得到输出特征图。如图3(b)所示,自注意力(self-attention,SA[27])虽然能够在提取局部特征信息的基础上进一步捕捉长期依赖,并在空间维度上具有适应性,但是它忽略了局部信息和通道维度上的适应性。而LKA不仅可以利用本地信息捕获长距离依赖,而且在通道和空间维度上都具有适应性。因此,在YOLOX-S 算法中引入LKA,可以为整个算法提供更加有效的注意力引导,从而提升算法的检测性能。

如图4 所示,改进后的特征金字塔融合网络将52×52 的特征图通过一个大小为3×3 和步长为1×1 的卷积核,得到一个26×26的特征图,并将其与52×52的特征图进行融合。再将26×26的特征图进行相同的卷积操作,得到大小为13×13的特征图,再将其与26×26的特征图进行融合。最后,将最终融合的特征图进行2 倍和4 倍的上采样,然后再进行一次不同尺寸的特征融合。

图4 LKA-BiFPN加权特征融合模块Fig.4 LKA-BiFPN weighted feature fusion module

1.4 损失函数的改进

YOLOX-S的损失函数主要由定位损失函数(localization loss)、分类损失函数(classification loss)和目标置信度损失函数(confidence loss)组成。检测框位置的iou_loss,YOLOX-S 使用传统的giou_loss,而分类损失和置信度损失都是采用BCE_loss的方式。

在实际的交通场景中,交通标志目标往往会受到光照强度、雨雪和雾霾等恶劣天气的影响,另外交通标志目标相对较小,在检测过程中受背景干扰影响大,正样本和负样本难以区分。负样本过多会导致模型在训练过程中对正样本学习不够,模型性能不稳定,召回率较低。为平衡正负样本,本文使用Focal Loss损失函数替换置信度损失函数BCE_loss。Focal Loss 函数定义如式(6)、(7):

其中,α是解决正样本和负样本比例的平衡系数,范围是0 到1,γ是控制难分类样本和易分类样本权重的平衡系数,pt是难分类样本和易分类样本的概率。

2 实验结果与分析

2.1 实验数据集

2.1.1 TT100K数据集

TT100K 是我国的交通标志数据集,它提供了100 000 张包含30 000 个交通标志实例的图像,这些图像场景丰富,涵盖了光照和天气条件的巨大变化。数据集图像中的交通标志较小,外加图像包含大量的干扰背景信息,导致对交通标志的检测很困难[28]。本文选取了9 170张图片共涵盖了45种类型的交通标志,训练集、验证集和测试集的划分比例按照8∶1∶1。

2.1.2 CCTSDB数据集

另外一个数据集是长沙理工大学中国交通标志检测数据集(CSUST Chinese traffic sign detection benchmark,CCTSDB)[29]。CCTSDB 共包含三大类交通标志,分别是警告标志、禁止标志和指示标志。其提供了15 724张训练集和400张测试集。本文选取15 724张训练集图片进行训练,另外400张图片进行测试。

2.2 实验环境及参数设置

本文实验的操作系统为Ubuntu 16.04.7 LTS,CPU型号为Intel®Core ™ i9-9900X CPU。GPU 型号为NVIDIA RTX 2080Ti,内存大小为12 GB。该YOLOX-S模型是基于Pytorch 深度学习框架,Python 作为编程语言,使用CUDA 10.1,和CUDNN 7.8对GPU进行加速。

在训练中,本文使用马赛克(Mosaic)数据增强来提高性能。马赛克生成的训练图像与自然图像的实际分布相差甚远,而且大量的马赛克裁剪操作会带来很多不准确的标注框,所以在训练过程中,本文只在训练的前90%轮使用马赛克,在后10%轮则关闭马赛克数据增强策略。本文的模型都是从头开始训练,所有模型均使用具有12 GB 内存的单个NVIDIA RTX 2080Ti GPU 进行训练。总共训练300轮,其中前20轮为模型热身。批量大小设置为16,使用SGD来训练整个网络,动量设置为0.937,权重衰减为0.000 5,初始学习率为0.01,采用余弦退火策略降低学习率。

2.3 评估指标

评估指标主要由检测速度和检测精度组成。检测精度用于评估模型对目标准确定位和分类的能力,本文实验使用小目标平均精度APs、小目标平均召回率ARs、总体样本平均精度mAP和检测速度FPS作为评估指标。

2.4 TT100K数据集实验结果分析

在TT100K 数据集上,本文设计了消融实验和与其他主流算法的对比实验。

2.4.1 消融实验

消融实验是为了验证本文所提出的改进是否对交通标志检测性能的提升有效,实验结果如表1所示。对比分析了(1)原YOLOX-S 模型;(2)改进模型1 是将原YOLOX-S 模型的主干网络CSPDarknet53 替换成ResNet50-vd-dcn;(3)改进模型2 是在主干网络的三个特征层之后加入EFMM;(4)改进模型3 表示修改原网络的特征金字塔结构;(5)改进模型4 表示修改原网络的损失函数;(6)本文模型表示同时修改主干网络、加入增强特征图模块、修改特征金字塔结构和修改损失函数。在TT100K数据集上进行消融实验,图片输入尺寸为960×960,其他实验条件均相同。

从表1中的数据可以得出,仅将原模型的主干网络替换成ResNet50-vd-dcn之后,小目标精度下降了0.8个百分点,小目标召回率下降1.8 个百分点,但是参数量降低0.9 MB,检测速度由116 FPS 上升为130 FPS。仅添加增强特征图模块,在小目标精度上提升了1.2 个百分点,在小目标召回率上提升了1.8 个百分点。仅修改特征金字塔结构,小目标精度提升1.1 个百分点,小目标召回率提升0.9 个百分点。仅修改损失函数,小目标精度提升0.4 个百分点,小目标召回率提升0.6 个百分点。将所有改进添加到原模型中,在小目标精度上提升2.8 个百分点,在小目标召回率上提升4.1 个百分点,总体平均精度提升2.1 个百分点,参数下降0.3 MB,检测速度提升了2.3 FPS。由此可见,本文提出的各项改进效果明显。

在主干网络的改进中,本文引入了特征增强模块,其中提出了一种轻量级的特征图连接流,将输入特征图的通道分成两半,对此通过实验验证了这种方法的有效性。如表2 所示,方法1 是使用分割的特征图,方法2是没有分割的特征图,实验所用模型为YOLOX-S+EFMM。由实验结果可知,将输入特征图的通道分成两半,不仅模型的参数量更少、速度更快,而且小目标平均检测精度要高0.3个百分点。

表2 EFMM部分对比实验Table 2 EFMM partial comparative experiments

同时,为了验证本文提出的增强特征图模块EFMM的有效性,还与其他当前主流的注意力机制(squeezeand-excitation,SE)[30]、坐标注意力机制(coordinate attention,CA)[31]、(convolutional block attention module,CBAM)[32]进行了对比。由表3得出,本文所使用的增强特征图模块相比于其他注意力机制,不仅参数量最少、速度最快,且在小目标精度、小目标召回率和总体目标精度上均优于其他注意力机制。

表3 EFMM和不同注意力对比实验Table 3 EFMM and different attention comparative experiments

2.4.2 与主流算法对比实验

本文的改进模型在TT100K 数据集上测试结果与其他先进目标检测器的对比结果如表4 所示。涉及的主要比较内容包括模型的小目标精度、小目标召回率、总体平均精度、模型参数和检测速度。关于检测速度的测试,均在单个RTX 2080Ti GPU 的同一台机器上,使用每秒1 批大小来进行测试。其他先进模型的测试结果来源于参考文献。

表4 与先进算法对比实验Table 4 Comparative experiment with advanced algorithm

从表4可以得出,本文改进后的算法在交通标志数据集TT100K 上不论是速度还是精度相比其他一些主流算法都有一定优势。具体比较结果如下:本文改进的算法相比于原YOLOX-S 算法,在小目标精度上提升了2.8 个百分点,在小目标召回率上提升了4.1 个百分点,在总体平均精度上提升了2.1 个百分点,而且参数量下降0.3 MB,检测速度从116.0 FPS 提升到118.3 FPS。其中,YOLOv5-S算法的检测速度最快,达到了125.0 FPS,参数量7.3 MB 也是最少的,但是其在小目标精度上相比本文算法少了大约5个百分点,小目标召回率也少了6.3个百分点。相比于基于Transformer的目标检测算法TSP-RCNN[37],本文算法在小目标精度上提升6.2 个百分点,参数量更少,检测速度优势更加明显。其他算法中,小目标精度最好的是文献[18],相比本文算法低了1.5个百分点,检测速度低了约35 FPS。

2.5 CCTSDB数据集实验结果分析

为了进一步验证本文改进的YOLOX-S算法的性能以及对其他交通标志数据集的鲁棒性,本文在CCTSDB数据集上也做了相关实验。CCTSDB 数据集中的交通标志主要以中大型目标为主,小目标占比很少,所以在CCTSDB数据集上涉及的比较内容只包括模型的大小、检测速度和mAP。具体比较结果如表5所示。

表5 CCTSDB数据集对比实验Table 5 CCTSDB dataset comparative experiments

从表5中可以得出,本文算法与原YOLOX-S算法相比,精度提升了1.1 个百分点,同时参数量略微降低0.3个百分点,检测速度相差不大。在CCTSDB数据集上与一些主流算法对比结果如下,与YOLOV3、T-YOLO[42]、文献[43]和文献[18]相比,速度和精度均高于它们。与改进的YOLOv3-Tiny[41]相比,本文算法速度低于改进的YOLOv3-Tiny[41],但是精度高4.2 个百分点。与YOLOv5-S相比,在速度略低的情况下,精度高出2.4个百分点。通过实验表明,本文提出的算法在其他交通标志数据上也具有鲁棒性。

2.6 检测结果分析

为了能够直观地看出本文改进算法的性能,从TT100K数据集中选取了3张具有代表性的图片进行了对比测试,对比测试结果如图5 所示。其中,图5(a)~(c)为原YOLOX-S模型的测试结果,图5(d)~(f)为本文改进算法的测试结果。对比图5(a)和图5(d)的结果可以得出,图5(a)漏检了pl60而图5(d)检测出来了,另外pn 和p26 的检测精度均有所提升。对比图5(b)和图5(e),图中需要检测的目标种类多且排列密集,图5(e)相比于图5(b)检测精度更高且检测框更准确。对比图5(c)和图5(f),图中待检测目标受光照和背景影响较大,图5(f)检测精度更高,p10 的精度达到了100%。综上所述,本文改进的算法对交通标志的检测要优于原YOLOX-S。

3 结束语

针对目前交通标志检测中出现的小目标占比较多,受背景干扰影响等情况,本文提出了一种基于YOLOX-S模型改进的算法。改进主要是通过修改YOLOX-S的主干网络、引入增强特征图模块、修改特征金字塔结构和改进损失函数等来提高模型对交通标志中小目标和遮挡目标的检测能力,进而增强模型鲁棒性和检测能力。实验结果表明,本文改进的模型相比于原YOLOX-S 模型,提升了交通标志检测精度,满足在实时交通场景中对交通标志检测的准确性需求。并且该模型具有很好的泛化能力,也可以用于其他类型目标的检测。下一步研究将围绕使模型适应复杂的天气变化,在保证模型检测速度的同时,对模型进行优化提升精度。

猜你喜欢
交通标志主干卷积
基于双向特征融合的交通标志识别
抓主干,简化简单句
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
左主干闭塞的心电图表现
交通标志小课堂
整合内容 构建高效课堂——开展非线性主干循环活动型单元教学模式
全国主干公路网交通安全监控信息共享平台构建研究
我们欢迎你!