yolov5超参数解释(hyp.scratch-low.yaml)

文章目录

  • 前言‍
  • 总览一下,接下来开始逐个分析
    • lr0
    • lrf
    • momentum
    • weight_decay
    • warmup_epochs
    • warmup_momentum
    • warmup_bias_lr
    • box(目标框损失权重)
    • cls(分类损失权重)
    • cls_pw(分类损失的二元交叉熵损失中正样本的权重)
    • obj(置信度损失权重)
    • obj_pw(置信度损失的二元交叉熵损失中正样本的权重)
    • iou_t
    • anchor_t
    • fl_gamma
    • hsv_h、hsv_s、hsv_v
    • degrees、translate、scale、shear
    • perspective
    • flipud、fliplr
    • mosaic、mixup、copy_paste
  • 总结

前言‍

在模型训练中,超参数的调整是必不可少的。有时候看到结果,分析之后发现是过拟合,这时候就需要对自己的模型超参数进行调整,以达到最优效果等等。这里对yolov5中的文件 hyp.scrtch-low.yaml超参数进行调整。

总览一下,接下来开始逐个分析

yolov5超参数解释(hyp.scratch-low.yaml)_第1张图片

lr0

学习率的初始值,通常使用SGD时为0.01,使用Adam时为0.001

lrf

OneCycleLR 学习率调度器中的最终学习率(lr0 * lrf)

momentum

概念:
动量可以理解为参数更新的惯性,类似于小球滚动的惯性。它通过维护一个动量向量,记录之前梯度方向的加权平均值,并将其用于参数更新,可以加快训练速度,提高模型稳定性

  • 较小的动量可以使更新方向更加平稳
  • 较大的动量可以加速参数更新。

weight_decay

概念:
权重衰减(weight decay)是一种常见的正则化技术,旨在减少模型的复杂性,防止过拟合。

  • weight decay值越大,正则化强度越大,模型泛化能力会更好。但是太大会导致模型欠拟合。

warmup_epochs

  • 在训练深度学习模型时,有时候需要先使用一个较小的学习率来进行预热,以避免在初始阶段出现不稳定的梯度或损失的情况。
  • warmup_epochs就是控制预热的epoch数,也就是在训练的前几个epoch使用较小的学习率,使得模型能够更快地收敛到稳定的状态。
  • 在预热阶段结束后,学习率会逐渐增加到初始设定的学习率,然后继续按照设定的学习率进行训练。

warmup_momentum

简单来说,就是热身训练那几个epochs的动量设置

warmup_bias_lr

概念:
指在学习率warm-up期间,偏置(bias)的学习率所使用的初始学习率。

  • 在训练深度神经网络时,通常采用较小的学习率进行初始化,以便网络能够逐渐适应数据集的特征。
  • 当学习率较小时,偏置的学习率通常要比权重的学习率更高,以保证网络在早期学习阶段能够更快地适应数据集的偏置。

box(目标框损失权重)

概念:
box通常指的是bounding box,即目标的边框。在yolov5中,是一个超参数,控制bounding box loss的权重。

  • 它影响了网络如何调整检测边界框的位置和大小,以更好地匹配目标。
  • 较大的box值将使网络更注重优化边界框。
  • 较小的值将使其更加注重类别分类。

cls(分类损失权重)

概念:
在目标检测中,cls 通常表示分类损失。YoloV5中使用的是交叉熵损失,它度量的是目标属于每个类别的概率分布与实际分布之间的差异

  • 这个损失用于调整网络的权重,使网络能够更准确地预测目标的类别。
  • cls值越大,表示越注重分类损失的影响。

cls_pw(分类损失的二元交叉熵损失中正样本的权重)

概念:
cls_pw就是用于控制分类损失函数中正样本权重的参数。

  • 在某些情况下,数据集中的正负样本不平衡,导致分类损失函数中的负样本权重占比较大,这可能会导致模型对正样本的预测能力下降。
  • 可以通过增加正样本的权重来平衡分类损失函数,从而提高模型对正样本的预测能力。
  • 默认为1.0,表示正样本权重和负样本权重相等。
  • 值设置的越大,则正样本权重越大。

obj(置信度损失权重)

概念:
YOLOv5 模型的 obj 指代对象的存在损失权重,用于指定正负样本的权重。

  • 这个权重被用来平衡正负样本对于训练的贡献,避免模型偏向于训练样本数较多的类别,从而提高模型的性能。
  • 当该参数值较大时,模型对对象的存在的关注程度就会更高。

obj_pw(置信度损失的二元交叉熵损失中正样本的权重)

指正样本权重

  • 如果正样本数量较少,YOLOv5 会增加正样本的权重,以便更多地关注正样本,提高检测准确率。
  • 如果正样本数量较多,YOLOv5 会减小正样本的权重,以便更多地关注负样本,减少误检率。

iou_t

Iou阈值,用于预测框和真实框之间的匹配。

  • IoU 是指检测框(预测框)和真实框之间的交并比。当预测框和真实框之间的 IoU 大于 iou_t 时,视为检测正确,否则视为检测错误。
  • 比如,iuo_t设置为0.5,只有预测框和真实框之间的Iou大于0.5才会视为正确检测。

anchor_t

anchor的阈值,用于筛选anchor。跟iou_t道理一样

  • 这个参数就是控制哪些anchor boxes会被用来匹配目标。anchor_t越小,则越容易匹配更小的目标,anchor_t越大,则越容易匹配更大的目标
  • 对于一些小的目标,因为它们的大小与anchor的大小差别较大,需要使用比较小的anchor box进行匹配,此时设置一个小的anchor_t可以让这些小目标更容易被匹配上。
  • 而对于一些大目标,它们的大小与anchor大小的差别较小,可以使用相对较大的anchor进行匹配,此时设置一个大的anchor_t可以使得大目标更容易被匹配。

fl_gamma

fl_gamma 是 Focal Loss 中的一个参数,用于调整损失函数的加权。

  • fl_gamma 就是控制难以分类样本权重的参数,其值越大,模型对难以分类样本的关注程度越高,对易于分类的样本关注程度越低。

hsv_h、hsv_s、hsv_v

表示图像HSV颜色空间的色调饱和度明度的增强参数。

  • hsv_h、hsv_s、hsv_v的取值范围都是[0, 1],可以尝试不同的取值来进行比较。
  • 值越大,强度越大

degrees、translate、scale、shear

表示图像旋转、平移、缩放、扭曲的增强参数

  • 数据增强的程度越大,可以提高模型的泛化能力,但也会增加训练时间和计算资源的消耗。

perspective

是数据增强中的一种,它会对图像进行透视变换,使得图像看起来像是从不同的角度拍摄的。

  • 透视变换可以改变图像中物体的形状和位置,因此能够增加模型的鲁棒性和泛化能力。
  • 参数的值表示透视变换的程度,取值范围是0到0.001。
  • 当值为0时,表示不进行透视变换。当值为0.001时,表示进行最大程度的透视变换。
  • 通常情况下,可以将其设置为一个比较小的值,例如0.0005,以增加模型的泛化能力,同时不会对图像造成过大的扭曲。

flipud、fliplr

表示图像上下翻转左右翻转的增强概率。

  • 它们的取值范围是从 0 到 1,表示翻转的概率
  • 比如,flipud 设置为 0.5 表示有 50% 的概率对图像进行上下翻转,设置为 0 表示不进行翻转,设置为 1 表示始终进行上下翻转,fliplr同理。

mosaic、mixup、copy_paste

数据增强的方式,可以用来增强训练集的多样性,从而提高模型的泛化性能。

  • mosaic: 以一定的概率将四张图片拼接成一张,增强了模型对多物体的感知能力和位置估计能力。
    取值一般在0.1~1.0之间
  • mixup: 以一定的概率对两张图片进行线性混合,增强了模型对物体形状和纹理的学习能力
    取值一般在0.0~0.5之间
  • copy_paste: 以一定的概率将一张图片的一部分复制到另一张图片上,增强了模型对物体的位置和尺度变化的鲁棒性。取值一般在0.0~0.5之间
  • 这些取值表示概率,比如mosaic参数值为1,表示使用mosaic数据增强概率为100%,值为0.5则表示概率为50%。

总结

关于hyp.scrtch-low.yaml的超参数写完了,我觉得在模型训练中,适当的调整这些超参数还是很有用的。

你可能感兴趣的:(YOLO,人工智能,深度学习)