官方介绍:官方解释

对官方介绍的补充

主要包含常用的参数,需要搭配使用的参数

  1. 实验名称组合
  • project: 项目名称。这个参数用于标识当前训练任务所属的项目,方便管理和组织多个训练任务。
  • name: 实验名称。该参数为当前训练任务指定一个名称,以便于标识和区分不同的实验。
  • exist_ok: 是否覆盖现有的实验。如果设置为 True,当实验名称已经存在时,将会覆盖现有实验。默认为 False。
  • 最终实验数据会创建在project/name下,看似这没什么用,但是当大量实验时,你就知道有多香了。
  1. 矩形尺寸训练
  • imgsz: 输入图像的尺寸。这个参数确定了输入图像的大小。可以指定一个整数值表示图像的边长,也可以指定宽度和高度的组合。例如640表示图像的宽度和高度均为640像素或者[64,640]结合rect。
  • rect: 使用矩形训练,每个批次进行最小填充。设置为 True 后,训练过程中使用矩形形状的图像批次,并进行最小化填充。
  • 最终可以实现对宽≠高的尺寸下进行训练和验证,当然训练过程中使用宽=高,后续也可以转为宽≠高的模型部署,其中的差异还需要在数据上验证,官方说宽≠高训练可能会影响精度。
  1. 优化器和lr的一些必须知道的内容※※
  • lr0: 初始学习率。学习率是控制模型参数更新步幅的超参数,初始学习率确定了训练开始时的参数更新速度。
  • lrf: 最终学习率。最终学习率=lr0*lrf
  • cos_lr: 使用余弦学习率调度器。如果设置为 True,将使用余弦函数调整学习率的变化情况。default=False
  • optimizer: auto(非常重要):如果迭代次数iterations>10000初始优化器和学习率为'SGD'0.01
    • 如果是从头开始训练自己的任务auto是默认值同时也是很好的选择。
    • 如果是finetune自己的数据,那么只要你iterations超过10000你设置的lr0将失效代码如下
    • name, lr, momentum = ("SGD", 0.01, 0.9) if iterations > 10000 else ("AdamW", lr_fit, 0.9)
    • 所以微调一定要将auto更换为指定的优化器,通过官方issue给出的参考是adamlr0=1e-4or1e-5
    • 训练时opt内容的一些讨论
  1. 损失函数
  • box: 边界框损失权重。用于调整边界框损失的权重,以控制其在总损失中的贡献程度
  • cls: 类别损失权重。用于调整类别损失的权重,以控制其在总损失中的贡献程度(按像素进行缩放)
  • dfl: DFL(Distribution Focal Loss)损失权重。用于调整 DFL 损失的权重,以控制其在总损失中的贡献程度。
  • pose: 姿态损失权重(仅姿态)。用于调整姿态损失的权重,以控制其在总损失中的贡献程度(仅应用于姿态相关任务)。
  • kobj: 关键点目标损失权重(仅姿态)。用于调整关键点目标损失的权重,以控制其在总损失中的贡献程度(仅应用于姿态相关任务)。
  • 最终目的:我的经验是让每一项损失的贡献尽量接近,太大和太小都不好,尤其对高精度的指标有一定影响。
  1. 预训练与早停
  • epochs: 训练的轮数。这个参数确定了模型将会被训练多少次,每一轮都遍历整个训练数据集。训练的轮数越多,模型对数据的学习就越充分,但也增加了训练时间。
  • patience: 早停的等待轮数。在训练过程中,如果在一定的轮数内没有观察到模型性能的明显提升,就会停止训练。这个参数确定了等待的轮数,如果超过该轮数仍没有改进,则停止训练。default=100
  • resume: 从最后一个检查点恢复训练。如果设置为 True,将从最后一个检查点的状态继续训练。default=false
  1. 数据增强
  • 太多了,说几个重要的,这里是官方
  • hsv_h hsv_s hsv_v:光照、饱和度、亮度
  • mosaic:将四个训练图像合并为一个,模拟不同的场景组成和物体交互。对于复杂场景的理解非常有效。0.0-1.0
  • label_smoothing: 标签平滑(label smoothing)。标签平滑是一种正则化技术,用于减少模型对训练数据的过拟合程度讲解,官方定义为训练参数,我认为也可以算是数据的一种处理,default=0
  1. 后处理指标(Predict Settings)
  • iou:非最大抑制(NMS)的IoU (Intersection Over Union)阈值。较低的值通过消除重叠框导致较少的检测,有助于减少重复。default=0.7
  • conf:设置检测的最小置信度阈值。以低于此阈值的置信度检测到的对象将被忽略。调整这个值可以帮助减少误报。default=0.25

小结

yolo的参数还有很多,同时也可以加入自己的参数进行训练,参数可以在ultralytics/cfg/default.yaml中看到名称和默认值。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐