YOLO-Z | 记录修改YOLOv5以适应小目标检测的实验过程

简介: YOLO-Z | 记录修改YOLOv5以适应小目标检测的实验过程

1YOLO-Z


YOLOv5提供了4种不同的尺度:S、M、L和X。每种比例都对模型的深度和宽度应用不同的乘数,这意味着模型的整体结构保持不变,但每个模型的大小和复杂性是按比例缩放的。在实验中,在所有的尺度上分别对模型的结构进行修改,并将每个模型作为不同的模型来评估其效果。

为了设定Baseline,对YOLOv5的4个量表的未修改版本进行了训练和测试。然后分别测试这些网络的变化,以便观察它们对Baseline结果的影响。在进入下一阶段时,似乎对提高准确性或推理时间没有贡献的技术和结构被过滤掉。然后,尝试将选定的技术组合起来。重复这个过程,观察某些技术是否相互补充或减少,并逐渐增加更复杂的组合。

1、Evaluation metric

YOLOv5的原始实现提供了与COCO兼容性API的度量,这对于本研究的目的证明是有用的。计算特定尺度值的方式可以很好地指示模型的性能,但在极端情况下可能会稍微不准确。

由于这些度量在默认情况下只与COCO数据集兼容,在测试代码中重新实现了这个方法,以便在使用任何数据集时获得更有价值的数据。度量模块将计算大、中、小目标的值,以及整体性能。将目标划分为这三种类别取决于以下阈值:小(如果对象的面积小于32平方像素),大(如果该区域大于96平方像素),中等(如果该区域大于两个阈值)。换句话说,small<32x32<medium<96x96<large。

2、Dataset and Experimental setup

为了训练模型并为实验提供信息,从自动驾驶赛车的角度采用了一个带注释的圆锥数据集。它最初的目的是根据圆锥体的颜色帮助自动赛车规划路径,因为知道总共有4类圆锥体(黄色、蓝色、橙色和大橙色),接近4000张图像(见图1,2)。

该数据集包括数字增强图像和具有挑战性天气条件的情况。像这样的数据集可以模拟自动驾驶汽车中更复杂的任务。锥体本身就是可以在路上找到的物体,在大小和位置上与其他物体有很多相似之处,比如交通标志。

尽管数据集将受益于更大的大小,但它的特点是目标密度非常高,有超过30000个标记目标。此外,在图1可以观察到蓝色和黄色类的很大偏差。这是有道理的,因为他们有助于双方的赛车,但它确实是一个不平衡影响整体结果。这些类上的性能将会考虑当评估模型,即通过平均分数显著的类别。

与自动驾驶场景中常见的其他物体(如其他车辆或行人)相比,圆锥体本来就很小。图3中的相关图(相关统计数据的图表)显示了数据集中目标(锥)的边界框的位置、宽度和高度。数据集具有高度集中的较小的目标框,由于透视投影而略微拉长。这种高比例的小目标使它有利于这类研究,因为它在很大程度上克服了在其他流行的数据集,包括MS COCO中缺乏这样的物体的问题。

该数据集以65:15:20的比例分为训练、验证和测试。

3、架构改进

YOLOv5使用yaml文件来指导解析器如何构建模型。我们使用这种设置来编写我们自己的高级指令,说明如何构建模型的不同构建块以及使用哪些参数,从而修改其结构。为了实现新的结构,我们安排并为每个构建块或层提供参数,并在必要时指导解析器如何构建它。用我们的话说,我们利用YOLOv5提供的基础和实验网络块,同时在需要模拟所需结构的地方实现额外的块。

1、Backbone

模型的Backbone是用于获取输入图像并从中提取特征映射的组件。这是任何目标检测器的关键步骤,因为它是负责从输入图像提取上下文信息以及将该信息提取为模式的主要结构。

作者尝试用2个Backbone替换YOLOv5中现有的Backbone。

  • ResNet是一种流行的结构,它引入残差连接来减少在深层神经网络中收益递减的影响。
  • DenseNet使用类似的连接,在网络中尽可能多地保存信息。实现这些结构需要将它们分解为基本块,并确保各层适通信。这包括确保正确的特征图尺寸,这有时需要为模型的宽度和深度略微修改缩放因子。

在这两种情况下,为了保持相当的复杂性,重要的是要避免大大偏离原始的层数。因此,使用了ResNet50,并按比例缩小了DenseNet,以保持其核心功能。此外,YOLOv5利用了Backbone和Neck之间的空间金字塔池化(SPP)层。然而,在本工作中,没有触及这一层。

2、Neck

将位于Head和Backbone之间的结构称为“Neck” (见图4),其目标是在将Backbone提取的信息反馈到Head之前尽可能多地聚合这些信息。该结构通过防止小目标信息丢失,在传递小目标信息方面发挥了重要作用。它通过再次提高特征图的分辨率来做到这一点,这样来自Backbone的不同层的特征就可以被聚合,以提升整体的检测性能。

image.png

在本工作中,将当前的PAN-Net替换为bi-FPN。虽然都保留了类似的特征,但复杂性不同,因此实现所需的层数和连接数也不同。

3、其他修改

模型的Head负责获取特征映射,并通过从Neck获取几个聚合的特征映射来预测边界框和类。除了接收到的参数之外,这个结构可以保持原样,因为它是模型的一个基本部分,在小目标检测中没有前面提到的元素那么大的影响。

然而,还有其他一些元素会对小目标检测性能产生影响。除了输入图像的大小之外,还可以修改模型的深度和宽度,以改变处理的主要方向。Neck和Head的层连接方式也可以手动改变,以便专注于检测特定的特征图。

在这项研究中,作者探索了涉及高分辨率特征映射的重定向连接的效果,以便将它们直接反馈到Neck和Head。这可以通过扩大Neck以适应额外的特征图来实现,也可以通过替换最低分辨率的特征图以适应新的特征图来实现,图5显示了这两个选项以及默认(原始)布局。

使用更高分辨率的特征图通常可以提高对较小目标的性能,但需要耗费推理时间和潜在的对较大目标的检测,这与增加输入图像大小的效果类似。用这两种方式在Neck整合这种行为,以最大限度地减少其缺点,同时最大限度地利用其优点。

image.png

注意,一些参数将不得不调整到新的结构,因为网络的学习能力可能会受到影响。主要是在Head应用Anchor的大小,需要根据所使用的特征图的分辨率进行调整。


2实验结果


image.png

讨论

在对YOLOv5进行调整以更好地检测更小的目标的方法的实验中,本文能够识别体系结构修改,这种修改在性能上比原始的检测器有明显改善,而且成本相对较低,因为新的模型保持了实时推理速度。

所应用的技术,即自动赛车技术,可以从这样的改进中获益良多。正如在图8中看到的,这样的变化确实对检测有可量化的影响。在这项工作中,不仅显著提高了Baseline模型的性能,而且还确定了一些特定的技术,这些技术可以应用于任何其他应用程序,包括检测小或远的物体。

YOLO-Z家族的最终结果是,模型表现的YOLOv5类,同时保留一个推理时间等实时应用程序兼容的自动化赛车(见表2和图7)。特别是较小的目标是本研究的重点(图7中,中间),而对于中等大小的目标(下图),性能是稳定的。


3参考


[1].YOLO-Z: Improving small object detection in YOLOv5 for autonomous vehicles

相关文章
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
这篇文章介绍了如何使用PyTorch框架,结合CIFAR-10数据集,通过定义神经网络、损失函数和优化器,进行模型的训练和测试。
92 2
目标检测实战(一):CIFAR10结合神经网络加载、训练、测试完整步骤
|
机器学习/深度学习 算法 数据挖掘
YOLOv6 | 模型结构与训练策略详细解析
YOLOv6 | 模型结构与训练策略详细解析
1775 0
YOLOv6 | 模型结构与训练策略详细解析
|
1月前
|
PyTorch 算法框架/工具 计算机视觉
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
本文介绍了使用YOLOv4-Tiny进行目标检测的完整流程,包括模型介绍、代码下载、数据集处理、网络训练、预测和评估。
104 2
目标检测实战(二):YoloV4-Tiny训练、测试、评估完整步骤
|
1月前
|
机器学习/深度学习 编解码 监控
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
1229 1
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 监控 计算机视觉
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
本文介绍了如何使用YOLOv7进行目标检测,包括环境搭建、数据集准备、模型训练、验证、测试以及常见错误的解决方法。YOLOv7以其高效性能和准确率在目标检测领域受到关注,适用于自动驾驶、安防监控等场景。文中提供了源码和论文链接,以及详细的步骤说明,适合深度学习实践者参考。
314 0
目标检测实战(八): 使用YOLOv7完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
缓存 数据挖掘 测试技术
目标检测实战(三):YOLO-Nano训练、测试、验证详细步骤
本文介绍了YOLO-Nano在目标检测中的训练、测试及验证步骤。YOLO-Nano是一个轻量级目标检测模型,使用ShuffleNet-v2作为主干网络,结合FPN+PAN特征金字塔和NanoDet的检测头。文章详细说明了训练前的准备、源代码下载、数据集准备、参数调整、模型测试、FPS测试、VOC-map测试、模型训练、模型测试和验证等步骤,旨在帮助开发者高效实现目标检测任务。
44 0
目标检测实战(三):YOLO-Nano训练、测试、验证详细步骤
|
1月前
|
机器学习/深度学习 算法 PyTorch
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-7.0版本进行目标检测的完整流程,包括算法介绍、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。YOLOv5以其高精度、快速度和模型小尺寸在计算机视觉领域受到广泛应用。
424 0
目标检测实战(五): 使用YOLOv5-7.0版本对图像进行目标检测完整版(从自定义数据集到测试验证的完整流程)
|
1月前
|
计算机视觉 异构计算
目标检测实战(四):YOLOV4-Tiny 源码训练、测试、验证详细步骤
这篇文章详细介绍了使用YOLOv4-Tiny进行目标检测的实战步骤,包括下载源码和权重文件、配置编译环境、进行简单测试、训练VOC数据集、生成训练文件、准备训练、开始训练以及多GPU训练的步骤。文章还提供了相应的代码示例,帮助读者理解和实践YOLOv4-Tiny模型的训练和测试过程。
113 0
|
5月前
|
测试技术 计算机视觉
【YOLOv8性能对比试验】YOLOv8n/s/m/l/x不同模型尺寸大小的实验结果对比及结论参考
【YOLOv8性能对比试验】YOLOv8n/s/m/l/x不同模型尺寸大小的实验结果对比及结论参考
|
5月前
|
机器学习/深度学习 计算机视觉
【YOLO性能对比试验】YOLOv9c/v8n/v6n/v5n的训练结果对比及结论参考
【YOLO性能对比试验】YOLOv9c/v8n/v6n/v5n的训练结果对比及结论参考