【第五章:计算机视觉-项目实战之目标检测实战】2.目标检测实战:中国交通标志检测-(4)YOLOv8训练与测试

第五章:计算机视觉(Computer Vision)- 项目实战之目标检测实战

第二部分:目标检测实战:中国交通标志检测

第四节:YOLOv8训练与测试

在完成数据准备与 YOLOv8 模型的搭建之后,本节我们进入到 模型训练、验证与测试 的全过程。


1. 训练流程概述

YOLOv8 的训练主要包括以下步骤:

  1. 加载预训练权重(如 yolov8n.pt)作为起点;

  2. 定义数据集路径(data.yaml);

  3. 设置训练超参数(batch、epochs、imgsz);

  4. 执行训练,保存最佳权重文件(best.pt);

  5. 模型验证,查看指标(Precision、Recall、mAP);

  6. 模型测试,在新图像上推理可视化结果。


2. 模型训练

YOLOv8 提供了命令行接口,也支持 Python API。我们先看命令行方式:

python 复制代码
yolo detect train \
  model=yolov8n.pt \
  data=datasets/data.yaml \
  epochs=50 \
  imgsz=640 \
  batch=16 \
  workers=4 \
  name=traffic_sign_yolov8

参数说明:

  • model:预训练模型,可选 yolov8n/s/m/l/x。

  • data:数据集配置文件。

  • epochs:训练轮数(推荐 50~100)。

  • imgsz:图像输入大小。

  • batch:批量大小。

  • name:保存实验结果的文件夹名。

训练完成后,会在 runs/detect/traffic_sign_yolov8/weights/ 下生成:

  • last.pt:最后一次保存的权重;

  • best.pt:验证效果最佳的权重。


3. 模型验证

YOLOv8 在训练过程中会自动验证,并绘制曲线:

  • loss 曲线(训练/验证集);

  • Precision-Recall 曲线

  • mAP@0.5 和 mAP@0.5:0.95 曲线

也可以单独执行验证:

python 复制代码
yolo detect val \
  model=runs/detect/traffic_sign_yolov8/weights/best.pt \
  data=datasets/data.yaml \
  imgsz=640

输出结果包括:

  • Precision、Recall、F1-score;

  • mAP@0.5 和 mAP@0.5:0.95;

  • 验证集预测可视化。


4. 模型测试(推理)

在新数据或测试集上进行推理:

python 复制代码
yolo detect predict \
  model=runs/detect/traffic_sign_yolov8/weights/best.pt \
  source=datasets/images/test \
  imgsz=640 \
  conf=0.25 \
  save=True

参数说明:

  • source:测试图片或文件夹;

  • conf:置信度阈值(默认 0.25);

  • save=True:保存预测结果。

预测结果会保存在 runs/detect/predict/ 文件夹下,包含检测框、类别和置信度。


5. Python API 方式训练与推理

更推荐使用 Python 脚本调用,方便与数据预处理和可视化结合。

python 复制代码
from ultralytics import YOLO

# 加载模型
model = YOLO("yolov8n.pt")  

# 训练
model.train(
    data="datasets/data.yaml",
    epochs=50,
    imgsz=640,
    batch=16,
    name="traffic_sign_yolov8"
)

# 验证
metrics = model.val()
print(metrics)

# 测试(推理)
results = model.predict(
    source="datasets/images/test",
    conf=0.25,
    save=True
)

6. 可视化与结果分析

YOLOv8 默认会生成可视化图表:

  • results.png:训练曲线(loss, P, R, mAP)。

  • confusion_matrix.png:混淆矩阵。

  • PR_curve.png:精确率-召回率曲线。

这些图表能帮助我们诊断:

  • 过拟合(训练 loss 持续下降,验证 loss 不降反升);

  • 欠拟合(loss 停留在较高水平);

  • 类别不平衡(混淆矩阵某些类别检测效果差)。


7. 小结

在本节中,我们完成了 YOLOv8 的训练与测试

  • 学会了命令行与 Python API 两种方式训练模型;

  • 理解了训练过程中的关键超参数;

  • 掌握了验证与测试的指标与可视化方法。

下一步,我们将进入 第四节:中国交通标志检测完整 Pipeline 实现 ,结合 数据预处理、模型训练、推理与评估,搭建一个可复用的完整目标检测系统。

相关推荐
FL16238631293 小时前
无人机视角河道多目标垃圾检测数据集VOC+YOLO格式1736张6类别
yolo·无人机
XIAO·宝4 小时前
深度学习------YOLOV1和YOLOV2
人工智能·深度学习·yolo
Antonio9154 小时前
【图像处理】图片的前向映射与后向映射
图像处理·人工智能·计算机视觉
Python智慧行囊5 小时前
图像处理-opencv(一)
人工智能·opencv·计算机视觉
禾昂.6 小时前
从 YOLO V1 到 V2:目标检测领域的一次关键技术迭代
yolo·目标检测·目标跟踪
格林威8 小时前
UV 紫外相机在半导体制造领域的应用
人工智能·数码相机·opencv·计算机视觉·视觉检测·制造·uv
茜茜西西CeCe8 小时前
数字图像处理-图像增强(2)
人工智能·算法·计算机视觉·matlab·数字图像处理·图像增强·陷波滤波器
应用市场9 小时前
OpenCV深度学习:目标检测、人脸识别与智能视频分
深度学习·opencv·目标检测
~kiss~10 小时前
图像的脉冲噪声和中值滤波
图像处理·人工智能·计算机视觉
LiJieNiub12 小时前
YOLOv3:目标检测领域的经典革新
人工智能·计算机视觉·目标跟踪