Improving Yolov8 for Traffic Sign Detection Algorithm
A traffic sign recognition algorithm based on Yolov8 improvement is designed to address issues such as complex backgrounds of traffic signs and small target detection in autonomous driving. Firstly, dynamic snake convolution is introduced into DarkNet53 of Yolov8. By dynamically adjusting the shape and size of convolution kernels, adaptive adjustments are made to better accommodate small target sizes, thereby improving accuracy. Moreover, by adjusting convolution kernels locally based on target shapes and contours, attention to target features during the convolution process is enhanced, reducing computational complexity and improving detection accuracy. Secondly, Local Sensitivity Kernel Aggregation (LSKA) is introduced to improve the Spatial Pyramid Pooling Fusion (SPPF). By utilizing pyramid pooling and frequency pyramids to obtain multi-scale and multi-frequency feature representations, and then using LSKA to extract local position invariance, the algorithm exhibits better robustness and accuracy, enhancing the network’s accuracy in traffic sign recognition. Experimental results show that the improved algorithm achieves a 2.8% increase in precision, a 2.7% increase in recall, and a 3.3% increase in average precision compared to the original algorithm, while meeting the requirements for practical detection speed.
Yolov8 Algorithm
道路交通标志识别
目前为止,关于道路检测方法有基于Faster R-CNN
对于深度学习的道路交通标志检测算法,Li等提出了一种改进的Faster R-CNN
对此本文提出了基于yolov8改进算法对道路交通标志检测算法,通过在Darknet53中使用动态蛇形卷积,使其自适应调整卷积核形状和大小,可以更好地适应小目标尺寸,从而提高准确性,然后再引入LSKA通过利用大且可分离的卷积核以及空间扩张卷积来捕捉图像的广泛上下层信息,同时LSKA无需额外的块,使其降低了计算复杂性,而且内存使用更低。
Yolov8是目标检测领域的算法,Yolov8的核心思想是将目标检测任务转化为单一的神经网络执行,实现了端到端的训练和目标检测,并且使用了更强大的Backbone网络,采用更高分辨率输入图像以提高检测速度,以及引入一些优化策略来提高推理速度
Yolov8算法是由Ultralytics LCC公司在Yolov5模型上改进的单阶段检测模型
在yolov8的CSPDarknet53中使用动态蛇形卷积,通过引入动态蛇形卷积自适应调整卷积核形状和大小,可以更好地适应小目标尺寸,从而提高准确性,而且可通过目标形状的和轮廓,局部调整卷积核,使在卷积过程中更加关注目标特征,提高检测精度;同时其次引入局部敏感卷积(LSKA)对SPPF进行改进,通过金字塔池化和频率金字塔来获得多尺度和多评率的特征表示,再利用LSKA来提取局部位置不变性,让其具有更好的鲁棒性和精度。
在道路交通标志识别中小目标图像识别是一大难点,原因在于小目标较小,往往在特征图就丢失了细微特征。因此,在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相比增加了一个偏移量
。因此,偏移量需要求和,从而确保卷积核符合线性形态结构
在x轴方向上为:
(2)
在y轴方向上为:
(3)
由于偏移量∆通常为分数,双线性插值实现如下:
(4)
由以上公式可得得到一个原理图如
采用以上方法可以在交通标志图像别中,动态蛇形卷积可以根据目标的尺寸和形状动态的调整卷积核大小。
由于交通标志目标检测背景复杂,为了应对模型在复杂多变的环境的影响,在Yolov8骨干网络中引入了LSKA (Large Separable Kernel Attention)注意力机制,使改模型忽略无关背景信息干扰,注意到有效的标志特征信息。以往注意力机制存在许多不足,例如self-attention注意力机制具有较强的长期依赖性和适应性,但忽略了图片的二次结构。LSA注意机制避免了self-attention注意力机制存在的忽略图片二维结构问题,但其处理大尺寸卷积核时计算量过大的问题
LSKA是一种大可分离核注意力模块,它通过大核卷积操作进行分解来获取长期适应性和依赖性,同时又将分解得到的2D卷积核再次分解为串联的1D核,降低了计算的复杂程度和内存占用需求。首先将K*K的卷积分解为(2d − 1) × (2d − 1)深度卷积、K/d*K/d深度扩张卷积和1 × 1卷积,其次将2D的深度卷积与深度扩张卷积继续分解为1D的横向卷积核与垂直卷积核,最后将分解后的卷积核按照顺序串联,其分解结构图如
改进后的LSKA结构如
采用以上方法可以让模型在检测过程中忽略无关背景的信息干扰,提高检测精度,并提高鲁棒性。
本文使用的数据集为中国交通标志检测数据集2021 (Chinese Traffic Sign Detection Benchmark, CCTSDB)
本文实验环境系统为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次左右时,改进前后的模型逐渐收敛,并且从运行结果看出,改进后的模型比原模型收敛更快和损失更低,运行结果如
模型通过训练和验证可通过精确率AP、召回率AR和平均精确率RmAP作为评价指标,其公式如(5)~(8)。这些指标常用目标检测领域,也是YOLO算法结果评价的指标。这些指标可作为联合评价,对YOLO模型在交通标识检测中表现进行评估。
(5)
(6)
(7)
(8)
式中NTP为真阳性,意为检测到正样本的物体;NFP为假阳性,意为将负样本检测为正样本的物体;NFN为假阴性,意为将正样本检测为负样本。P(r)为精确率和召回率平滑曲线;Pi中的i为第i个内别;C为总类别。
算法 |
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 |
验证本文提出的改进方法对交通标志的检测的性能进行评测,采用单个改进的消融实验如
从
原Yolov8算法在面对不同尺寸、小目标和复杂背景的情况下检测精度和效果有待提升,本文挑选了部分复杂场景进行原算法与改进Yolov8算法测试效果如下
图8. 场景二
经过以上对比可知,改进后的算法检测到了更多的交通标识,并且置信度也高于原算法,验证了本文开始提出改进型意见在准确性上面的提升,以及有效改进了在复杂背景下的识别。
为验证本文改进算法的优越性,将本文算法与目前主流的交通标志检测算法进行对比,选取SSD
算法 |
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 |
本文基于yolov8算法改进了一种交通标志检测算法,目的在于解决当前主流算法在小目标就检测过程的精度低,并且在复杂背景下出现的漏检问题。改进的算法在实验数据集上平均精度达到97.5%,相比原算法提升3.3个百分点,并且在复杂环境下的检测效果也得到了显著性提升,但是改进算法也存在一定的漏检情况。在后面的工作将会对算法进一步优化,提升精确度,并且将会把算法部署到硬件,使其落地,为自动驾驶进行赋能增效。