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

相关推荐
后端小张4 小时前
智眼法盾:基于Rokid AR眼镜的合同条款智能审查系统开发全解析
人工智能·目标检测·计算机视觉·ai·语言模型·ar·硬件架构
浩浩的代码花园4 小时前
自研端侧推理模型实测效果展示
android·深度学习·计算机视觉·端智能
这张生成的图像能检测吗7 小时前
(论文速读)EfficientTrain++: 高效视觉骨干训练的通用课程学习
人工智能·深度学习·计算机视觉·训练方法
翔云 OCR API13 小时前
人脸识别API开发者对接代码示例
开发语言·人工智能·python·计算机视觉·ocr
AndrewHZ14 小时前
【图像处理基石】如何在图像中提取出基本形状,比如圆形,椭圆,方形等等?
图像处理·python·算法·计算机视觉·cv·形状提取
音视频牛哥18 小时前
轻量级RTSP服务的工程化设计与应用:从移动端到边缘设备的实时媒体架构
人工智能·计算机视觉·音视频·音视频开发·rtsp播放器·安卓rtsp服务器·安卓实现ipc功能
audyxiao0011 天前
期刊研究热点扫描|一文了解计算机视觉顶刊TIP的研究热点
人工智能·计算机视觉·transformer·图像分割·多模态
paopao_wu1 天前
目标检测YOLO[04]:跑通最简单的YOLO模型训练
人工智能·yolo·目标检测
AI科技星1 天前
为什么变化的电磁场才产生引力场?—— 统一场论揭示的时空动力学本质
数据结构·人工智能·经验分享·算法·计算机视觉
深蓝海拓1 天前
opencv的模板匹配(Template Matching)学习笔记
人工智能·opencv·计算机视觉