【YOLO 入门到精通 06】训练第一个模型从 data.yaml 到 best.pt 完整实战标签YOLO训练迁移学习超参数多GPUbest.pt难度⭐⭐ |阅读时长约 70 分钟 |系列第 06/12 集前置05 数据准备 |下一集07 验证评估写在前面数据准备好了现在进入最激动人心的环节——训练你自己的检测模型。本集覆盖从第一条训练命令到读懂训练日志、从单 GPU 到多 GPU、从断点续训到超参调优让你拿到第一个best.pt。本集学习目标用 CLI/Python 启动训练理解 epochs/batch/imgsz 等核心参数读懂训练日志和输出目录配置多 GPU 与断点续训文章目录【YOLO 入门到精通 06】训练第一个模型从 data.yaml 到 best.pt 完整实战写在前面本集学习目标6.1 训练流程与迁移学习6.2 开始第一次训练练手coco8 三步走自定义数据集Python 方式⚠️ Windows 必加保护6.3 核心参数详解必知参数优化器6.4 batch 与显存6.5 读懂训练输出输出目录日志解读6.6 多 GPU 训练6.7 高级技巧调参速查6.8 完整训练脚本6.9 踩坑指南6.10 常见问题 FAQ6.11 本集小结6.1 训练流程与迁移学习否是数据集选预训练模型配置参数训练指标满意?调参best.pt迁移学习预训练模型在 COCO 上学到通用特征边缘、纹理你只需微调检测头适应新类别——比从零训练快 10 倍以上。6.2 开始第一次训练练手coco8 三步走# 1. 确认环境yolo version# 2. 训练 3 轮自动下载 coco8yolo detect traindatacoco8.yamlmodelyolo26n.ptepochs3imgsz640# 3. 查看结果# runs/detect/train/weights/best.pt自定义数据集yolo detect traindatamy_dataset.yamlmodelyolo26n.ptepochs100imgsz640batch16device0Python 方式fromultralyticsimportYOLO modelYOLO(yolo26n.pt)# 加载预训练权重resultsmodel.train(datamy_dataset.yaml,epochs100,imgsz640,batch16,device0,projectruns/train,nameexp1,)⚠️ Windows 必加保护if__name____main__:fromultralyticsimportYOLO modelYOLO(yolo26n.pt)model.train(datamy_dataset.yaml,epochs100)6.3 核心参数详解必知参数参数默认说明调优data-数据集 yaml必须正确epochs100训练轮数小数据集可 200imgsz640输入尺寸小目标用 1280batch16批次大小显存不够就减小deviceauto设备0/cpu/[0,1]patience100早停轮数50 轮无提升则停lr00.01初始学习率不收敛可降到 0.001workers8数据加载线程Windows 可设 0优化器值说明auto自动选择默认 SGDSGD经典稳定Adam自适应 lrAdamWAdam 权重衰减MuSGDYOLO26 推荐6.4 batch 与显存GPU 显存batch (imgsz640)模型4 GB4~8yolo26n6 GB8~16yolo26n/s8 GB16~32yolo26n/s12 GB32~64yolo26s/m24 GB64~128yolo26m/l# 自动找最大 batchmodel.train(datadata.yaml,batch-1)# 显存不够model.train(batch8,imgsz480,ampTrue)# 混合精度省显存6.5 读懂训练输出输出目录runs/detect/train/ ├── weights/ │ ├── best.pt ⭐ 验证集最优 │ └── last.pt 最后一轮 ├── results.csv 指标记录 ├── results.png 训练曲线 ├── confusion_matrix.png ├── labels.jpg 标签分布 ├── train_batch0.jpg 增强可视化 └── val_batch0_pred.jpg日志解读Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 1/100 2.1G 1.234 0.567 1.123 128 640列期望趋势box_loss↓ 下降cls_loss↓ 下降mAP50-95↑ 上升6.6 多 GPU 训练# 双卡model.train(datadata.yaml,device[0,1])# 自动选最空闲 GPUmodel.train(datadata.yaml,device-1)⚠️Windows 多 GPU官方 PyTorch 在 Windows 上多 GPU 有限制建议 Linux/WSL2 或单卡device06.7 高级技巧# 断点续训modelYOLO(runs/detect/train/weights/last.pt)model.train(resumeTrue)# 冻结前 10 层model.train(freeze10,epochs50)# 缓存加速model.train(cacheTrue)# 需足够内存# 定期保存model.train(save_period10)# 每 10 轮存一次调参速查现象方案损失不降降 lr0 到 0.001过拟合增数据、增 epochs patience、dropout小目标差imgsz1280训练慢cacheTrue、增 workers、多 GPU6.8 完整训练脚本生产级训练脚本模板importtorchfromultralyticsimportYOLOdefmain():device0iftorch.cuda.is_available()elsecpuprint(fDevice:{device})modelYOLO(yolo26n.pt)resultsmodel.train(datamy_dataset.yaml,epochs100,imgsz640,batch16,devicedevice,patience50,saveTrue,save_period10,projectmy_project,namev1,exist_okTrue,plotsTrue,verboseTrue,)metricsmodel.val()print(fmAP50-95:{metrics.box.map:.4f})print(fBest:{model.trainer.best})if__name____main__:main()6.9 踩坑指南坑解决Windows 多进程报错加if __name__ __main__CUDA OOM减 batch/imgszmAP 一直 0检查标签格式和 data.yaml训练很慢确认 GPU 在用看 GPU_mem 列best.pt 不存在训练未完成或 val 集为空6.10 常见问题 FAQQ1训练多久合适A看 val mAP 曲线不再上升即可一般 50~300 epochs。Q2必须用预训练吗A强烈推荐。yolo26n.yaml从零训也可以但效果差很多。Q3训练中断了怎么办AresumeTrue从 last.pt 继续。6.11 本集小结训练检查清单数据验证 ✅ → 选 yolo26n.pt ✅ → 设 batch/device ✅ → 看曲线 ✅ → 拿 best.pt ✅← 第05集第07集验证评估 →