YOLOv8 的训练配置和全流程命令教程

🚀 YOLOv8 的训练配置和全流程命令教程!(Python API 版本)

在准备工作中中,我们已经用脚本将 Kaggle 交通标志 YOLO 数据集整理为标准结构并裁剪为标准输入大小:

traffic/
  images/train/
  images/val/
  labels/train/
  labels/val/

现在,我们将使用 YOLOv8 的 Python API 完成模型训练任务。相比命令行方式,Python 接口更适合:

  • 写脚本自动批量测试参数
  • 与其他 Python 工程集成
  • 灵活控制训练过程、模型导出

✅ 本文主要内容

✅ YOLOv8 Python API 安装与使用
✅ 编写 data.yaml 文件
✅ 编写 Python 训练脚本
✅ 关键参数说明与调优
✅ 保存和评估结果说明


📦 1️⃣ YOLOv8 安装

推荐使用官方 Ultralytics 包:

pip install ultralytics

测试版本:

import ultralytics
print(ultralytics.__version__)  # 推荐 ≥8.x

📝 2️⃣ data.yaml 文件编写

我们需要一个 data.yaml 文件放在 traffic_crop/ 目录下:

traffic_crop/
  data.yaml
  images/train/*.jpg
  labels/train/*.txt

内容如下 👇

path: ./traffic_crop

train: images/train
val: images/val

names:
  0: prohibitory
  1: danger
  2: mandatory
  3: other

🧠 3️⃣ Python 训练脚本(最小可用)

from ultralytics import YOLO

# 1. 加载模型(可选 nano, small, medium 等)
model = YOLO("yolov8n.pt")  # 也可换 yolov8s.pt 等

# 2. 开始训练
model.train(
    data="traffic_crop/data.yaml",
    epochs=100,
    imgsz=640,
    batch=16,
    project="traffic-yolov8",
    name="exp",
    device=0  # GPU 0,或 "cpu"
)

🔧 4️⃣ 参数说明

参数说明
data指向 data.yaml 路径
epochs训练轮数
imgsz输入图像尺寸(建议 416~640)
batch批大小(受限于显存)
project保存输出的目录
name本次实验的名字
device训练设备编号或 “cpu”

🚀 5️⃣ 训练结果目录结构

训练完成后,你会在 traffic-yolov8/exp/ 目录下看到:

traffic-yolov8/
  exp/
    weights/
      best.pt     ← 验证集效果最好的模型
      last.pt     ← 最后一轮模型
    results.png   ← Loss/Precision/mAP 曲线
    confusion_matrix.png
    ...

很好,我们把上面第二篇博客里的「✅ 6️⃣ 模型评估」部分重新写得更完整、详细,并确保是适合CSDN 博客里的标准小节格式,能直接复制到你的文章里用。


✅ 6️⃣ 模型评估(完整 Python API 示例)

当训练完成后,Ultralytics YOLO 会自动在你的项目目录下生成模型权重、训练日志、可视化图表等。

最重要的输出是:

traffic-yolov8/
  exp/
    weights/
      best.pt   ← 验证集指标最好的模型
      last.pt   ← 最后一轮的模型

如何在 Python 里加载并评估它们?


📌 6.1 验证(验证集评估)

使用 .val() 方法可以在验证集上评估 mAP、Recall、Precision 等指标。

from ultralytics import YOLO

# 加载训练好的模型权重
model = YOLO("traffic-yolov8/exp/weights/best.pt")

# 在验证集上评估
metrics = model.val(data="traffic/data.yaml")

调用完后,会在控制台输出类似:

metrics/precision  0.89
metrics/recall     0.85
metrics/mAP_0.5    0.92
metrics/mAP_0.5:0.95 0.76

✅ 你也可以在 Python 里访问这些结果:

print(f"Precision: {metrics.box.precision:.3f}")
print(f"Recall: {metrics.box.recall:.3f}")
print(f"mAP@0.5: {metrics.box.map50:.3f}")
print(f"mAP@0.5:0.95: {metrics.box.map:.3f}")

📌 6.2 可视化评估结果

.val() 调用后会自动生成一个目录,比如:

runs/detect/val/

里面会包含:

  • labels.jpg → 标签分布可视化
  • confusion_matrix.png → 混淆矩阵
  • results.png → Loss 曲线、mAP 曲线
  • F1_curve.png → F1 分数

✅ 这些图片可以直接用于写论文或报告!


📌 6.3 自定义验证命令

如果想用不同数据或参数评估,也可以在 Python 中指定更多参数:

metrics = model.val(
    data="traffic/data.yaml",
    imgsz=640,
    batch=16,
    conf=0.001,
    iou=0.6,
    save_json=True  # 生成 COCO 格式结果
)

📌 6.4 批量评估多个模型

如果你想比较多个版本的模型,也可以写个简单的循环:

for ckpt in ["best.pt", "last.pt"]:
    model = YOLO(f"traffic-yolov8/exp/weights/{ckpt}")
    metrics = model.val(data="traffic/data.yaml")
    print(f"{ckpt} -> mAP@0.5: {metrics.box.map50:.3f}")

✅ 总结

  • .val() 是 YOLOv8 的官方验证入口
  • 可以自动在验证集跑评估指标
  • 同时生成可视化图表
  • 方便在 Python 脚本里批量跑实验、记录结果

🎯 7️⃣ 自定义增强和高级配置(可选)

你可以用 cfg= 加载 YAML 超参数文件,或者传递关键字参数:

model.train(
    data="traffic/data.yaml",
    epochs=150,
    imgsz=512,
    lr0=0.001,
    optimizer="AdamW",
    augment=True,
    hsv_h=0.015,  # 色调增强
    flipud=0.5,
    fliplr=0.5,
)

完整超参数参考文档:
📚 https://docs.ultralytics.com/modes/train/


❤️ 总结

在本篇中,你学会了如何使用 Ultralytics YOLOv8 的 Python API 来训练模型:

✅ 加载预训练模型
✅ 编写 data.yaml
✅ 启动训练并查看结果
✅ 进行模型评估和调参

相比命令行,Python API 更适合与你的项目或 UI 集成,也方便部署到嵌入式设备。


🔜 下一篇预告

✨ 第四篇:YOLOv8 模型导出与香橙派部署指南

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值