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

相关推荐
Antonio91526 分钟前
【图像处理】图像的基础几何变换
图像处理·人工智能·计算机视觉
智驱力人工智能2 小时前
基于视觉分析的人脸联动使用手机检测系统 智能安全管理新突破 人脸与手机行为联动检测 多模态融合人脸与手机行为分析模型
算法·安全·目标检测·计算机视觉·智能手机·视觉检测·边缘计算
qzhqbb5 小时前
神经网络 - 卷积神经网络
神经网络·计算机视觉·cnn
点云SLAM7 小时前
弱纹理图像特征匹配算法推荐汇总
人工智能·深度学习·算法·计算机视觉·机器人·slam·弱纹理图像特征匹配
王哈哈^_^8 小时前
YOLOv11视觉检测实战:安全距离测算全解析
人工智能·数码相机·算法·yolo·计算机视觉·目标跟踪·视觉检测
AI浩9 小时前
FeatEnHancer:在低光视觉下增强目标检测及其他任务的分层特征
人工智能·目标检测·目标跟踪
AI technophile9 小时前
OpenCV计算机视觉实战(29)——OpenCV DNN模块
opencv·计算机视觉·dnn
深度学习lover9 小时前
<数据集>yolo航拍交通目标识别数据集<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·航拍交通目标识别
Coovally AI模型快速验证9 小时前
视觉语言模型(VLM)深度解析:如何用它来处理文档
人工智能·yolo·目标跟踪·语言模型·自然语言处理·开源
王哈哈^_^10 小时前
【数据集+完整源码】水稻病害数据集,yolov8水稻病害检测数据集 6715 张,目标检测水稻识别算法实战训推教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计