34_YOLOv5网络详解

1.1 简介

YOLOV5是YOLO(You Only Look Once)系列目标检测模型的一个重要版本,由 Ultralytics 公司的Glenn Jocher开发并维护。YOLO系列以其快速、准确的目标检测能力而闻名,尤其适合实时应用。YOLOV5在保持高效的同时,进一步提升了检测精度,是深度学习领域中非常受欢迎的目标检测模型之一。以下是关于YOLOV5的详细介绍:

基本概念

YOLOV5基于先前的YOLO模型改进而来,采用了更为先进的网络架构设计和训练策略。它是一个端到端的模型,意味着从输入图像到输出物体边界框和类别概率,整个过程一次性完成,无需多阶段处理。

网络架构

  1. Backbone:YOLOV5的基础网络架构经历了多次迭代,从V5到V5.0.6,其中V5.0开始使用了CSPNet(Cross Stage Partial Networks)作为主干网络,这是一种提高效率同时减少计算冗余的设计。CSPNet通过跨阶段部分特征重用来减少计算量。随后的版本中,引入了更为高效的注意力机制和改进的瓶颈结构,如SPP(Spatial Pyramid Pooling)、FPN(Feature Pyramid Networks)等,进一步提升模型性能。

  2. Neck:YOLOV5的颈部设计包括了 PANet(Path Aggregation Network)和一些自定义的特征融合技术,用于整合不同尺度的特征图,以增强对多尺度目标的检测能力。

  3. Head:检测头部分负责生成最终的预测,包括边界框坐标、类别概率以及对象置信度。YOLOV5采用了一个或多个预测层,每个层对应不同的特征尺度,从而能够有效检测不同大小的对象。

训练与优化

  • Anchor Boxes:YOLOV5继续使用预设的锚框来初始化潜在对象的位置,但通过优化算法动态调整这些锚框以适应数据集特性,提高检测准确性。

  • Loss Function:采用多任务损失函数,结合了分类损失和定位损失,确保模型在学习分类信息的同时也能精确地定位目标。

  • Training Tricks:包括Mosaic数据增强、自适应图片缩放、Cosine Annealing学习率调整策略、DropBlock正则化等,这些技巧显著提高了模型的泛化能力和收敛速度。

性能特点

  • 速度与精度:YOLOV5以其在速度和精度之间的良好平衡著称。特别是在CPU上运行时,相比其他一些复杂的检测模型,YOLOV5能够提供更快的推理速度,同时保持较高的检测精度。

  • 轻量化:尽管不断迭代升级,YOLOV5系列也推出了多种大小的模型版本,如YOLOV5s、YOLOV5m、YOLOV5l、YOLOV5x等,分别针对不同的应用场景需求,从小型设备上的快速推理到服务器级别的高精度检测。

  • 易用性:YOLOV5提供了简洁的代码实现和详细的文档,支持PyTorch框架,使得研究人员和开发者能够轻松上手、训练和部署模型。

应用场景

由于其高效和准确的特性,YOLOV5被广泛应用于各种场景,包括但不限于视频监控、自动驾驶、无人机巡检、医疗影像分析、体育赛事直播分析、机器人导航等需要实时目标检测的任务。

结论

总之,YOLOV5是目标检测领域的一个里程碑,它不仅继承了YOLO系列的优点,还通过一系列创新设计和优化策略,在模型效率、精度以及易用性方面实现了新的突破,成为实际应用中极为受欢迎的选择。随着持续的更新和社区的贡献,YOLOV5的性能和功能仍在不断进化。

1.2 V5性能

1.3 网络结构

 详情请看:https://blog.csdn.net/qq_37541097/article/details/123594351

网络结构主要由三部分组成:

改进点

需要注意的是,V5的V6.0之后将之前的focus模块替换成了6x6的普通卷积层。两者功能相同但后者效率更高。

focus模块很像swin-transformer中的patch emerging。

将V4的SPP换成了SPPF:

这么做的目的是,将两个5x5maxpool串行在一起等价于9x9maxpool,将三个5x5maxpool串行在一起等价于13x13maxpool,且SPPF效率更高,因为计算量更小,推理速度快了两倍。

1.4 数据增强

Mosaic增强:

https://blog.csdn.net/qq_51605551/article/details/140425535?spm=1001.2014.3001.5501

Copy paste:

"Copy-Paste" 数据增强策略是一种直观且有效的方法,广泛应用于计算机视觉任务中,旨在通过模拟更多样化的训练样本以提高模型的泛化能力。该方法的基本思想是直接从图像中复制部分区域并粘贴到同一张图像或其他图像的不同位置上,以此来增加训练数据的多样性。以下是该策略的一些关键点和应用方式:

  1. 基本操作:在实施Copy-Paste时,首先会随机选择图像中的一个或多个感兴趣区域(如目标对象、背景特征等),然后将这些区域复制并粘贴到同一图像的其他位置,或者粘贴到另一张图像中。粘贴过程中可能会进行适当的缩放、旋转、翻转等变换,以进一步增加多样性。

  2. 应用领域:这种策略特别适用于对象检测、语义分割、实例分割等任务,因为它不仅增加了图像的内容多样性,还能够帮助模型学习到对象间的上下文关系,以及对象在不同场景下的外观变化

优势

  1. 提升模型鲁棒性:通过在不同的背景和上下文中展示相同的对象,可以增强模型对各种环境变化的适应能力。
  2. 简化数据收集:相比于手动创建新样本,Copy-Paste是一种成本较低的数据增强方式,能有效利用现有数据资源。
  3. 促进小对象学习:对于检测或分割中的小对象,Copy-Paste可以通过增加其在图像中的出现频率和尺度变化,改善模型对这类对象的识别能力。
  4. 实现细节:在实际操作中,开发者需要精心设计复制和粘贴的逻辑,包括选择哪些区域、如何融合粘贴后的像素以避免明显的剪切痕迹、以及如何控制增强的程度以保持数据的真实性等。

  5. 与其它增强方法结合:Copy-Paste通常与其他数据增强技术(如颜色变换、几何变换等)结合使用,形成更强大的数据增强策略,共同提升模型性能。

random affine:

Random Affine 变换是计算机视觉中常用的一种数据增强策略,它通过在图像上施加一系列随机的仿射变换来增加训练数据的多样性。仿射变换是一种保持直线依然为直线的几何变换,它可以包括旋转、缩放、平移、剪切等操作。下面详细介绍Random Affine变换的几个核心方面:

  1. 旋转(Rotation):随机改变图像的角度,使对象以不同的方向出现。这有助于模型学习到对象的旋转不变性。

  2. 缩放(Scaling):按随机的比例放大或缩小图像,可以是均匀缩放或独立控制宽度和高度的非均匀缩放。此操作帮助模型处理不同大小的对象。

  3. 平移(Translation):在图像的水平或垂直方向上随机移动图像内容,模拟对象在场景中的不同位置,增强模型的位置不变性。

  4. 剪切(Shearing):对图像进行倾斜变换,即沿一个或两个轴方向上的线性变形,增加图像的几何扭曲,提高模型对形变的鲁棒性。

  5. 保持一致性和真实性:在进行这些变换时,通常会设定一定的参数范围,确保变换后的图像既具有多样性又保持视觉上的合理性和真实性,避免产生过于失真的图像。

  6. 应用领域:Random Affine变换广泛应用于图像分类、物体检测、图像分割等任务中,能够显著提升模型的泛化能力,尤其是在处理存在视角变化、大小变化和位置变化的实际问题时效果尤为明显。

  7. 实现细节:在实际应用中,开发者通常会使用图像处理库(如OpenCV、Pillow等)提供的功能来实现Random Affine变换。通过定义一个随机生成的仿射变换矩阵,并应用到图像上,就可以轻松地生成增强后的图像样本。

Mix up:

https://blog.csdn.net/qq_51605551/article/details/140496749?spm=1001.2014.3001.5501

将两张图片按透明程度(插值)混合成一张新的图片。

Albumentations:

Albumentations 是一个开源的Python库,专门用于图像数据增强。它提供了丰富的图像处理和数据增强方法,广泛应用于深度学习中的计算机视觉任务,如图像分类、目标检测、图像分割等。Albumentations的主要特点和优势包括:

  1. 多样化数据增强:Albumentations 支持广泛的图像变换,包括但不限于旋转(Rotation)、缩放(Scale)、平移(Translate)、翻转(Flip)、裁剪(Crop)、色彩空间变换(如亮度调整、对比度变化、色调变换等)、以及更复杂的变换如随机仿射变换(RandomAffine)、光度变换(PhotometricDistortions)等。这些变换可以单独使用,也可以组合成序列执行复杂的数据增强策略。

  2. 易于使用的API:该库提供了简洁直观的API,用户可以通过简单的配置创建复杂的数据增强管道。用户可以轻松地链式组合多个变换,并通过参数设置变换的概率、幅度等,使得数据增强策略高度可定制化。

  3. 高性能:Albumentations 使用高效的算法实现,确保了在大规模数据集上的快速处理速度。特别是其内置的并行处理机制,可以显著加速数据预处理过程。

  4. 兼容性好:Albumentations 设计之初就考虑到了与机器学习框架的无缝集成,特别是与PyTorch和TensorFlow等主流深度学习框架的配合使用。它可以直接与这些框架的数据加载器集成,简化了数据预处理流程。

  5. 可视化工具:库内还包含了可视化功能,允许用户直观地查看应用了哪些数据增强操作后的图像效果,这对于调试和理解数据增强策略非常有帮助。

  6. 灵活性:除了图像数据,Albumentations 还支持对图像掩码、bounding boxes(边界框)等结构化数据进行相应的同步变换,这对于实例分割、目标检测等任务尤为重要。

总之,Albumentations 是一个强大而灵活的数据增强工具,它极大地简化了数据预处理的复杂度,提升了模型训练的效率和最终模型的泛化能力。通过使用Albumentations,研究者和开发者可以轻松构建出丰富多样的训练数据集,从而推动计算机视觉模型性能的提升。

Augment HSV:

HSV数据增强策略是基于HSV色彩空间对图像进行颜色变换的一种数据增强方法。HSV( Hue, Saturation, Value )色彩空间区别于常用的RGB色彩空间,它更符合人类对颜色的感知方式,其中:

  • Hue(色相):表示颜色的种类,如红色、绿色、蓝色等。
  • Saturation(饱和度):描述颜色的纯度,饱和度越高颜色越鲜艳,反之则越接近灰色。
  • Value(明度/亮度):表示颜色的明暗程度,值越大图像越亮。

在数据增强中,通过随机改变图像的HSV值,可以模拟不同光照条件、色彩偏差等场景,进而增加模型对颜色变化的鲁棒性。具体来说,HSV数据增强通常包括以下几个方面:

  1. 随机色相偏移(Hue Shift):在一定范围内随机改变图像的整体色相,使得同一物体呈现不同颜色,帮助模型学习颜色不变性。

  2. 饱和度调整(Saturation Adjustment):增加或减少图像的饱和度,模拟色彩鲜艳度的变化。这可以训练模型在面对过饱和或低饱和度图像时仍能准确识别。

  3. 明度变化(Value/Brightness Adjustment):改变图像的整体明暗程度,模拟不同光照条件。通过增减明度,模型能够学习到在明亮或昏暗环境下的物体特征。

实施HSV数据增强时,开发者通常会设定一个合理的随机变化范围,避免过度夸张的颜色变换导致图像失真。这种增强方法尤其适用于那些对颜色敏感的任务,如图像分类、物体识别、皮肤疾病诊断等。

在实践上,可以使用如OpenCV这样的库来实现HSV空间的变换,通过调整图像的HSV分量,生成新的训练样本,增加模型训练时的多样性,从而提升模型的泛化能力。

Random horizontal filp:

Random Horizontal Flip(随机水平翻转)是一种常用的数据增强策略,尤其在计算机视觉领域中被广泛应用。它的基本操作是对输入的图像进行随机的水平方向镜像翻转,即左右对调。这项技术的目的在于通过引入图像的方向变化,增强模型的泛化能力,使其能够更好地识别和理解图像中的内容,而不仅仅依赖于特定方向的特征。

关键特点:

  1. 简单有效:随机水平翻转是一种简单易行的数据增强方法,实施成本低,但能显著提升模型对图像中物体方向变化的鲁棒性。

  2. 保持语义不变性:对于大多数自然图像而言,水平翻转不会改变图像内容的语义信息,如猫翻转后仍然是猫,车翻转后还是车,因此这是一种保持类别标签不变的增强方式。

  3. 增强多样性:通过随机应用此变换,可以为训练集引入更多的样本变体,特别是在物体检测、图像分类和图像分割等任务中,有助于模型学习到更加全面的特征表示。

  4. 平衡数据分布:在某些数据集中,物体可能倾向于某一特定方向,随机水平翻转可以帮助平衡不同方向的样本数量,减少模型对特定方向的偏好。

实现方式:

在实现随机水平翻转时,一般会设置一个概率参数,决定图像是否进行翻转。例如,在深度学习框架中,可以设置一个0到1之间的概率值,每次处理图像时根据这个概率随机决定是否执行翻转操作。翻转操作本身则可以通过编程语言的标准库或专门的数据处理库(如OpenCV、PIL等)轻易实现。

应用场景:

  • 图像分类:增加图像方向多样性,帮助模型学会从不同视角识别对象。
  • 目标检测与识别:提升模型对目标在图像中不同位置和方向的检测能力。
  • 图像分割:同样适用于增强分割任务中的训练样本多样性,尤其是对于对称或方向无关的物体。
  • 图像生成和风格迁移:在某些情况下,也可以作为预处理步骤,增加模型训练时的输入变化性。

总之,Random Horizontal Flip作为一种基础而强大的数据增强手段,通过简单地变换图像方向,就能有效提升模型的泛化性能,是许多计算机视觉项目中的标配策略。

1.5 训练策略

Multi-scale training(0.5~1.5x)

多尺度训练的基本原理:

  1. 动态调整输入尺寸:在每个训练迭代或一定迭代次数后,随机选择或按照预定计划改变输入图像的分辨率。例如,可以在一个范围内,如[320, 640]像素之间随机选择尺寸,或者按照一个预设的尺度序列进行训练。

  2. 提升模型鲁棒性:通过这种方式,模型被迫学习在不同尺度下目标的特征,从而增强其对尺寸变化的鲁棒性,提高检测精度,尤其是在小目标检测方面表现更佳。

  3. 模拟真实场景:实际应用中,目标的尺寸变化多样,多尺度训练模拟了这种多样性,使得模型在面对不同大小目标时都能有良好的表现。

  4. 避免过拟合:通过增加训练数据的多样性,多尺度训练还可以帮助减少模型对特定尺寸目标的过度依赖,降低过拟合的风险。

实现细节:

  • 实现方式:在YOLOv5的训练脚本或配置文件中,可以通过设置参数来启用多尺度训练,比如定义一个尺度范围或一个尺度列表,并配置训练时如何从中选择尺寸。

  • 渐进式尺度调整:有时会采用渐进式的尺度调整策略,即在训练初期使用较小的尺度,随着训练进行逐步增加图像尺寸,这样可以在早期训练阶段让模型专注于学习基本特征,后期再关注更细致的尺度变化。

  • 固定比例调整:为了保持图像的长宽比,通常在调整尺寸时会保持图像的宽高比不变,只改变整体大小。

AutoAnchor(for training custom data)

AutoAnchor是一种自动锚点优化策略,用于动态调整模型中预设的锚框(anchor boxes)尺寸,以提高目标检测的准确性,尤其是针对不同尺寸目标的检测效果。AutoAnchor的设计初衷是减少人工设定锚框尺寸的主观性和繁琐性,通过自动化过程找到最优的锚框配置,从而提升模型性能。

基本原理:

  1. 初始化锚点:首先,YOLOv5会基于一些默认或经验设定的锚点尺寸开始训练,这些锚点尺寸覆盖了目标可能出现的不同宽高比和大小。

  2. 评估与反馈:在训练过程中,模型会计算预测框与真实框(ground truth bounding boxes)之间的IOU(Intersection over Union,交并比),IOU是衡量两个矩形框重叠程度的一个指标。AutoAnchor策略会收集所有预测框与真实框匹配情况的统计信息,特别是那些高质量匹配(高IOU)的情况。

  3. 优化锚点尺寸:基于上述统计信息,算法会重新计算和调整锚点尺寸,倾向于生成那些在训练数据集中能更好地匹配真实框的尺寸。这一步通常涉及到优化算法,比如使用进化算法或贪心算法来搜索最优的锚点配置。

  4. 迭代优化:调整锚点尺寸后,模型会使用新的锚点配置重新训练,整个过程可能需要多次迭代,直到锚点尺寸收敛到一个较优的状态。

实现细节:

  • K-Means聚类:一种常见的实现方式是使用K-Means聚类算法来自动确定最优锚点尺寸。该算法根据训练集中的真实框尺寸进行聚类,从而得到一组能够较好覆盖这些尺寸的锚点。

  • 进化算法:YOLOv5的作者Joseph Redmon在原始YOLO论文中提到了使用进化算法来优化锚点尺寸,通过模拟自然选择和遗传变异的过程,寻找最优解。

  • 集成于训练流程:AutoAnchor不是独立的步骤,而是融入到模型训练的循环中,根据模型的训练反馈不断优化,是一个迭代优化的过程。

优点:

  • 提高检测精度:通过自动调整,锚点能更好地匹配数据集中目标的实际尺寸分布,减少误检和漏检,提高检测精度。

  • 简化超参数调整:减轻了手动调整锚点尺寸的负担,自动化过程使得模型更易于训练和部署。

  • 提升训练效率:虽然AutoAnchor涉及到额外的计算,但长远看,它减少了人工试错的时间,提升了整体训练效率。

Warmup and Cosine LR scheduler

“Warmup and Cosine LR Scheduler”是一种学习率调整策略,旨在通过智能地控制学习率随训练轮次变化的方式,来优化模型的学习过程,提高训练效率和最终模型的性能。这个策略分为两个阶段:Warmup阶段和Cosine Annealing阶段。

Warmup 阶段

目的:在训练初期,模型权重的初始化往往比较随机,直接使用较高的学习率可能会导致训练不稳定,甚至偏离最优解。Warmup阶段就是在训练开始时逐步增加学习率,让模型参数有一个从随机初始化到较为合理分布的平滑过渡。

操作:在这个阶段,学习率从一个非常小的值线性增加到预定的初始学习率。这个过程通常持续几个epochs或者指定的迭代次数,确保模型能够在较为稳定的条件下开始正式的学习过程。

Cosine Annealing 阶段

目的:Cosine Annealing(余弦退火)学习率调度策略模拟了余弦波形,通过周期性地减小学习率来帮助模型逐渐收敛到更优的局部最小值,同时避免过早陷入局部最优而错过全局最优解。

操作:在Warmup之后,学习率按照余弦函数的形状进行调整。具体来说,学习率随着训练迭代次数增加而逐渐减小,但并非线性减小,而是先快后慢,最终趋近于一个极小值(通常不为0)。这个过程可以帮助模型在训练后期进行更精细的调整,减少过拟合的风险,并有可能发现更好的解决方案。

综合效果

结合Warmup和Cosine Annealing,YOLOv5的训练策略实现了从温和启动到高效收敛的平滑过渡。Warmup确保了模型训练初期的稳定性,而Cosine Annealing则促进了模型在训练后期的优化,两者共同作用于整个训练周期,旨在提升模型的泛化能力和检测性能。

这种策略的灵活性在于可以通过调整Warmup的持续时间和Cosine Annealing的具体参数(如周期长度、最低学习率等),来适应不同的任务需求和数据集特性,从而达到最佳的训练效果。

EMA(exponential Moving Average)

Exponential Moving Average(EMA,指数移动平均)训练策略是一种模型权重更新的技术,用于提高模型的稳定性和泛化能力。EMA通过跟踪模型参数的历史趋势,逐步平滑权重更新过程中的波动,从而得到一个更加平滑且通常性能更优的模型版本。

基本原理:

在标准的SGD(随机梯度下降)或其变种如Adam、RMSprop等优化过程中,模型参数会直接根据梯度进行更新。然而,这些更新可能受到训练数据中的噪声影响,导致模型权重在训练过程中波动较大。

EMA方法则引入了一个影子权重(Shadow weights)的概念,也称为“滑动平均模型”(Moving Average Model)。在每次迭代时,影子权重会根据当前模型的真实权重和一个衰减因子(通常用γ表示,取值接近1但略小于1)进行更新:

实现细节:

  1. 初始化:训练开始时,影子权重通常被初始化为模型的初始权重。
  2. 更新:在每一次迭代后,使用上述公式更新影子权重,使得影子权重逐渐趋向于模型权重的长期平均值。
  3. 评估:训练完成后,通常使用EMA权重来进行验证和测试,而不是最后一步的真实权重。这是因为EMA权重反映了模型在整个训练过程中的稳定状态,往往能提供更好的泛化性能。

优势:

  • 提高稳定性:通过平滑权重更新,减少了训练过程中的波动,使模型更加稳定。
  • 提升性能:在很多情况下,EMA模型在测试集上的表现优于直接使用原始训练权重的模型,尤其是在噪声较大的数据集上。
  • 简化调参:相较于频繁调整学习率等超参数,EMA提供了一种相对简单且有效的优化策略

Mixed precision

Mixed Precision训练策略是一种利用半精度(FP16)和单精度(FP32)混合的方式来加速训练过程并节省显存的技术。这种策略特别适用于拥有支持半精度运算的现代GPU上,如NVIDIA的Tensor Cores,它能够显著提升训练速度并降低内存占用,而对模型的准确率影响甚微或几乎没有负面影响。

基本原理:

  1. 半精度(FP16):FP16相对于FP32,使用16位存储浮点数,相比32位的FP32,它占用的内存少一半,计算速度在支持的硬件上可以更快。但是,直接使用FP16训练可能会遇到数值稳定性问题,特别是在梯度累积和权重更新时,因为FP16的表示范围和精度较低。

  2. 混合精度:为了解决FP16的稳定性问题,Mixed Precision训练策略采用了一种折衷方案。它通常保持模型的权重和梯度在FP32(保证精度),而在中间的计算过程中(如前向传播、反向传播的大部分计算)使用FP16,这样既享受了FP16带来的速度和内存节省,又避免了严重的数值下溢或上溢问题。

  3. 自动混合精度(AMP):在YOLOv5中,常利用深度学习框架(如PyTorch的torch.cuda.amp模块)提供的自动混合精度训练功能。该功能自动管理FP16和FP32的转换,开发者只需要少量的代码修改即可启用此策略。

实现细节:

  • 启用方式:在YOLOv5的训练脚本中,通过设置特定的参数(如--mixed-precision标志)来激活混合精度训练。
  • 损失缩放(Loss Scaling):为了应对FP16下梯度可能的下溢问题,常采用损失缩放技术。在反向传播前将损失函数的值乘以一个较大的标量(损失缩放因子),并在梯度更新后除以该因子,以此放大梯度,防止下溢,然后再转换回FP32进行更新。
  • 监控与调整:在实际应用中,监控训练过程中的数值稳定性很重要,必要时调整损失缩放因子或其他相关参数,以保持训练的稳定性和效率。

优势:

  • 加速训练:由于半精度计算的速度优势,混合精度训练通常能显著加快训练速度,尤其是在大型模型或大数据集上。
  • 减少内存占用:减少一半的内存需求,使得在有限的硬件资源下能够训练更大的模型或批次大小。

Evolve hyper-parameters

Evolve Hyper-Parameters训练策略是一种自动化超参数优化方法,它通过进化算法或遗传算法来寻找一组最优的超参数配置,以最大化模型的性能。这种策略的目标是自动探索和优化模型训练过程中的一系列关键参数,如学习率(LR)、批量大小(Batch Size)、Momentum、权重衰减(Weight Decay)等,从而提升模型训练效率和最终的检测性能。

基本概念:

  1. 进化算法:这是一种借鉴自然界生物进化过程的全局优化方法。它通过模拟生物种群的遗传、突变、竞争和选择过程,来寻找问题的最优解。在超参数优化场景中,每一个个体代表一套超参数配置,而算法的目标是找到“最适应”的超参数组合。

  2. 种群初始化:算法首先随机生成一个初始的超参数配置种群。

  3. 评价函数:每个个体(超参数配置)会被用来训练模型,并通过验证集上的性能(如mAP,即平均精度均值)作为其适应度得分。

  4. 选择(Selection):根据个体的适应度得分,选择表现较好的个体进入下一代。

  5. 交叉(Crossover):从选择出的个体中,随机选择两个或多个个体的部分超参数进行交换,生成新的后代个体。

  6. 变异(Mutation):对部分个体的超参数进行小幅度的随机修改,引入新的探索性变化。

  7. 重复迭代:上述过程会重复进行多代,直到满足停止条件,如达到预设的迭代次数或找到足够优秀的超参数配置。

YOLOv5中的应用:

虽然YOLOv5本身作为一个开源项目,并没有直接内置Evolve Hyper-Parameters作为其标准训练流程的一部分,但是用户可以根据自己的需求,利用第三方库(如Optuna、Hyperopt等)或自行编写脚本来实现这一优化策略。通过自动化超参数优化,研究者和开发者可以更加高效地探索模型的潜力,减少手动试错的时间和工作量,尤其是在面对大规模超参数空间时。

优势:

  • 自动化:自动探索超参数空间,减少人力投入。
  • 高效:相较于网格搜索或随机搜索,进化算法能更高效地找到较好的超参数组合。
  • 广泛适用性:适用于任何具有可调参数的模型,不仅仅局限于YOLOv5。

注意事项:

  • 计算资源:进化算法可能需要大量计算资源,尤其是当超参数空间大、迭代次数多时。
  • 优化目标明确:需要清晰定义评价函数,以确保算法朝向正确的优化方向前进。
  • 结果解释:最终得到的超参数配置需要经过验证,理解其对模型性能提升的具体贡献。

1.6 其他

损失计算

平衡不同尺度损失

一般小型目标要更难预测一些,所以小型目标的权重大一些。

消除Grid敏感度‘

回顾V4的做法:https://blog.csdn.net/qq_51605551/article/details/140586628?spm=1001.2014.3001.5501

在V5中,作者还提出了两个变化,即最终框的宽高变化。下图中上面公式是V2-V4采用的公式,下面是V5中采用的公式,防止了指数爆炸的情况。

匹配正样本(build targets)

在V5当中,先计算rw和rh,也就是GT与anchor模板的宽高比值,然后第三四行公式计算的是GT与AT(anchor template)宽高的差异性大小,如果GT与AT宽高一致,那么rwmax或者rhmax是等于1的,如果不相等肯定是大于一的。最后一行的公式是取宽高差异最大的那个值。作者又设置了一个anchor_t=4,如果rmax小于anchor_t的话,我们就认为匹配成功为正样本。

至于为什么值设置为4,可以看上面消除敏感度的图,修改后的预测框的宽高是不会超过4的,所以宽高比不会超过四倍。

看下图,只要不超过AT的0.25倍和四倍,就算匹配成功。AT1中GT超过了,匹配失败,AT2中没超过匹配成功,AT3同理。

接下来的步骤和V4是一模一样的。 回顾V4中的IOU  threshold:YOLOv5网络详解_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/382863.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ForCloud全栈安全体验,一站式云安全托管试用 开启全能高效攻防

对于正处于业务快速发展阶段的企业,特别是大型央国企而言,日常的安全部署和运营管理往往横跨多家子公司,所面临的挑战不言而喻。尤其是在面对当前常态化的大型攻防演练任务时,难度更是呈“几何级数”上升: 合规难 众…

Linux中进程的控制

一、进程的创建 1、知识储备 进程的创建要调用系统接口&#xff0c;头文件 #include<unistd.h> 函数fork() 由于之前的铺垫我们现在可以更新一个概念 进程 内核数据结构&#xff08;task_struct, mm_struct, 页表....&#xff09; 代码 数据 所以如何理解进程的独…

最新 Docker 下载镜像超时解决方案:Docker proxy

现在Docker换源也下载失败太常见了&#xff0c;至于原因&#xff0c;大家懂得都懂。本文提供一种简洁的方案&#xff0c; 利用 Docker 的http-proxy&#xff0c;代理至本机的 proxy。 文章目录 前言Docker proxy 前言 这里默认你会安装 clash&#xff0c;然后有配置和数据库。…

华为云.云日志服务LTS及其基本使用

云计算 云日志服务LTS及其基本使用 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550…

开机出现grub无法进入系统_电脑开机出现grub解决方法

最近有小伙伴问我电脑开机出现grub无法进入系统怎么回事&#xff1f;电脑开机出grub的情况有很多&#xff0c;电脑上安装了Linux和Win10双系统&#xff0c;但是由于格式化删除了Linux之后&#xff0c;结果win10开机了之后&#xff0c;直接显示grub&#xff1e;&#xff0c;无法…

平面五杆机构运动学仿真matlab simulink

1、内容简介 略 89-可以交流、咨询、答疑 2、内容说明 略 ] 以 MATLAB 程序设计语言为平台 , 以平面可调五杆机构为主要研究对象 , 给定机构的尺寸参数 , 列出所 要分析机构的闭环矢量方程 , 使用 MATLAB 软件中 SIMULINK 仿真工具 , 在 SIMULINK 模型窗口下建立数…

UE4-光照重建

当我们拉入新的光源和模型到我们的场景中后&#xff0c;会产生这样的情况&#xff1a; Preview:预览 表示此时由于光照物体所产生的阴影都是预览级别的并不是真正的效果。 方法一&#xff1a; 或者也可以在世界大纲中选中我们的光源&#xff0c;然后将我们的光源改变为可以…

(MLLMs)多模态大模型论文分享(1)

Multimodal Large Language Models: A Survey 摘要&#xff1a;多模态语言模型的探索集成了多种数据类型&#xff0c;如图像、文本、语言、音频和其他异构性。虽然最新的大型语言模型在基于文本的任务中表现出色&#xff0c;但它们往往难以理解和处理其他数据类型。多模态模型…

“探求新质生产力 推进中国式现代化”学习交流活动在河北廊坊举办

7月21日&#xff0c;一场以“探求新质生产力 推进中国式现代化”为主题的学习交流活动在河北省廊坊市举办&#xff0c;2000余名企业界人士共同探讨企业发展的新路径与新动力。 7月21日&#xff0c;“探求新质生产力 推进中国式现代化”学习交流活动在河北省廊坊市举办。图为活动…

primeflex教学笔记20240720, FastAPI+Vue3+PrimeVue前后端分离开发

练习 先实现基本的页面结构: 代码如下: <template><div class="flex p-3 bg-gray-100 gap-3"><div class="w-20rem h-12rem bg-indigo-200 flex justify-content-center align-items-center text-white text-5xl"><input type=&q…

前端Vue组件化实践:自定义发送短信验证码弹框组件

在前端开发中&#xff0c;随着业务逻辑的日益复杂和交互需求的不断增长&#xff0c;传统的整体式开发方式逐渐暴露出效率低下、维护困难等问题。为了解决这些问题&#xff0c;组件化开发成为了一种流行的解决方案。通过组件化&#xff0c;我们可以将复杂的系统拆分成多个独立的…

JMeter:BeanShell到JSR223迁移中的注意事项

前言 在之前的文章JMeter&#xff1a;BeanShell向JSR223迁移过程遭遇的java标准库不可用问题-如何切换JDK版本中引用了一段使用BeanShell对入参进行加密的脚本&#xff0c;迁移到JSR223&#xff0c;虽然更换JDK后编译通过&#xff0c;看似也可以执行了&#xff0c;但是其实那段…

《0基础》学习Python——第二十讲__网络爬虫/<3>

一、用post请求爬取网页 同样与上一节课的get强求的内容差不多&#xff0c;即将requests.get(url,headershead)代码更换成requests.post(url,headershead),其余的即打印获取的内容&#xff0c;如果content-typejson类型的&#xff0c;打印上述代码的请求&#xff0c;则用一个命…

Linux 13:网络编程1

1. 预备知识 1-1. 理解源IP地址和目的IP地址 在IP数据包头部中&#xff0c;有两个IP地址&#xff0c;分别叫做源IP地址&#xff0c;和目的IP地址。 我们光有IP地址就可以完成通信了嘛&#xff1f;想象一下发qq消息的例子&#xff0c;有了IP地址能够把消息发送到对方的…

[嵌入式Linux]-常见编译框架与软件包组成

嵌入式常见编译框架与软件包组成 1.嵌入式开发准备工作 主芯片资料包括&#xff1a; 主芯片资料 主芯片开发参考手册&#xff1b;主芯片数据手册&#xff1b;主芯片规格书&#xff1b; 硬件参考 主芯片硬件设计参考资料&#xff1b;主芯片配套公板硬件工程&#xff1b; 软件…

Adaboost集成学习 | Matlab实现基于LSTM-Adaboost长短期记忆神经网络结合Adaboost集成学习多输入单输出时间序列预测

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | Matlab实现基于LSTM-Adaboost长短期记忆神经网络结合Adaboost集成学习时间序列预测(股票价格预测) 模型设计 步骤1: 数据准备 收集和整理历史数据。确保数据集经过适当的预处理,如归一…

自己开发软件实现网站抓取m3u8链接

几天前一个同学说想下载一个网站的视频找不到连接&#xff0c;问我有没有什么办法,网站抓取m3u8链接 网页抓取m3u8链接。当时一听觉得应该简单&#xff0c;于是说我抽空看看。然后就分析目标网页&#xff0c;试图从网页源码里找出连接&#xff0c;有的源代码直接有,但是有的没有…

【Linux学习 | 第1篇】Linux介绍+安装

文章目录 Linux1. Linux简介1.1 不同操作系统1.2 Linux系统版本 2. Linux安装2.1 安装方式2.2 网卡设置2.3 安装SSH连接工具2.4 Linux和Windows目录结构对比 Linux 1. Linux简介 1.1 不同操作系统 桌面操作系统 Windows (用户数量最多)MacOS ( 操作体验好&#xff0c;办公人…

golang 解压带密码的zip包

目录 Zip文件详解ZIP 文件格式主要特性常用算法Zip格式结构图总览Zip文件结构详解数据区本地文件头文件数据文件描述 中央目录记录区&#xff08;核心目录记录区 &#xff09;中央目录记录尾部区 压缩包解压过程方式1 通过解析中央目录区来解压方式2 通过读取本地文件头来解压两…

mq基础入门

前言 黑马商城导入了mq依赖 但是没有改service发消息 因为下单业务一直有问题 所以先没改 作业时间不够也没处理 1.异步调用 就是所谓的发短信 可以不用立即恢复 比如下单业务 下了单更新信息 就相当于发个消息通知一下 不用立即更改 但是支付就比较重要 不需要因为故障导…