共计 3997 个字符,预计需要花费 10 分钟才能阅读完成。
1) 训练流程速写(心智模型)
- 确定数据口径:第 1 课的数据体检通过;
data.yaml、类别顺序稳定。 - 基线训练:
yolov8n.pt小模型先跑 50–100 epoch,锁住随机种子,保留曲线与样例可视化。 - 单因子实验:一次只改一个变量(LR、imgsz、增强开关等),记录变化。
- 对照验证:固定评估集与评估脚本,报告 mAP、Precision/Recall 与速度。
- 上线友好:更少花哨增强、更稳定的推理时延、可复现日志。
2) 学习率与优化器(性能的方向盘)
2.1 基本参数
lr0:初始学习率(warmup 之前的起点)。lrf:最终学习率相对lr0的比例(Cosine 时常见 0.01~0.2)。momentum/weight_decay:动量与权重衰减(正则)。optimizer:SGD/Adam/AdamW(小数据或迁移学习常选 AdamW)。cos_lr=True:使用余弦退火;warmup_epochs控制预热。
2.2 常用组合
# A) 基线:SGD + Cosine + 适中衰减
yolo train model=yolov8n.pt data=data.yaml epochs=100 imgsz=640 batch=auto \
optimizer=SGD lr0=0.01 lrf=0.01 momentum=0.937 weight_decay=0.0005 \
cos_lr=True warmup_epochs=3 patience=20
# B) 小数据 / 迁移:AdamW + 稍大衰减
yolo train model=yolov8s.pt data=data.yaml epochs=100 imgsz=640 batch=auto \
optimizer=AdamW lr0=0.001 lrf=0.01 weight_decay=0.01 cos_lr=True patience=30
诊断:
- 早期
loss高速下降→震荡→发散:lr0太大; - 始终缓慢下降、长期不收敛:
lr0太小或模型容量不足; - 验证指标先升后跌:过拟合,考虑早停 / 正则 / 增强。
3) 批大小、图像尺寸与训练时长
- batch:越大估计越稳,但显存压力大;显存吃紧时降
imgsz比硬怼batch更稳。 - imgsz:常见 640;目标很小或高分辨率场景尝试 768/896;移动端倾向 512/416。
- epochs & patience:总轮次与早停容忍度;小数据适度拉长 patience,避免错过缓慢提升。
yolo train model=yolov8n.pt data=data.yaml epochs=150 imgsz=512 batch=32 patience=50
经验曲线:优先调 imgsz→lr→增强→epochs。指标无感时再换模型大小(n/s/m/l/x)。
4) 迁移学习与冻结(把预训练当“外骨骼”)
model=yolov8n.pt:加载 预训练权重;model=yolov8n.yaml pretrained=yolov8n.pt:从结构 YAML 初始化,再加载预训练;freeze:冻结前若干层(降低小数据过拟合与显存占用)。
# 冻结 backbone 前 10 层,先训练头部
yolo train model=yolov8n.pt data=data.yaml epochs=30 freeze=10
# 然后解冻微调
yolo train model=runs/detect/train/weights/last.pt data=data.yaml epochs=70 freeze=0
何时冻结:数据很少(<2k 图)、域差异不大;若域差异大(如可见光→红外),直接全量微调或只冻结开头几层。
5) 数据增强策略(稳健优先)
上线友好(建议起步)
yolo train model=yolov8n.pt data=data.yaml epochs=100 imgsz=640 \
hsv_h=0.015 hsv_s=0.7 hsv_v=0.4 fliplr=0.5 degrees=0.0 translate=0.1 scale=0.5 shear=0.0 \
mosaic=0.0 mixup=0.0
更激进(竞赛风格)
yolo train model=yolov8m.pt data=data.yaml epochs=300 imgsz=640 \
mosaic=0.5 mixup=0.2 perspective=0.0005 degrees=5.0 translate=0.2 scale=0.9 \
fliplr=0.5 flipud=0.2
规律:增强增强的是 鲁棒性与召回 ,可能损失一点精度与可解释性;验证集必须 不含合成痕迹。
6) 类别不平衡与小目标
- 类权重:样本极不均衡时可在训练配置里设置
class_weights(或在数据采样阶段做分层 / 重采样); - 小目标:减小
imgsz会放大目标相对尺寸;或选更密集的输入金字塔(多尺度训练)。 - 采样均衡:构建“少数类 oversample 列表”,训练前复制或增广该类样本。
如无现成类权重参数,可从数据侧入手:过采样 + 针对性增强(随机裁剪、缩放)。
7) 稳定性与效率(强心针)
- AMP(混合精度):默认开启,显存降 30%+,速度更快;报
nan可尝试关闭amp=False。 - EMA(指数滑动平均):默认启用能提升泛化;可通过设置关闭 / 开启(不同版本参数名稍异)。
- 梯度裁剪:防爆梯度;若版本提供
grad/clip参数,可设如clip=1.0。 - 确定性 & 种子:
seed=42;需要完全可复现实验时加deterministic=True(训练会慢)。 - 梯度累积:当显存不足又想要“大 batch”时开启(具体参数名视版本,可在帮助中查看)。
yolo train model=yolov8s.pt data=data.yaml epochs=100 imgsz=640 batch=auto \
amp=True seed=42 deterministic=False
8) 多 GPU 与分布式
- 单机多卡:
device=0,1,2,3;workers适度增加(一般 4~8)。 - 监控吞吐:关注
img/s、每 step 耗时;I/O 成瓶颈时提高workers或将数据存 SSD。
yolo train model=yolov8m.pt data=data.yaml epochs=100 imgsz=640 batch=auto \
device=0,1 workers=8
9) 可视化与日志
- 训练后在
runs/detect/train*下查看:loss 曲线、mAP、PR 曲线、混淆矩阵、示例可视化; tensorboard --logdir runs/打开曲线面板;- 记录配置(超参数、数据版本、commit hash)到
README/MLflow/W&B,保证可复现。
10) 常见症状→处理
- loss 变 nan:降低
lr0;关闭 AMP;检查标签是否合法(坐标在 0~1)。 - mAP 不涨:验证集泄漏 / 脏;学习率过小;增强与真实分布差异过大;
- 训练很慢:
workers太小;I/O 瓶颈;imgsz 过大; - 验证快但线上差:验证集与线上分布不一致;开启过激增强;未做 TTA 与推理阈值调优;
- 召回低:调高
conf/iou阈值的策略不当;尝试更强增强、更大模型或更高分辨率; - Precision 低(假阳多):适当提高推理
conf;降低 mixup/mosaic;清理脏标注。
11) 实验设计模板(最小可行)
基线
yolo train model=yolov8n.pt data=data.yaml epochs=100 imgsz=640 batch=auto \
optimizer=SGD lr0=0.01 lrf=0.01 cos_lr=True seed=42 name=baseline
实验 A:imgsz 768
yolo train model=yolov8n.pt data=data.yaml epochs=100 imgsz=768 batch=auto \
optimizer=SGD lr0=0.01 lrf=0.01 cos_lr=True seed=42 name=img768
实验 B:AdamW + 冻结 10 层(小数据)
yolo train model=yolov8s.pt data=data.yaml epochs=120 imgsz=640 batch=auto \
optimizer=AdamW lr0=0.001 lrf=0.01 weight_decay=0.01 freeze=10 seed=42 name=adamw_freeze10
产出表:
[实验名, mAP50, mAP50-95, P, R, ms/img, params, FLOPs],并附 8~12 张 固定样例 可视化图用于主观对比。
12) 推理与阈值调优(部署前的最后三步)
# 批量推理,输出到 runs/predict
yolo predict model=best.pt source=images/val conf=0.25 iou=0.7 save=True
- 画 PR 曲线 找到你业务的最佳
conf; - 若漏检偏多,提高
iou阈值意义不大,更多来自数据与模型容量; - 导出部署:
yolo export model=best.pt format=onnx dynamic=True(或 TensorRT/OpenVINO 等)。
13) 课后练习(建议 90–120 分钟)
- 构建 基线 与两个 单因子实验(任选:imgsz、lr、optimizer、freeze、mosaic/mixup),对比 mAP50-95 与推理耗时。
- 选择 12 张固定样例图,导出三组预测可视化,点评优劣。
- 在验证集上扫描
conf∈{0.25,0.4,0.6}、iou∈{0.5,0.7},报告 P/R/F1 表,选定上线阈值。 - (可选)多卡训练一次,对比吞吐与最终指标,记录显存占用。
小结
- 先用 小模型 与稳健增强 建立基线,再做 单因子 迭代;
- 学习率是第一调参位;imgsz 与冻结帮助你在显存与过拟合之间找平衡;
- AMP/EMA/ 梯度裁剪保稳定,多卡与日志保效率与可复现;
- 指标 + 样例双视角评估,别被单一数字牵着走。
正文完

