16

爱笑的小姐姐 · 2023年09月21日

中山大学提出MFL-YOLO | 多特征交互损失让YOLOv5再次焕发性能SOTA的光彩!

image.png

交通标志是确保交通安全和顺畅通行的重要设施,但由于许多原因可能会受到损坏,这会带来很大的安全隐患。因此,研究一种检测损坏交通标志的方法非常重要。目前针对损坏交通标志的目标检测技术尚不存在。由于损坏交通标志在外观上与正常标志更接近,因此使用传统的目标检测方法很难捕获损坏交通标志的详细局部损伤特征。
在本文中,作者提出了一种基于YOLOv5s的改进目标检测方法,即MFL-YOLO(Mutual Feature Levels Loss增强YOLO)。作者设计了一个简单的Cross-Level损失函数,以便模型的每个Level都有其自己的作用,这有利于模型能够学习更多多样化的特征并提高细粒度。该方法可以作为即插即用的模块应用,不会增加结构复杂性或计算复杂性,同时提高了准确性。作者还在YOLOv5s的"neck"部分将传统的卷积和CSP替换为GSConv和VoVGSCSP,以减小尺度和计算复杂性。
与YOLOv5s相比,作者的MFL-YOLO在F1分数和mAP方面分别提高了4.3和5.1,同时减少了8.9%的FLOPs。Grad-CAM Heatmap 可视化显示,作者的模型能够更好地关注损坏交通标志的局部细节。此外,作者还在CCTSDB2021和TT100K上进行了实验,以进一步验证作者模型的泛化性能。

1、简介

随着自动驾驶技术的发展,交通标志的目标检测已经成为自动驾驶领域的一个不可或缺的部分。在自动驾驶车辆的行驶过程中,准确的交通标志检测和识别对于车辆的安全驾驶至关重要。因此,将交通标志的目标检测技术应用于自动驾驶车辆中也变得日益重要。在这个领域已经有许多成熟的算法,它们可以分为两大类:传统方法和基于卷积神经网络的深度学习方法。

传统方法可以分为基于颜色、基于形状和多特征融合三种类型,其中,从候选区域提取的手工设计特征被馈送到分类器中,以获取检测结果。使用传统方法需要投入大量的人力成本,而且手工设计的方法并不总能很好地表征所有特征,而且在复杂场景中的泛化能力较差。

相反,深度学习方法直接从大量的训练数据中学习特征,利用丰富的卷积层次结构可以表示复杂的目标特征。这些方法在交通标志检测方面取得了显著的进展,例如改善小目标检测性、在复杂天气情况下提高模型的稳健性,以及通过轻量化改进实现速度和准确性的权衡等。

image.png

交通标志是确保交通安全和流畅的重要设施,但由于自然因素、人为因素和管理因素等多种原因,交通标志可能会受损,如图1所示。这不仅会降低道路管理的声誉,还会给驾驶员和行人带来巨大的安全隐患,因此,检测受损交通标志已成为备受关注的问题。

然而,对于检测受损交通标志的研究还比较缺乏。针对检测受损交通标志的问题,作者尝试了两种任务范式:一种是仅使用受损交通标志作为训练样本,构建一个单一的分类目标检测任务;另一种是将受损交通标志作为一类,将正常交通标志作为另一类,构建一个二分类目标检测任务。

第一种任务范式只学习交通标志的特征,由于缺乏与正常标志的对比,导致模型在实际检测过程中容易误检测正常交通标志。第二种任务范式可以同时学习交通标志和受损特征的特征,因此可以更好地区分受损交通标志和正常交通标志,大大减少了误检测的情况。因此,作者采用了第二种任务范式。

对于损坏的交通标志的数据收集面临着各种各样的交通标志、不同损坏状态之间的巨大差异以及困难的数据获取问题。如果数据的覆盖范围和数量不足,可能会导致实际检测过程中的信息泄漏问题,因此这是数据收集和预处理的一个重大挑战。

同时,由于受损交通标志在外观上更接近于正常完好的交通标志,而且损坏状态复杂多样,使用当前的交通标志检测方法来捕捉受损交通标志中的详细局部损坏特征以区分它们与正常标志可能会很困难,从而导致较低的准确率。大多数现有的目标检测模型都采用多级检测头设计,以捕获目标的不同尺度的信息,并通过FPN(特征金字塔网络)在不同Level融合特征,使模型能够更好地学习不同尺度的特征。

image.png

然而,现有的改进特征FPN主要考虑了如何融合不同Level的特征以增强每个Level的特征相关性,但这可能会使不同检测头学习到的特征更加接近,这不利于学习不同Level丰富的特征。通过可视化Baseline模型中不同检测头的特征图 Heatmap ,如图2所示,作者发现Baseline模型的低、中和高Level的焦点都相对接近,集中在目标的中心区域,只在范围大小上有所不同,但一些交通标志的受损区域主要分布在它们的边缘,这显然不利于受损交通标志的检测。同时,检测受损交通标志的任务通常由计算能力和存储空间有限的移动设备来执行,因此如何在保持准确性的同时精简模型大小并减轻计算压力也是需要考虑的问题之一。

为了解决上述问题,作者首先构建了一个由广东理拓科投资公司收集的受损交通标志数据集,其中包含来自城市道路的503个受损交通标志,包括35种交通标志类型和各种不同的损坏类型,如磨损、裂纹和倾斜,并通过翻转、裁剪、明暗度、对比度调整以及压缩和畸变等数据增强方法,将受损交通标志数据扩充到2165份。对于正常交通标志数据的构建,作者引入了来自TT100K数据集和CCTSDB2021数据集的一些数据,并手动筛选出2165个作为正常交通标志类别。通过数据增强和手动筛选,作者构建了一个平衡的数据集,避免了真实数据集不平衡的问题。

受到细粒度分类研究的启发,作者提出了基于YOLOv5s的受损交通标志检测算法MFL-YOLO。作者专注于增加高Level和低Level特征图之间的变异性,同时考虑低Level与中Level以及中Level与高Level特征图之间的交互作用。为实现这一目标,作者设计了用于不同Level特征图的损失函数 (Mutual Feature Levels Loss)。该损失函数包括多样性成分和区分性成分:多样性成分首先通过卷积层提取每个Level的特征图,然后通过max-pooling等操作计算每两个特征图之间的相似性。Y

OLOv5s中有3个检测头,意味着有3个不同Level的特征图,因此作者的方法将生成3个相似性。通过控制每个相似性前的系数,从这3个相似性的线性组合中得到的损失函数可以影响这三个Level特征图之间的相关性和差异性。当系数为正时,相应Level的特征图之间的差异增加,当系数为负时,相应Level的特征图之间的相关性增加。

然后,区分性成分从每个检测头中提取每个目标的特征图,将受损交通标志的特征图视为正样本,将正常交通标志的特征图视为负样本,随机选择正负样本对,并在经过跨通道max-pooling、全局平均池化和softmax后,分别对正负样本对进行交叉熵计算,从而使每个Level的特征图尽可能包含更多的区分信息,并增强了受损和正常交通标志之间的区分能力。如图2所示,作者模型中每个Level的特征图更关注交通标志中局部受损区域。

为了更好地嵌入模型到移动设备中,作者还对模型进行了轻量级改进。在YOLOv5s的neck部分,作者使用了GSConv、GSBottleneck和VoVGSCSP模块,而不是标准的卷积和CSP模块,这降低了模型的大小和FLOPs,同时保持了高精度,使模型更加实用。通过在作者构建的数据集上进行实验比较,作者的模型在mAP方面取得了93.3%的成绩,相对于Baseline提高了5.1%,在F1分数方面达到了90.0,相对于Baseline提高了4.3%,同时减少了8.9%的FLOPs。

总结一下,本文的贡献如下:

  1. 基于现有的交通标志检测,提出了一个新颖而有意义的研究问题 - 受损交通标志检测。通过自动识别受损交通标志,可以消除手工检查的过程,节省时间和人力成本。通过及时修复或更换检测到的受损交通标志,可以确保标志的完整性,提高交通的效率和安全性。同时,由于受损标志与传统目标检测模型相似,难以区分受损标志和正常标志,这是与其他常见目标检测任务相比的特殊特点,因此这项研究具有重要的实际意义和应用价值。
  2. 提出的MFL-YOLO通过设计简单的损失函数来控制每个检测头的特征图之间的变异性和交互作用,从而减少了传统特征金字塔中特征融合的信息重叠,使不同Level的特征图能够聚焦于目标的不同区域,并改善多级特征的表达,以实现捕捉微妙的局部受损特征的目标。
  3. 作者轻量级改进了Baseline模型的neck部分,以减小模型的大小和FLOPs,同时保持高精度。在移动设备上减少的资源消耗使移动监测设备能够更好地适应不同的硬件和网络环境,便于模型的部署。
  4. 通过数据增强和手动筛选,在作者的受损交通标志数据集中,作者尽量平衡了正负样本,以达到正负样本数量的均衡。

2、本文方法

image.png

作者的方法是对YOLOv5s的改进,如图3所示。作者在Baseline模型中添加了一个Mutual Feature Levels Loss模块,包含多样性组件和判别性组件。

  • 多样性组件通过控制它们之间的相似性来控制每个Level的变异性和交互强度。作者通过调整相应相似性前面的系数的正负来减少高Level和低Level特征图之间的相似性,增加中高Level、低Level和中Level特征图之间的相似性,以便它们各自在捕捉更丰富和更精细的特征方面发挥自己的作用。
  • 判别性组件构建正负样本对,并利用对比学习使学习到的特征具有判别性。作者通过卷积层提取特征金字塔的每个Level的特征图,并将它们输入模块进行Cross-Level损失的计算。得到的损失将与Baseline中的原始分类损失函数、定位损失函数和置信度损失函数线性组合,以引导模型的迭代优化通过反向传播。

作者还对YOLOv5s的Neck部分进行了轻量级的改进,使用了GSConv。GSConv是一种将稠密卷积与稀疏卷积结合起来的新型卷积操作。在GSConv中,一些卷积核是全连接的,而其他卷积核是稀疏连接的。这种方法减少了模型参数和计算量,同时保留了稠密卷积的特点,增强了模型的表现能力和准确性。作者用GSConv替换了Neck部分中的标准卷积,并在Baseline中的ResUnit和CSP模块中替换了标准卷积,调整了它们的结构。作者将调整后的模块命名为Ghostbottleneck和VoVGSCSP。修改后的模型减少了参数和计算量,同时提高了准确性。它更适合部署在移动检测设备上。

A. YOLOv5

YOLOv5是一种一阶段目标检测模型,在准确性和速度之间取得了良好的平衡,在各种数据集上具有强大的泛化能力。因此,它是最广泛使用的YOLO版本。YOLOv5有4个版本:YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5x。它们共享相同的模块和整体模型结构,但在通道宽度和网络深度上有所不同。其中,YOLOv5s是最小的版本,由于其快速检测速度和小型模型大小,适用于检测受损交通标志的任务,因此被选为基准模型。

image.png

YOLOv5s模型架构分为3个主要部分:Backbone网络、Neck和Head,如图4所示。

  • Backbone网络使用CSPDarknet53作为特征提取网络,它具有较少的参数和计算量,可以提取丰富的特征。
  • 在Neck部分,YOLOv5s使用FPN和PAN结构,其中FPN+PAN与从主网络中提取的不同Level的特征图(通常选择3个Level)Cross-Level交互。FPN是自顶向下的特征金字塔,将高Level的强语义特征传递给低Level。然而,简单的自顶向下FPN结构不足以在Level之间传递定位信息。

    因此,PAN在FPN之上添加了自底向上的金字塔结构,以将低Level的定位信息传递给高Level。FPN+PAN结构实现了跨尺度信息融合,使每个Level的特征图具有强大的语义和定位信息,这是提高网络在多尺度目标检测任务上性能的有效方法。

  • 在Head部分,模型对每个特征图执行卷积操作,以提取不同尺度的目标特征,并预测目标框的位置、大小和分类。

YOLOv5s的损失函数主要包括3个方面的损失:(位置损失)、(置信度损失)和(分类损失)。是交叉熵损失函数,用于计算预测类别与实际类别之间的差异。函数是GIoU损失函数,用于计算预测框与真实框之间的差异;是二元交叉熵损失函数,用于计算预测框包含目标的概率与真实框包含目标的概率之间的差异。

除了上述提到的组件,YOLOv5s还采用了多种技术来进一步提高其性能。

  • 首先,该模型应用了马赛克数据增强,这是一种基于图像拼接的方法。在训练过程中,模型随机选择四幅不同的图像,将它们拼接成一幅大图像,然后应用随机裁剪和缩放操作以获取训练样本。这种数据增强技术可以增加训练数据的多样性,并提高模型的鲁棒性。
  • 其次,模型采用了Focal损失来解决样本不平衡的问题,通过对样本进行加权来调整每个样本的权重。在YOLOv5s中,模型根据目标类别的频率调整每个样本的权重,从而使模型更加关注少数类别的检测性能。
  • 第三,采用了GIoU损失,该损失不仅考虑了目标框与真实框之间的重叠程度,还考虑了它们之间的距离。通过引入GIoU损失函数,YOLOv5s可以更准确地评估目标检测结果的质量。
  • 最后,模型采用了余弦退火学习率调整策略,这是一种解决神经网络训练过程中学习率调整问题的方法。这个策略可以防止学习率在训练过程中过快地下降。

YOLOv5s集成了许多最新技术,是一种高效而强大的目标检测模型。通过实验比较,YOLOv5s在检测受损交通标志方面表现出优越的性能,这是为什么它被选择为作者研究的基准模型的原因。

B. Mutual Feature Level Loss

这部分是作者的主要创新之处。在检测受损交通标志时最大的挑战之一是,受损特征通常是局部和微妙的,通常分布在标志的边缘部分,使Baseline模型很难捕捉到这些特征。原因可能是YOLOv5s的FPN+PAN结构通过上采样、下采样和拼接操作在Level之间进行特征传递和融合,尽管这是简单有效的,但这个过程也往往会导致部分信息的重叠和冗余,从而导致一些详细部分的信息丢失。

每个Level的特征图的 Heatmap 可视化显示,Baseline模型学到的特征主要集中在交通标志的整体轮廓和目标中心(如图1所示),反映出很强的一致性。每个Level的特征图之间的高一致性可能有利于粗粒度的目标检测(具有不同类别目标外观差异很大的检测任务),但对于像受损交通标志这样细粒度的目标检测(不同类别目标外观差异微妙的检测任务)却是有害的。对于粗粒度的目标检测,有时只需目标的一般轮廓和颜色特征就足以区分,而对于细粒度的目标检测,模型需要提取足够丰富和多样的判别特征。

image.png

因此,作者希望每个Level的特征图都学到尽可能多不同的特征,除了具有强烈的语义信息和定位信息外,还要尽可能关注交通标志的受损局部部分,以提高模型定位和区分受损交通标志的能力。与其他研究侧重于通过设计更复杂的网络结构来改善不同Level特征图的互相作用和融合不同,本文没有对原始的FPN和PAN结构进行任何更改,而是通过设计一个简单的(Mutual Feature Levels Loss)来取得更好的结果。该损失函数包括两个主要组成部分:多样性组件和判别性组件,如图5所示。

多样性组件的目的是考虑Level之间的互动,同时拉开Level之间的相似性,以驱使它们学习不同的丰富和多样化的特征。判别性组件是对每个Level的特征图执行目标Level的对比学习,以引导它们学习判别性特征。通过在训练过程中添加额外的损失函数,只会增加一小部分计算量,不会增加推理过程中的计算复杂性,这将导致推理速度的降低。此外,可以作为一个可插拔模块应用于像YOLO这样具有多Level检测头的目标检测模型中。其实现如下:

多样性组件:

YOLOv5s的颈部最终输出三个不同尺度的特征图。为了对齐这三个特征图并保留每个Level特征图的最显著部分,作者首先设计了一个特定的最大池化函数。这个函数不仅允许特征图进行最大池化,还允许作者指定输出的形状。假设原始特征图的宽度和高度分别为𝑤和ℎ。

作者希望其输出的维度为𝑤′和ℎ′。将𝑤/𝑤′和ℎ/ℎ′的最小值作为缩放因子s。然后,通过最近邻线性插值,将原始特征图的宽度和高度维度下采样到(𝑤/𝑠, ℎ/𝑠),最后将下采样的特征图通过最大池化层,核大小设置为(𝑤/𝑠×𝑤, ℎ/𝑠×ℎ),特征图可以同时进行最大池化并输出到指定的大小。最大池化的目的是通过选择最大值来提取每个池化窗口中最显著的特征,同时舍弃其他不太重要的特征。这降低了特征的维度,提高了计算效率,避免了过拟合。

此外,最大池化可以使模型具有一定的平移不变性,因为最显著的特征总是保留,无论目标在特征图上的位置如何,这使模型更加健壮。

接下来,经过最大池化和对齐的特征图在空间维度上被展平,以降低特征图的维度,突出特征的整体和相互作用,并便于下一步的计算。然后,对展平的特征图进行成对的余弦相似度计算。将经过处理的低、中和高级特征图表示为、和,这里计算相似性的方程式如下:

image.png

余弦相似性被用作计算相似程度的方法,通过平移和缩小操作将相似性映射到[0, 1],以避免生成负数并便于计算,较大的值表示较高的相似性。得到的三个值代表了两两特征图之间的相似性,随后作者使用这三个相似性的线性组合作为多样性损失函数,如(2)所示,以控制特征图每个Level之间的可变性和交互强度,其中𝛼、𝛽、𝛾是超参数。

image.png

当系数为正时,相应特征图之间的相似性在迭代过程中减小,它们之间的差异增加,有助于从这两个特征图中提取丰富和多样化的特征。当系数为负时,相应特征图之间的相似性增加,它们之间的差异减小,有助于增强它们之间的信息交互。作者选择通过将的系数设置为正来增加低级和高级特征图之间的差异,同时通过将和的系数设置为负来增加低级和中级,中级和高级特征图之间的相似性。

一般来说,低级特征图主要包含图像的详细信息,如纹理、边缘。中级特征图主要包含一些中等抽象信息,如目标的形状和轮廓。高级特征图主要包含更高级的语义信息,如目标的类别和位置。增加低级和高级特征图之间的差异可以使它们更好地发挥各自的作用,捕捉尽可能丰富和多样化的特征,并减少信息重叠。而中级特征图充当信息传递的桥梁。具体来说,中级特征图可以在低级特征图和高级特征图之间传递和集成信息。

因此,减少低级和中级特征图之间的差异以及中级和高级特征图之间的差异将更有利于信息的交互,使中级特征图更好地发挥桥梁的作用。

判别性组件:

尽管多样性模块可以使每个Level的特征图单独工作并减少学习特征的重复性,但仅仅拉开每个Level特征图之间的差异不能确保这些特征具有判别性,反而可能使模型学习一些不相关的特征并丢失关键信息。因此,需要对差异拉开过程施加正则化约束,以避免模型过拟合,并确保每个Level学习尽可能多的判别性特征。作者设计了一个判别性损失来实现这一点。

首先,对于批处理中的每个目标,从每个检测头中提取目标Level的特征图,并在空间域中展平,以获得、和(、和分别表示低、中和高Level,,其中0表示受损,1表示正常)。令为批处理中受损目标的数量。对于每个受损交通标志(正样本),从每个Level中随机选择一个正常交通标志(负样本),形成正负样本对。

然后,提取的目标Level特征图通过跨通道最大池化操作,将特征图的每个通道内具有最大响应的部分映射到具有减小的通道维度为1的新特征图中。接下来,在空间域中应用全局平均池化。

此时,目标特征图被压缩为标量(3),其中𝑊和𝐻表示特征图的宽度和高度,𝑁表示通道的数量。

image.png

最后,对每个正负样本对应用softmax,并计算与地面实况标签的交叉熵。所有样本对的平均值被视为判别性损失函数(4)。

image.png

判别模块与多样性模块相结合,可以指导模型捕捉多样化的局部判别性区域,最终的 是两者的线性组合,如(5)所示,其中𝜆是超参数。

image.png

将与Baseline中的原始(分类损失)、(定位损失)和(置信度损失)线性组合,通过反向传播来指导模型的迭代优化,如(6)所示。

image.png

C. 轻量化 Neck

为了使模型更适用于移动设备,作者还对模型进行了轻量级修改。作者使用了GSConv来轻量化YOLOv5s的neck部分,作者称之为Slim-Neck。

为了在模型推断期间加速计算,图像经历了类似的转换过程:空间信息逐渐传递到通道,这可能导致某些语义信息的丢失。密集卷积计算可以最大程度地保留每个通道之间的隐藏连接,减少语义信息的丢失。另一方面,虽然稀疏卷积可以加速数据传输,但它也可能切断这些连接。

image.png

GSConv是一种新颖的卷积操作,结合了密集和稀疏卷积。其具体结构如图6所示。除了使用L1正则化来稀疏卷积核外,GSConv还利用了两种技术,即动态感受野(DRF)和半密集连接(HDC),以保留某些密集卷积特性。DRF技术可以在卷积过程中自适应地调整卷积核的感受野大小,以适应不同的图像特征。

在GSConv中,每个卷积核具有不同的感受野大小,这可以提高模型的表达能力和准确性。HDC技术在每组卷积操作中引入了一定比例的全连接操作,以保留一些密集连接特性。

具体来说,在每组卷积核中,一些卷积核是全连接的,而另一些是稀疏连接的。这可以减少模型的参数和计算复杂性,同时保留一定的密集卷积特性,从而提高模型的表达能力和准确性。

image.png

为了在速度和准确性之间取得平衡,作者在Neck部分使用了GSConv,并用GSbottleneck替换了YOLOv5s的CSP模块中的原始残差网络结构。GSbottleneck由两个GSConv层和一个标准卷积层组成,在每个GSConv之后添加了BN层和ReLU激活函数。替换的CSP模块被称为VoVGSCSP。具体结构如图7所示。

3、实验

3.1、SOTA对比

损坏的交通标志数据集

image.png

CCTSDB2021数据集

image.png

TT100K数据集

image.png

3.2、消融实验

为了进一步分析作者提出的各个模块的有效性,作者在Dataset1上进行了消融实验。由于YOLOv5s具有最佳的综合性能,作者将其用作Baseline模型。"SNC"代表Slim Neck,"Div"代表中的多样性组件,"Dis"代表中的区分性组件。

实验A代表Baseline的训练结果,实验C代表使用Slim Neck和多样性组件的训练结果,实验D代表同时使用Slim Neck、多样性组件和区分性组件(即完整的)的训练结果。

image.png

如表IV所示,作者提出的每个模块都在模型性能中发挥了作用。其中,SNC模块使FLOPs比Baseline减少了1.4,参数数量减少了0.1M,同时F1分数提高了0.3,mAP提高了0.3。多样性组件进一步提高了F1分数和mAP分数,分别提高了4.0和4.3,最后添加区分性组件使mAP分数提高了0.5,证明了每个模块的有效性。

其中,由于在训练过程中需要额外的卷积层来提取每个Level的特征图,它增加了模型的参数数量,但实际上这些卷积层在推断过程中不参与计算,不会增加模型在推断过程中的计算负担。

4、参考

[1]. MFL-YOLO: An Object Detection Model for  Damaged Traffic Signs.

作者:AI视界引擎
文章来源:AI视界引擎

推荐阅读

更多嵌入式AI干货请关注嵌入式AI专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
18808
内容数
1351
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息