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),有利于提高训练速度和稳定性。