资讯动态

YOLOv8 训练实操教程:从预训练模型开始,Ultralytics 统一 API 入门

发布时间:2026/8/19 13:58:50 来源:尧图企业网站定制
《YOLO 系列训练实操·全 7 篇》——从 YOLOv5 到 YOLO26每篇独立成文、全部可复现。本篇为系列 3/7是全系列的分水岭前两篇v5/v6的 Anchor 架构在此被 Anchor-Free DFL 全面超越同一数据 mAP50 从 0.46 / 0.29 跃到 0.68。系列进度✅ 1/7 YOLOv50.46→ ✅ 2/7 YOLOv60.29→ ✅3/7 本文YOLOv8·0.68→ ⏳ 4/7 YOLOv9PGI→ 5/7 YOLOv10无 NMS→ 6/7 YOLO11 → 7/7 YOLO26边缘端到端。本文所有版本号、训练指标均为 2026-08 真实运行输出。1. 背景目的衔接前两篇同一数据集、同配置下v51/7mAP50 0.46、v62/70.29——Anchor 耦合头的框架已经触顶。v8 用Anchor-Free DFL把同配指标提到0.68insect 少样本类从 0.07~0.13 跃到 0.47这是全系列第一次换代带来量级提升也确立了后续版本v9/v10/11/26的API 底座。YOLOv8 是UltralyticsYOLOv5 原班团队于 2023 年推出的新一代框架。它继承了 YOLOv5 的易用性一条命令训练/验证/推理并重构了模型结构C2f 模块、解耦头、Anchor-Free DFL 等同时把检测、分割、分类、姿态估计、旋转框统一进同一个 API——这也是后续 YOLO11、YOLO26 等版本的 API 底座。本文目标用官方 COCO 预训练权重yolov8n.pt在自备的 4 类数据集上微调训练并完成验证指标评估。你将掌握ultralytics包的一行式训练 / 验证 / 推理Python API 与 CLIv8 风格数据集配置pathtrain/val从预训练权重训练、从 checkpoint 续训3.0M 级轻量模型在 8 GB 显存卡的完整微调体验图 1YOLOv8 一次前向流程示意输入 → C2f 主干 SPPF → PAN-FPN 颈部 → 解耦检测头 → NMS2. 目录背景目的目录环境和数据集准备实操以及截图伴有原理解释4.1 安装 ultralytics 与预训练权重4.2 数据配置v8 风格 yaml4.3 从预训练权重开始训练4.4 训练日志与曲线解读含原理4.5 网络结构原理解读4.6 深度原理关键痛点拆解4.7 操作异常实录测试验证总结3. 环境和数据集准备3.1 环境搭建通用示例conda create-nmulti-agent-demopython3.11numpy conda activate multi-agent-demo pipinstallultralytics本文实测环境供对照Python 3.11.15 / numpy 2.4.4 / torch 2.10.0cu128CUDA 可用/ torchvision 0.25.0cu128 /ultralytics 8.4.118/ NVIDIA RTX 5060 Ti8 GB 显存。3.2 数据集准备使用标准 YOLO 检测格式images/{train,val}labels/{train,val}与系列前两篇相同。本文以 4 类检测数据集为例person/car/dog/insecttrain 1315 张图、val 298 张图训练标注分布实测 person 1220、car 428、dog 347、insect 16 条。图 2训练集类别标注分布——insect 仅 16 条对比car 428 条后文指标中会看到 v8 对少样本类别的表现。4. 实操以及截图伴有原理解释4.1 安装 ultralytics 与预训练权重pipinstallultralytics预训练权重yolov8n.pt约 6.2 MBCOCO 80 类预训练3,157,200 参数放到当前目录即可训练时若本地不存在ultralytics 会自动从官方源下载。在 Python 中确认加载成功并查看类别名COCO 80 类fromultralyticsimportYOLO modelYOLO(yolov8n.pt)print(len(model.names))# 804.2 数据配置v8 风格 yamlv8 的数据配置精简为树状结构区别于 v5/v6 的平铺写法关键在path字段# objdet.yamlpath:dataset# 数据集根目录train:images/train# 相对 pathval:images/valnc:4names:[person,car,dog,insect]说明ultralytics 通过 “images ↔ labels” 的同名映射自动找到标注文件dataset/labels/{train,val}/*.txt无需在配置里单独写标签路径。4.3 从预训练权重开始训练CLI 一行式命令10 epochsyolo detect train\modelyolov8n.pt\dataobjdet.yaml\epochs10batch16imgsz416device0等价 Python API便于程序化控制分段续训fromultralyticsimportYOLO modelYOLO(yolov8n.pt)# 或续训时传上一段 best.ptmodel.train(dataobjdet.yaml,epochs10,batch16,imgsz416,device0,workers2,projectruns,nameexp)输出默认到runs/detect/exp训练/runs/detect/train等自动保存best.pt/last.pt。本文实测因单命令时长限制分 3 段续跑3 4 3 epoch第 2/3 段将上一段的runs/train/exp*/weights/best.pt作为model继续微调即从 checkpoint 续训与一次性 10 epochs 等价。8 GB 显存下 batch 16 / imgsz 416 实测占用约 0.99 GB仅用约 1/8 显存——v8n 非常省资源。训练耗时实测3 epochs 用时0.011 hours约 40 秒训练约 7 it/s10 epochs 全程 2 分钟以内RTX 5060 Ti。4.4 训练日志与曲线解读含原理训练进度条节选真实输出Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 3/3 0.99G 1.714 2.006 1.009 49 416逐 epoch 真实指标汇总来自runs/*/results.csv10 epochs 实测epochbox_losscls_lossdfl_lossmAP50mAP50-9501.82303.59541.09380.32150.175611.78612.31221.06210.48830.298721.72732.06651.01650.58100.334731.45751.63400.96070.57580.339741.47591.49240.96610.56880.347151.53911.50590.95430.63710.409961.44931.28830.95330.67620.446071.32971.15270.91860.57780.332381.37701.18590.93850.64130.363191.39421.22190.91440.68410.4199损失原理YOLOv8 用三分量损失——box_lossCIoU 回归cls_lossBCE 分类dfl_lossDistribution Focal Loss用于更精细的边界框分布回归——这也是它与 v5/v6 的差异点。图 3训练损失曲线真实数据图 4验证 mAP 曲线真实数据——COCO 预训练起步第 1 个 epoch 结束 mAP50 已达 0.32第 9 轮 0.684迁移学习收敛极快。配图复现本文曲线/示意图由随文脚本make_figs.py仅依赖 numpy 标准库生成用你训练后的results.csv数据替换脚本中的数值即可重绘。4.5 网络结构原理解读YOLOv8 相对 v5/v6 的关键变化对应图 1BackboneC2f跨阶段部分连接升级版。用两个分支的 “残差堆叠 concat” 结构替代 v5 的 C3参数量略增但梯度流更丰富末端仍为 SPPF 聚合多尺度感受野。NeckPAN-FPN。上采样 下采样双向路径融合 P3/P4/P5 特征与 v5 类似但后者在 v8 中已统一进 C2f 模块表达。Head解耦头Decoupled。分类与回归分支彻底分离v5 是耦合头回归分支直接用Anchor-Free方式预测中心与宽高并用DFL把框边距建模为分布标签分配用 Task-Aligned Assigner。API 统一YOLO()一个类承载 detect / segment / classify / pose / obb 五种任务后续版本的生态都建立在此之上。推理折叠fused后模型实测73 层3,006,428 参数0 梯度低于 COCO 官方 3.2M 表述因 4 类 head 更小。4.6 深度原理关键痛点拆解前面讲了结构上有什么这里回答训练与调参中最常问的为什么每个痛点配图。痛点 1为什么输入必须是 32 的倍数416 而不是 414YOLOv8 主干同样有5 次 stride2 下采样累计倍数 2⁵32。416 13×32 → 末级输出 13×13 整数网格若是 414特征图取整后网格与目标中心错位精度小幅下降。imgsz 永远取 32 倍数320/416/640。训练时框架会 letterbox 自动补齐到 32 倍数。痛点 2三尺度P3/P4/P5各自管什么416 输入P513×13stride 32大目标、P426×26stride 16中目标、P352×52stride 8小目标。小目标在 P5 上可能连 1 格都占不满必须靠高密度 P3 兜底这也是小目标检测普遍难、需要更高输入分辨率的根源。痛点 3v8 的 anchor-free 到底免掉了什么YOLOv5/v6 用 9 组预置 anchors IoU/SimOTA 匹配v8 去掉 anchors每个格子直接预测中心点偏移 到四条边的距离配合痛点 7 的 DFL标签分配改用Task-Aligned 动态分配同时考虑分类得分与 IoU 的联合代价选正样本。省掉的anchors 的设计、AutoAnchor 聚类、anchor 相关的超参数代价回归从偏移变成绝对量因此 DFL/分布回归成为必要补充。文章开头 AutoAnchor 一节在 v5/v6 中频繁出现本篇则完全不需要——这正是 anchor-free 的直观收益。痛点 4为什么最后一步还要 NMS即使 anchor-free多格子/多尺度仍会输出大量重叠框。NMS按置信度排序 → 保留最高 → 抑制 IoU阈值的重叠框默认 0.45。置信度阈值0.25与 IoU 阈值是调参重点v10/v26 推出的 E2E 无 NMS 训练正是想省掉这道后处理。痛点 5显存与 batch、imgsz 的关系8 GB 卡怎么配开销 ≈batch × imgsz²。416→640 即 ×2.37。本文实测v8n 416 batch16 下 GPU 占用0.99 GB日志 GPU_mem。显存紧张先减 batch线性再降 imgsz平方。痛点 6从预训练权重起步为什么收敛快COCO 预训练 通用视觉特征库边缘/纹理/形状微调只换 80→4 类输出头 全网络小步适配。反映在数据上第 1 个 epoch 结束 mAP50 已达 0.32同一数据集v5 首轮 0.0008、v6 0.094说明 v8 的预训练配方与数据增强让迁移性能更早起飞。痛点 7v8 专属C2f 和 DFL 分别解决了什么C2f图 F 上半输入 1×1 卷积后split 成两半一半直接走后续另一半串 N 个 Bottleneck 残差块末端与旁路concat。相比 v5 的 C3C2f 让更宽的梯度通路保留浅层信息——网络加深时不丢细节是 v8 精度提升的结构基础。DFLDistribution Focal Loss图 F 下半回归头不再输出一个边框宽度数值而是输出16 个 bin 的 softmax 分布用期望值作为预测坐标。分布建模让回归更平滑、对模糊边界更鲁棒也天然适配 anchor-free 的四边距预测。4.7 操作异常实录实操中遇到的异常与分析通用化描述供读者对照。异常 1训练输出目录落点与预期不一致Windows 特殊路径场景现象相对路径形式的project如../../runs在部分 Windows 目录含链接/别名/junction环境下输出被写到解析后的真实路径侧与直觉的当前工作目录不一致导致续训时找不到权重。原因相对路径基于进程实际工作目录解析跨工具/跨进程shell vs Python时路径视角可能不同。解决训练脚本中基于脚本所在位置推导绝对路径Path(__file__).resolve().parent逐级上溯后再拼接project/weights彻底摆脱 “当前目录在哪” 的歧义养成读目录确认落点的习惯。状态已解决改用绝对路径后输出与续训均稳定。异常 2源数据 JPEG 损坏告警现象训练/验证时反复出现Corrupt JPEG data: 2 extraneous bytes before marker 0xd9。原因数据集中少量 JPEG 文件尾部多余字节OpenCV 自动容错并跳过。解决无需处理不影响训练与指标。状态已解决自动容错。异常 3分段训练超时中断现象两次串行分段训练中第二段可能因累积耗时被运行时限中断epoch 未完成、未保存 ckpt。解决每段单独运行并确认weights/下已生成best.pt再启动下一段。状态已解决重跑该段。5. 测试验证5.1 验证集指标val使用第 3 段输出的 best.ptyolo detect valmodelruns/train/exp3/weights/best.pt\dataobjdet.yamlimgsz416batch16device0实测输出val 集 298 张 / 420 个实例类别实例数PRmAP50mAP50-95person2510.8110.7090.7710.404car1000.7270.8780.8420.618dog620.7790.5690.6480.325insect70.4820.7140.4740.334all4200.7000.7180.6840.420四类全部达标mAP50 从 0.474 到 0.842insect仅训练 16 条也达到了 0.474明显好于前两篇同数据v5 0.131 / v6 0.069——v8 的设计Anchor-Free DFL 更强增强对少样本类别更友好。推理速度实测preprocess 0.3ms, inference 1.0ms, postprocess 0.8msbatch 16416×416GPU。6. 总结一句话定位YOLOv8 是本系列的分水岭——它以全任务统一 API Anchor-Free/DFL 精度范式终结了 v5 时代后续 v9/v10/11/26 全部建立在同一套 API 与训练哲学之上。实测复盘同一数据集 10 epochsRTX 5060 Tiultralytics 8.4.118项实测一句话判断mAP50 / mAP50-950.684 / 0.420独立复测同值三篇最高较 v5 提升约 49%单张推理1.0 msGPU 416比 v6 稍慢属 Anchor-Free 回归路径的正常成本显存占用0.99 GBbatch 16 416n 模型友好训练耗时10 epochs ≈ 2 分钟全系列最快配方成熟系列同配置对比同一数据集、同样 10 epochs、同机复测版本mAP50mAP50-95推理 ms少样本类 insect mAP50YOLOv50.4600.2241.10.131YOLOv60.2870.1960.750.069YOLOv80.6840.4201.00.474核心机制实证对应 4.6 深度原理DFL 分布回归 Task-Aligned 分配的价值在最难处体现——insect 仅 16 条训练样本mAP50 仍达 0.474v5 0.131 / v6 0.069C2f 更宽的梯度通路让第 1 个 epoch 即达 0.32v5 首轮 0.0008。这些数字正是Anchor-Free 分布回归范式收益的直接证据。诚实局限推理速度1.0 ms略逊于重参数化的 v60.75 ms回归精度有上限追求更快需 v6 部署路线、追求端到端无 NMS 需看本系列 v10/v26生态强依赖 ultralytics 包与网络。决策建议新项目默认起点——精度、速度、多任务、生态四者最平衡无语义分割等特殊需求基本无需再回头看 v5/v6。踩坑速记训练脚本建议基于脚本位置推导绝对路径避免输出目录歧义4.7 异常 1分段续训先确认best.pt异常 3Corrupt JPEG可忽略异常 2。下集预告系列 4/7YOLOv9——PGI 可编程梯度信息从训练机制对抗信息瓶颈训练方法论第一次当主角。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价