跳转至

1 YOLO 训练参数解释

这些参数是 YOLOv8 在目标检测任务(detect)中用于训练(train)模型的超参数和配置。以下是参数的详细解释:


1. 任务模式

task: detect
mode: train
  • task: detect:表示任务是目标检测(detection)。
  • mode: train:表示当前是训练模式,如果是推理(inference)模式,值会是 predict。

2. 模型和数据

model: yolov8n.pt
data: /home/yyp/train/1-train_dataset/nw-250303153923-Person/dataset-config.yaml
  • model: yolov8n.pt:指定使用 YOLOv8n(YOLOv8 nano版本)作为预训练模型。

  • data: dataset-config.yaml

:指定数据集配置文件,通常包括:

  • 训练集、验证集、测试集路径
  • 类别名称
  • 类别数量

3. 训练超参数

epochs: 3000
patience: 100
batch: 96
imgsz: 640
  • epochs: 3000:最大训练轮数,模型会训练 3000 轮。
  • patience: 100:早停机制,如果 100 轮内验证集 mAP(精度指标)没有提升,则提前停止训练。
  • batch: 96:批量大小,每次训练时处理 96 张图片。
  • imgsz: 640:输入图片会调整到 640×640。

4. 训练存储

save: true
save_period: -1
project: null
name: train2
exist_ok: false
save_dir: 1-train_done/detect/train2
  • save: true:训练时是否保存模型,true 表示保存。
  • save_period: -1:控制多少个 epoch 保存一次模型,-1 代表只在训练结束时保存。
  • project: null:默认项目文件夹,null 表示使用默认路径。
  • name: train2:实验名称,最终会存放在 1-train_done/detect/train2 目录中。
  • exist_ok: false:如果 false,如果 save_dir 已存在,会报错;如果 true,则覆盖。

5. 计算资源

device: cuda
workers: 8
  • device: cuda:使用 GPU 训练,如果是 cpu,则使用 CPU 训练。
  • workers: 8:数据加载线程数,用于加快数据读取(多线程数据加载)。

6. 训练优化

pretrained: true
optimizer: auto
verbose: true
seed: 0
deterministic: true
single_cls: false
  • pretrained: true:是否加载预训练权重,true 表示加载 yolov8n.pt 作为起始点。
  • optimizer: auto:自动选择优化器(SGD 或 Adam)。
  • verbose: true:是否打印详细日志。
  • seed: 0:随机种子,确保结果可复现。
  • deterministic: true:保证训练过程的确定性,减少浮动影响。
  • single_cls: false:是否把所有目标当作同一类,false 表示保留多类别信息。

7. 数据增强

hsv_h: 0.015
hsv_s: 0.7
hsv_v: 0.4
degrees: 0.0
translate: 0.1
scale: 0.5
shear: 0.0
perspective: 0.0
flipud: 0.0
fliplr: 0.5
mosaic: 1.0
mixup: 0.0
copy_paste: 0.0
auto_augment: randaugment
erasing: 0.4
  • hsv_h: 0.015:色调变化范围,最大 ±0.015。
  • hsv_s: 0.7:饱和度变化范围,最大 ±70%。
  • hsv_v: 0.4:亮度变化范围,最大 ±40%。
  • degrees: 0.0:旋转角度,0.0 表示不旋转。
  • translate: 0.1:平移变换,最大 ±10%。
  • scale: 0.5:缩放范围,0.5 倍到 1.5 倍。
  • shear: 0.0:剪切角度,0.0 表示无剪切。
  • perspective: 0.0:透视变换,0.0 表示无变换。
  • flipud: 0.0:上下翻转概率,0.0 表示不会翻转。
  • fliplr: 0.5:左右翻转概率,0.5 表示 50% 概率翻转。
  • mosaic: 1.0:马赛克数据增强,1.0 表示启用。
  • mixup: 0.0:混合增强(两张图片混合),0.0 表示禁用。
  • copy_paste: 0.0:目标级复制粘贴增强,0.0 表示禁用。
  • auto_augment: randaugment:自动增强策略,randaugment 代表随机增强。
  • erasing: 0.4:随机擦除概率,0.4 代表 40% 概率随机遮挡。

8. 训练策略

close_mosaic: 10
cos_lr: false
resume: false
amp: true
fraction: 1.0
  • close_mosaic: 10:在训练 10 轮后关闭马赛克数据增强。
  • cos_lr: false:是否使用 余弦学习率调度,false 表示禁用。
  • resume: false:是否从上次训练的权重继续。
  • amp: true:是否启用自动混合精度(AMP),加速训练。
  • fraction: 1.0:使用全部数据集,如果 0.5,则使用 50% 数据。

9. 训练超参数

lr0: 0.005
lrf: 0.01
momentum: 0.937
weight_decay: 0.0005
warmup_epochs: 4.0
warmup_momentum: 0.8
warmup_bias_lr: 0.1
  • lr0: 0.005:初始学习率。
  • lrf: 0.01:最终学习率 = lr0 * lrf。
  • momentum: 0.937:SGD 动量。
  • weight_decay: 0.0005:权重衰减,防止过拟合。
  • warmup_epochs: 4.0:预热轮数,前 4 轮使用较小学习率。
  • warmup_momentum: 0.8:预热时的动量。
  • warmup_bias_lr: 0.1:预热时的学习率系数。

10. 损失函数权重

box: 7.5
cls: 0.5
dfl: 1.5
pose: 12.0
kobj: 1.0
nbs: 64
  • box: 7.5:边界框损失权重。
  • cls: 0.5:分类损失权重。
  • dfl: 1.5:分布焦点损失(DFL)权重。
  • pose: 12.0:姿态估计损失。
  • kobj: 1.0:关键点目标损失。
  • nbs: 64:标准化批大小。

总结

这个配置是一个高批量训练任务(batch=96, epochs=3000),启用了数据增强(马赛克、随机擦除等),使用自动混合精度(AMP),同时采用了早停策略(patience=100),有利于提高训练速度和稳定性。