基于YOLOv8的传送带异物检测系统

1. 项目简介

本项目面向传送带场景的异物检测任务,基于 YOLOv8 完成从数据集构建、模型训练、结果可视化到桌面端系统集成的完整深度学习工程流程。

项目目标是对传送带图像中的目标进行快速识别,并输出检测框、类别与置信度,支持在图形界面中进行模型管理、图片检测与历史记录查看。


2. 项目技术栈

  • 深度学习框架:PyTorch
  • 检测模型与训练接口:Ultralytics YOLOv8
  • 数据与结果处理:PandasNumPy
  • 可视化:Matplotlib
  • 图像处理:OpenCV
  • 桌面端系统:PyQt6
  • 开发语言:Python 3.9

3. 数据集构建与处理

3.1 数据组织方式

项目采用 YOLO 标注格式,核心目录如下:

  • 图片目录:datasets/images
  • 标注目录:datasets/labels
  • 数据集配置:datasets/VOC.yaml

类别定义为 2 类:

  • 0: yiwu
  • 1: maogan

3.2 数据规模与样本类型

  • 当前标注文件数量:3114datasets/labels
  • 训练代码仅使用"图片与标注一一对应"的有效样本
  • 图片后缀按代码配置支持:.jpg.jpeg.png.bmp

说明:数据准备逻辑会过滤无标注对应的图片,因此有效训练样本数量以"图片-标注配对结果"为准。

3.3 数据划分与生成

config/dataset_config.py 中完成数据划分:

  • 验证集比例:val_ratio = 0.2
  • 随机种子:seed = 42
  • 输出:自动生成 data.yaml 与 train/val 列表文件,供 YOLO 训练调用

4. 模型训练过程

训练入口:train.py

训练流程包括:

  1. 准备训练输出目录(train_result
  2. 自动构建训练/验证数据配置
  3. 加载预训练模型 yolov8n.pt
  4. 执行训练并保存实验结果到 train_result/exp
  5. 将最佳权重复制为统一入口(若存在)

核心训练参数(来自 train_result/exp/args.yaml):

  • epochs = 100
  • imgsz = 640
  • batch = 16
  • device = 0
  • workers = 4
  • optimizer = auto
  • lr0 = 0.01
  • weight_decay = 0.0005
  • mosaic = 1.0
  • mixup = 0.0
  • fliplr = 0.5

5. 训练指标与结果解读

训练记录文件:train_result/exp/results.csv

5.1 关键指标

  • 最佳 mAP500.86525
  • 最佳 mAP50-950.64020
  • 最佳 Precision0.87757
  • 最佳 Recall0.83305

末轮(Epoch 100)指标:

  • Precision = 0.84637
  • Recall = 0.80207
  • mAP50 = 0.84912
  • mAP50-95 = 0.63345

5.2 收敛表现(整体趋势)

  • 训练损失 train/box_loss 从约 1.406 降至约 0.587
  • 验证损失 val/box_loss 从约 1.169 降至约 0.856
  • mAP 指标整体前期快速提升,中后期进入平台期并小幅波动

6. 可视化图说明

可视化代码:utils/visualize_results.py

输出目录:train_result/visualizations

  • train_loss.png:训练损失曲线(box/cls/dfl),用于观察训练阶段拟合过程
  • val_loss.png:验证损失曲线,用于评估泛化能力与过拟合风险
  • metrics.png:Precision、Recall、mAP50、mAP50-95 变化曲线,反映检测性能
  • learning_rate.png:学习率变化曲线,辅助判断优化器调度是否稳定
  • all_metrics.png:多指标总览图,便于横向比较不同指标走势
  • summary_table.png:关键 Epoch(首轮/最优/末轮)指标对比表,便于结果汇报

7. 系统功能(PyQt6 桌面端)

系统入口:ui/main.py

当前已集成功能:

  • 登录/注册(本地用户数据存储)
  • 图片识别:打开图片、执行检测、查看目标明细、导出检测图与 CSV
  • 视频识别页面(界面骨架,便于继续接入实时推理)
  • 摄像头识别页面(界面骨架,便于继续接入实时推理)
  • 检测历史:记录与查看检测结果
  • 模型管理:配置权重路径、加载模型、设置 conf/iou/max_det 参数

默认模型路径按相对结构设计:

  • train_result/exp/weights/best.pt

8. 项目结构

复制代码
c152/
├─ app_data/                    # 用户数据
├─ config/
│  └─ dataset_config.py         # 数据集划分与 data.yaml 生成
├─ datasets/
│  ├─ images/                   # 原始图片
│  ├─ labels/                   # YOLO 标注
│  └─ VOC.yaml                  # 类别配置
├─ train_result/
│  ├─ exp/                      # 训练实验输出(results.csv、args.yaml、weights)
│  └─ visualizations/           # 指标可视化图
├─ ui/
│  ├─ main.py                   # GUI 入口
│  ├─ main_window.py            # 主窗口
│  ├─ login_window.py           # 登录窗口
│  ├─ model_service.py          # 模型加载与推理服务
│  ├─ styles.py                 # QSS 样式
│  └─ pages/                    # 功能页面模块
├─ utils/
│  └─ visualize_results.py      # 训练结果可视化
├─ train.py                     # 训练入口
└─ requirements.txt             # 依赖列表

9. 深度学习开发过程总结

本项目体现了完整的深度学习工程闭环:

  1. 数据集构建与清洗:按 YOLO 格式组织图像与标签,并自动生成训练/验证配置
  2. 模型训练与调优:基于 YOLOv8 预训练权重进行迁移学习,结合批量、学习率与增强参数优化结果
  3. 指标评估与可解释可视化:通过 loss、mAP、P/R 曲线与关键 epoch 汇总表进行效果分析
  4. 系统集成与功能开发:将模型能力封装到 PyQt6 桌面端,实现模型管理、检测执行、结果展示与记录管理

该流程可直接作为后续扩展视频流实时检测、摄像头在线推理、模型版本管理与部署优化的基础。

相关推荐
强风7942 小时前
OpenCV基础入门
人工智能·opencv·计算机视觉
小超同学你好2 小时前
Langgragh 19. Skills 4. SkillToolset 式设计 —— 工具化按需加载的 Skills(含代码示例)
人工智能·语言模型·langchain
人工智能培训2 小时前
如何衔接知识图谱与图神经网络
人工智能·神经网络·知识图谱
2301_776508722 小时前
使用Python处理计算机图形学(PIL/Pillow)
jvm·数据库·python
全栈凯哥2 小时前
25.Python SSH 远程执行完全指南(SSHExecutor)
python·ssh
李昊哲小课2 小时前
PySide6 记事本应用开发教程
python·pyqt·pyside
火星资讯2 小时前
Zenlayer Fabric Port 新加坡首发:城域免费,全球畅连
人工智能·科技
新缸中之脑2 小时前
20个Nano Banana 2创意工作流
人工智能