1. 引言
道路交通标志识别[1]是自动驾驶系统中比较重要的环节,即影响着自动驾驶的安全性和智能性等,所以实现对交通标志信号检测的准确性和快速性对自动驾驶尤其重要。为此对交通标志识别的精确度和速度都提出了更高的要求[2]。在实际道路行驶时,交通标志检测受天气、行驶速度、标志背景、视角变化的影响,使交通标志出现检测精度和速度的差异,甚至出现漏检的情况。所以设计一个高速度和准率的检测方法显得尤为重要[3]。
目前为止,关于道路检测方法有基于Faster R-CNN [4]的交通标识检测、基于SSD的交通标识识别、基于SVM和HOG特征的交通标识识别和基于深度学习[5]的交通目标检测。深度学习是现在比较主要的目标检测算法,与其它检测算法相比,其具有高准确性、灵活性、处理复杂场景的能力。
对于深度学习的道路交通标志检测算法,Li等提出了一种改进的Faster R-CNN [6]复杂环境交通检测方法,针对复杂环境和小目标遮挡等问题,通过VGG16和多尺度融合获取更多的特征信息;顾峰等[7]提出了设计亮度与对比度增强模块以凸显低照度图像特征信息,然后结合空间转换单元构建轻量化网络,通过弱化图像携带的无关信息聚焦数据中感兴趣区域,有效分离了背景噪声,改善了空间不变形;Chu等人[8]进Yolov5的TRD-YOLO网络,在主干中加入了Transformer机制,同时加入了轻量级解耦头,在面对复杂环境中的小型交通标识时,它具有更好的检测性能和更强的鲁棒性,但在特殊天气下检测交通标识时,准确性和精度还有待提高。石镇岳等人[9]提出了基于注意力基础的交通标志检测模型识别,通过K-means++聚类算法对数据集进行聚类,其次在主干特征网络中引入坐标注意力机制,最后引入空洞空间金字塔池化,捕获上下文信息,使其增强了小目标识别能力,但由于行车环境复杂,准确度容易受到天气、光照以及其它不利因素影响;Gao等人[10]提出了一种改进Faster-R-CNN交通标识检测算法,将特征金字塔融入到算法中,可以精确地提取交通标识,其次在骨干加入了可变性卷积(DCN),使相似的标识更容易被区分,最后采用ROI对齐取代ROI池化,避免池化导致交通标识的特征细节丢失,该算法有助于提高极端环境下的交通标识检测性能,但检测效率过小,不能满足实时检测的要求。
对此本文提出了基于yolov8改进算法对道路交通标志检测算法,通过在Darknet53中使用动态蛇形卷积,使其自适应调整卷积核形状和大小,可以更好地适应小目标尺寸,从而提高准确性,然后再引入LSKA通过利用大且可分离的卷积核以及空间扩张卷积来捕捉图像的广泛上下层信息,同时LSKA无需额外的块,使其降低了计算复杂性,而且内存使用更低。
2. Yolov8模型
Yolov8算法简介
Yolov8是目标检测领域的算法,Yolov8的核心思想是将目标检测任务转化为单一的神经网络执行,实现了端到端的训练和目标检测,并且使用了更强大的Backbone网络,采用更高分辨率输入图像以提高检测速度,以及引入一些优化策略来提高推理速度[11]。
Yolov8算法是由Ultralytics LCC公司在Yolov5模型上改进的单阶段检测模型[11],其结构模型如图1所示,Yolov8网络由主干网络(backbone)、颈部网络(neck)和头部网络(head)组成,主干网络负责特征提取,颈部主要对特征图进行融合,头部进行预测。
Figure 1. Yolov8 model
图1. Yolov8模型
3. Yolov8算法改进
在yolov8的CSPDarknet53中使用动态蛇形卷积,通过引入动态蛇形卷积自适应调整卷积核形状和大小,可以更好地适应小目标尺寸,从而提高准确性,而且可通过目标形状的和轮廓,局部调整卷积核,使在卷积过程中更加关注目标特征,提高检测精度;同时其次引入局部敏感卷积(LSKA)对SPPF进行改进,通过金字塔池化和频率金字塔来获得多尺度和多评率的特征表示,再利用LSKA来提取局部位置不变性,让其具有更好的鲁棒性和精度。
3.1. 动态蛇形卷积(Dynamic Spatial Pyramid Convolution)
在道路交通标志识别中小目标图像识别是一大难点,原因在于小目标较小,往往在特征图就丢失了细微特征。因此,在yolov8中加入DSPC算法。
DSPC主要原理是:首先,DSPC通过学习或设计生成一个初始的卷积核,然后对输入特征图动态的调整卷积核形状,使之更适应当前目标的尺度和形状,调整后的卷积核再次对输入特征进行卷积操作,以及提取更准确的目标特征,最后,将经过动态蛇形卷积操作得到的特征与其它层的特征进行融合,以获取更全面的和准确的特征表示。
以标准2D卷积3*3卷积核K为例,其公示如下:
(1)
式中:(x, y)为卷积核的中心坐标,(x + m, y + n)为初始坐标(x, y)的偏移量,其中m和n为水平和垂直方向上的移动量。
为了使卷积核更加灵活的关注目标图像的几何特征,引入了偏移量∆,但是让模型自由学习变形偏移量,则感知范围容易偏移目标,所以本文采用迭代策略,对每个待处理的目标依次选择观察位置,这样既保证了注意力的连续性,又不会因为变形量偏大使感知范围过于分散。
在DSConv中,在X轴和Y轴上拉直卷积核。以大小为9的卷积核为示范,并且以坐标轴为例,K中每一个网格具体位置表示为:Ki±c=(xi ± c, yi ± c),其中c = {0,1,2,3,4}表示与中心网格的水平距离。卷积核K中每个网格位置Ki±c的选择是一个累积过程。从中心位置Ki开始,距离中心网格的位置取决于前一个网格的位置:Ki+1与Ki相比增加了一个偏移量
。因此,偏移量需要求和,从而确保卷积核符合线性形态结构[12]。
Figure 2. Left: Schematic diagram of coordinates; Right: Change in receptive field
图2. 图左为坐标示意图、图右为感受野变化图
在x轴方向上为:
(2)
在y轴方向上为:
(3)
由于偏移量∆通常为分数,双线性插值实现如下:
(4)
由以上公式可得得到一个原理图如图2所示(此图是以3*3卷积核为例)。
采用以上方法可以在交通标志图像别中,动态蛇形卷积可以根据目标的尺寸和形状动态的调整卷积核大小。
3.2. 改进SPPF-LSKA模块
Figure 3. LSKA decomposition structure diagram
图3. LSKA分解结构图
Figure 4. LSKA series decomposition diagram
图4. LSKA串联分解示意图
由于交通标志目标检测背景复杂,为了应对模型在复杂多变的环境的影响,在Yolov8骨干网络中引入了LSKA (Large Separable Kernel Attention)注意力机制,使改模型忽略无关背景信息干扰,注意到有效的标志特征信息。以往注意力机制存在许多不足,例如self-attention注意力机制具有较强的长期依赖性和适应性,但忽略了图片的二次结构。LSA注意机制避免了self-attention注意力机制存在的忽略图片二维结构问题,但其处理大尺寸卷积核时计算量过大的问题[13]。
LSKA是一种大可分离核注意力模块,它通过大核卷积操作进行分解来获取长期适应性和依赖性,同时又将分解得到的2D卷积核再次分解为串联的1D核,降低了计算的复杂程度和内存占用需求。首先将K*K的卷积分解为(2d − 1) × (2d − 1)深度卷积、K/d*K/d深度扩张卷积和1 × 1卷积,其次将2D的深度卷积与深度扩张卷积继续分解为1D的横向卷积核与垂直卷积核,最后将分解后的卷积核按照顺序串联,其分解结构图如图3和图4所示[13]。
改进后的LSKA结构如图5所示。
Figure 5. Improved LSKA structure diagram
图5. 改进LSKA结构图
采用以上方法可以让模型在检测过程中忽略无关背景的信息干扰,提高检测精度,并提高鲁棒性。
4. 实验结果及分析
4.1. 数据集
本文使用的数据集为中国交通标志检测数据集2021 (Chinese Traffic Sign Detection Benchmark, CCTSDB) [14]。数据集共有17,856张图片,其类别为指示、禁令及警告标识三类。
4.2. 实验环境
Figure 6. Training loss function curve
图6. 训练损失函数曲线
本文实验环境系统为Windows10操作系统,电脑显卡配置为NVIDA GeForece RTX4060显卡,显存为8 GB,CPU为Intel Core i5-12400,使用Pytorch (环境为Python-3.8.19 torch-2.1.0 + cu121)框架进行部署。参数如下:输入图片大小640 × 640,批次量大小为16,数据器加载数量为16,初始学习率0.01,训练批次为250次,优化器为SGD。如图所示,当训练次数达到200次左右时,改进前后的模型逐渐收敛,并且从运行结果看出,改进后的模型比原模型收敛更快和损失更低,运行结果如图6所示。
4.3. 模型评价指标
模型通过训练和验证可通过精确率AP、召回率AR和平均精确率RmAP作为评价指标,其公式如(5)~(8)。这些指标常用目标检测领域,也是YOLO算法结果评价的指标。这些指标可作为联合评价,对YOLO模型在交通标识检测中表现进行评估。
(5)
(6)
(7)
(8)
式中NTP为真阳性,意为检测到正样本的物体;NFP为假阳性,意为将负样本检测为正样本的物体;NFN为假阴性,意为将正样本检测为负样本。P(r)为精确率和召回率平滑曲线;Pi中的i为第i个内别;C为总类别。
Table 1. Comparison table of ablation experiment data
表1. 消融实验数据对照表
算法 |
P/% |
R/% |
RmAP/% |
GFLOPs(G) |
参数量(M) |
Yolov8n |
93.3 |
89.7 |
94.2 |
8.2 |
3.2 |
DynamicConv |
94.6 |
91.2 |
95.1 |
7.7 |
4.3 |
SPPF-LSKA |
95.3 |
90.8 |
94.6 |
8.5 |
3.3 |
整合改进 |
96.1 |
92.4 |
97.5 |
8.4 |
3.5 |
验证本文提出的改进方法对交通标志的检测的性能进行评测,采用单个改进的消融实验如表1所示。
从表1中可以得到,添加DynamicConv时,虽然模型的参数量大幅度增加,但精确率和平均准确率有所上升,并且计算复杂度下降0.5 GFLOPs;添加SPPF-LSKA模块时,虽然模型复杂度增加,但是模型的精确率、平均准确率上升。整合修改后,改进的模型进增加小部分的参数量和计算复杂度增加0.2 GFLOPs,但是在精确率、召回率和平均精确率上提升效果显著,分别提升2.8%、2.7%、3.3%。
4.4. 实际效果验证
原Yolov8算法在面对不同尺寸、小目标和复杂背景的情况下检测精度和效果有待提升,本文挑选了部分复杂场景进行原算法与改进Yolov8算法测试效果如下图7~9 (左图为改进的,右图为原算法)所示。
Figure 7. Scene one
图7. 场景一
Figure 8. Scene two
图8. 场景二
Figure 9. Scene three
图9. 场景三
经过以上对比可知,改进后的算法检测到了更多的交通标识,并且置信度也高于原算法,验证了本文开始提出改进型意见在准确性上面的提升,以及有效改进了在复杂背景下的识别。
4.5. 目标检测算法对比
为验证本文改进算法的优越性,将本文算法与目前主流的交通标志检测算法进行对比,选取SSD [15]、Faster R-CNN、yolov5s、yolov8n与本文改进算法进行对比实验,实验结果如表2。
Table 2. Algorithm comparison
表2. 算法对比
算法 |
P/% |
R/% |
RmAP/% |
FLOPS(G) |
FPS |
SSD |
23.5 |
33.4 |
39.8 |
15.4 |
81 |
Faster R-CNN |
55.6 |
76.6 |
77.6 |
92.4 |
26 |
Yolov5s |
94.2 |
87.3 |
93.6 |
24 |
111 |
Yolov8n |
93.3 |
89.7 |
94.2 |
8.2 |
86 |
改进算法 |
96.1 |
92.4 |
97.5 |
8.5 |
103 |
5. 结束语
本文基于yolov8算法改进了一种交通标志检测算法,目的在于解决当前主流算法在小目标就检测过程的精度低,并且在复杂背景下出现的漏检问题。改进的算法在实验数据集上平均精度达到97.5%,相比原算法提升3.3个百分点,并且在复杂环境下的检测效果也得到了显著性提升,但是改进算法也存在一定的漏检情况。在后面的工作将会对算法进一步优化,提升精确度,并且将会把算法部署到硬件,使其落地,为自动驾驶进行赋能增效。