【第五章:计算机视觉-项目实战之目标检测实战】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 实现 ,结合 数据预处理、模型训练、推理与评估,搭建一个可复用的完整目标检测系统。

相关推荐
berling005 小时前
【论文阅读 | TGRS 2025 | DHANet:用于多模态无人机目标检测的双流分层交互网络】
论文阅读·目标检测·无人机
IT古董6 小时前
【第五章:计算机视觉-项目实战之图像分割实战】1.图像分割理论-(2)图像分割衍生:语义分割、实例分割、弱监督语义分割
人工智能·计算机视觉
一朵小红花HH8 小时前
SimpleBEV:改进的激光雷达-摄像头融合架构用于三维目标检测
论文阅读·人工智能·深度学习·目标检测·机器学习·计算机视觉·3d
清风吹过10 小时前
因果&Transformer架构论文分享:机器人技术和计算机视觉的位姿估计
计算机视觉·机器人·transformer
nju_spy10 小时前
计算机视觉 - 物体检测 开山鼻祖 R-CNN系列:Fast R-CNN、Faster R-CNN、Mask R-CNN
人工智能·计算机视觉·物体检测·fast r-cnn·r-cnn·mask r-cnn
这张生成的图像能检测吗10 小时前
(论文速读)DiffBlender:可组合和通用的多模态文本到图像扩散模型
人工智能·深度学习·计算机视觉·文生图·扩散模型
二向箔reverse14 小时前
从特征到应用:用 dlib+OpenCV 实现实时疲劳检测(基于眼睛纵横比)
人工智能·opencv·计算机视觉
数据堂官方账号15 小时前
版权数据集上新 | 覆盖大模型、多模态大模型、语音识别、语音合成及计算机视觉等多领域
人工智能·计算机视觉·大模型·数据集·语音识别·语音合成·多模态大模型
CV实验室15 小时前
IEEE TGRS 2025 | 突破小波U-Net局限,ASCNet实现更精准的红外去条纹!
人工智能·计算机视觉·论文