本发明属于交通目标检测,该算法采用yolov8作为基础模型通过对交通标志的特征进行分析和提取,优化了模型的网络结构和训练策略,提高了交通标志检测的准确率和速度。可应用于无人驾驶、智能交通等领域。
背景技术:
1、近年来,目标检测技术取得了显著进步,特别是在交通标志检测领域。在研究交通标志检测时,可以将其分为传统方法和基于深度学习的方法两大类。传统的目标检测算法通常包括三个阶段:首先生成目标建议框,然后提取每个建议框中的特征,最后基于这些特征进行分类。然而,传统方法存在一些弊端,需要依赖手工设计的特征,这些特征可能难以捕捉到复杂的语境和抽象的特征,目标建议框的生成通常需要使用选择性搜索等方法,这可能在效率和准确性上存在一些问题。例如在处理图像复杂性较高的场景时效果较差,以及过度依赖人工设计特征等问题。
2、为了克服传统方法的局限性,基于深度学习的目标检测方法应运而生。这些方法通常分为一阶段检测(one-stage)和二阶段检测(two-stage)两种类型。一阶段检测方法通常直接预测目标的类别和位置,而二阶段检测方法则先生成候选区域,再对这些区域进行分类和精细化定位。基于深度学习的方法能够更好地处理复杂的场景,并且无需过多依赖手工设计的特征,因此在交通标志检测领域有着广泛的应用前景,对于道路交通的安全和有序运行至关重要。
3、yolo(youonlylookonce)是一种代表性的一阶段检测算法,以其高准确率和低计算复杂度而闻名,因此在目标检测领域得到广泛应用,主要特点包括:(1)实时性:yolo在实时目标检测方面表现优越,适用于需要快速响应的应用场景,如自动驾驶、视频监控等。(2)全图检测:yolo一次性对整个图像进行处理,而不是通过滑动窗口或区域提议进行目标检测。这使得它对于小目标和密集目标的检测相对更为准确。(3)端到端训练:yolo使用端到端的训练方法,直接从原始图像到目标检测结果。这简化了训练流程,提高了模型的泛化能力。(4)边框回归:yolo不仅预测目标的类别,还通过回归直接提供目标的边界框坐标,简化了检测任务。
技术实现思路
1、在2015年发布的yolov1是第一个采用一阶段检测方法的目标检测算法,此前的目标检测方法通常采用两阶段的方式。尽管两阶段方法具有较高的准确率,但运行速度较慢。然而,yolov1的出现改变了这一格局,以其快速的运行速度和合理的准确率,开创了一阶段检测方法在目标检测领域的先河。
2、于2017年,为了克服yolov1存在的定位不准确和召回率低的问题,作者提出了yolov2算法。在该论文中,作者着重改进了yolov1算法,使其在准确性、速度和目标识别范围上都有显著提升。其中,最引人注目的改进之一是将目标识别扩展到能够检测9000种不同对象,这一改进被称为yolo9000。
3、2018年,yolo的作者提出了yolov3,这是对之前版本的改进。最显著的改进包括引入了残差模型darknet-53,并采用了特征金字塔网络(fpn)架构,以实现多尺度目标检测。
4、yolov4在原有的yolo目标检测框架的基础上,引入了众多优化策略,这些策略在数据处理、主干网络、网络训练、激活函数以及损失函数等方面均实现了不同程度的改进。这些改进和优化策略的引入使得yolov4在目标检测性能上取得了显著的提升,同时保持了yolo系列模型的实时性。它在多个数据集和任务上都表现出色,成为目标检测领域的重要算法之一。
5、yolov5是由ultralytics开发的目标检测算法,是对yolo系列算法的进一步改进。与之前的版本相比,yolov5采用了更轻量级的模型架构,同时在精度和速度方面都有所提升。该算法还引入了一些新的技术,如自动增强、模型集成等,以进一步提高检测性能。
6、yolov8是yolo系列中最新的模型,它基于yolov5设计了新的网络模型架构,并引入了新的结构,以进一步提升性能和扩展性。根据深度和宽度的标准,yolov8可以分为yolov8n、yolov8s、yolov8m、yolov8l和yolov8x这五个网络。
7、backbone和neck部分参考了yolov7 elan设计思想,将yolov5的c3结构换成了梯度流更丰富的c2f结构,并对不同尺度模型调整了不同的通道数。head部分较yolov5而言有两大改进:(1)换成了目前主流的解耦头结构(decoupled-head),将分类和检测头分离(2)同时也从anchor-based换成了anchor-free。对于损失函数的改进:采用vfl loss作为分类损失,同时使用dfl loss和ciou loss作为回归损失。
8、yolov8的backbone部分通过使用c2f模块替换了yolov5中的c3模块,实现了更进一步的轻量化。同时,它还保留了yolov5等架构中使用的sppf(空间金字塔池化)模块。在pan-fpn(路径聚合网络-特征金字塔网络)部分,虽然yolov8仍然采用了pan的思想,但在结构上,它删除了yolov5中pan-fpn上采样阶段中的卷积结构,并将c3模块替换为了c2f模块。换句话说,yolov8通过优化其backbone和pan-fpn部分的结构,进一步提高了网络的轻量化和性能。
9、neck部分在yolov8模型中扮演着重要角色,它负责接收来自backbone的特征,并进行进一步的处理和融合。通过引入不同的结构和技术,neck能够将多尺度的特征图进行有效的融合,从而提升目标检测的准确性和鲁棒性。简单来说,neck部分通过优化特征融合的方式,帮助模型更好地捕捉不同尺度目标的信息,进而提高目标检测的性能。
10、本方案提出一种改进的yolov8算法。通过构建小目标检测层、引入tripletattention注意力机制和可变形卷积与wiou_v3损失函数,使算法能够融合更深层特征,具有更大的感受野,并且降低了训练样本标注质量不均衡的影响,提高了预测框的位置精度,增强了对小目标的检测能力。
11、提出增加小目标检测层,以便对较浅特征图与深特征图进行拼接后进行检测,从而充分利用全局上下文信息。同时,我们还增加了用于微小物体检测的预测头,该预测头由更浅层、更高分辨率的特征图构成。这样的改进使得我们的模型拥有了四个预测头结构,虽然增加了计算与存储的成本,但对微小物体的检测性能有了较大提升。
12、增加用于微小物体检测的检测层,可以更精准地识别和定位微小物体,从而提升检测性能。
13、传统卷积在处理不同大小和形状的目标物体时,需要使用不同大小的卷积核。这增加了模型设计的复杂性,同时也限制了模型的泛化能力,所以我们引入可变形卷积来代替backbone部分的最后一个conv模块。
14、可变形卷积(adaptive convolution)是一种卷积神经网络(cnn)中的一种特殊类型的卷积操作。与传统的固定卷积核不同,可变形卷积允许网络根据输入数据的特征动态调整卷积核的大小和形状。可变形卷积的核心思想是根据输入数据的特征来动态地生成卷积核。这种方法可以使网络更加灵活地适应不同类型和尺寸的输入数据,从而提高了网络的泛化能力和性能。通常是通过引入额外的网络层来实现的,这些层可以学习生成卷积核的参数。这些参数可以根据输入数据的特征来动态地调整卷积核的大小和形状,以适应不同的输入数据。
15、传统的卷积结构可以定义为如下公式,其中是输出特征图的每个点,与卷积核中心点对应,pn是p0在卷积核范围内的每个偏移量。
16、
17、而可变形卷积则在上述公式的基础上为每个点引入了一个偏移量,偏移量是由输入特征图与另一个卷积生成的,通常是小数。
18、
19、由于加入偏移量后的位置非整数,并不对应feature map上实际存在的像素点,因此需要使用插值来得到偏移后的像素值,通常可采用双线性插值,用公式表示如下:
20、
21、上述公式的意义就是说将插值点位置的像素值设为其4领域像素点的加权和,领域4个点是离其最近的在特征图上实际存在的像素点,每个点的权重则根据它与插值点横、纵坐标的距离来设置,公式最后一行就是限制了插值点与领域点不会超过1个像素的距离。
22、注意力机制是一种使网络能够专注于处理与目标相关的特征的技术。在图像处理中,由于背景信息常常与目标混淆,这可能导致目标检测的准确性下降。注意力机制能够使网络更加关注目标区域,忽略或减少背景信息的干扰,从而提高目标检测的精度。因此,注意力机制在目标检测任务中起着至关重要的作用,能够使网络更加专注于目标,提高检测的准确性。
23、本方法提出轻量但有效的注意力机制triplet attention,这是一种通过使用三分支结构捕捉交叉维度交互来计算注意权重的新方法。传统的计算通道注意力的方法涉及计算一个权值,然后使用权值统一缩放这些特征图。但是在考虑这种方法时,有一个重要的缺失。通常,为了计算这些通道的权值,输入张量在空间上通过全局平均池化分解为一个像素。这导致了空间信息的大量丢失,因此在单像素通道上计算注意力时,通道维数和空间维数之间的相互依赖性也不存在。
24、triplet attention不像cbam和senet需要一定数量的可学习参数来建立通道间的依赖关系,是一个几乎无参数的注意机制来建模通道注意和空间注意。tripletattention能够捕捉到图像中不同位置和不同层次的特征信息,从而提高了模型对图片的理解能力。能够同时关注图片中的不同部分,从而更好地理解图片的上下文信息,提高了模型对图片的全局理解能力。有助于改善模型对输入特征的学习。通过将注意力集中在输入的特定部分,模型能够更准确地捕捉与任务相关的特征,从而提高特征表示的质量。有助于改善模型对输入特征的学习。通过将注意力集中在输入的特定部分,模型能够更准确地捕捉与任务相关的特征,从而提高特征表示的质量。
25、本方法将triplet attention注意力用在backbone第十层,主要是因为前方模块通常会负责提取较低级别的特征,比如边缘和角点等,这些特征对于检测小目标来说并不是最关键的,因此在前方模块中引入triplet attention模块可能不会带来较大的性能提升,其网络结构图如图1所示。
26、原yolov8n使用的分类损失函数是bce(二元交叉熵),而回归损失函数是ciouloss(complete intersection over union loss)与dfl(dynamic focal loss)的结合。其中ciou的公式如下所示:
27、
28、其中b、bgt分别代表预测框和真实框的中心点。ρ代表计算两点间的欧氏距离;c代表的是能够同时包含预测框与真实框的最包围框对角线距离;是权重系数。
29、
30、
31、完整的ciou的定义为:
32、
33、ciou存在一些缺陷,其中v(iou的修正项)中的长宽比描述的是相对值,导致其存在一定的模糊性。这可能使得模型在处理不同比例的目标时难以精确地调整边界框。此外,ciou损失没有考虑目标检测中常见的难易样本平衡问题。本方法使用wiou_v3利用动态非单调fm的梯度增益分配策略,可以在训练的不同阶段,做出最符合当前情况的梯度增益分配策略。在训练早期保存高质量锚框,削弱几何因素的惩罚,使模型获得更好的泛化能力,并在训练中后期,wiou_v3将较小的梯度增益分配给低质量锚框,以减少有害梯度,提高模型的定位性能。其公式如下:
34、lwiou_v3=λ·rwiou·liou
35、
36、
37、其中wg、hg为最小包围框的宽高,是常数,δ是离群度。