1. 项目简介
本项目面向传送带场景的异物检测任务,基于 YOLOv8 完成从数据集构建、模型训练、结果可视化到桌面端系统集成的完整深度学习工程流程。
项目目标是对传送带图像中的目标进行快速识别,并输出检测框、类别与置信度,支持在图形界面中进行模型管理、图片检测与历史记录查看。
2. 项目技术栈
- 深度学习框架:
PyTorch - 检测模型与训练接口:
Ultralytics YOLOv8 - 数据与结果处理:
Pandas、NumPy - 可视化:
Matplotlib - 图像处理:
OpenCV - 桌面端系统:
PyQt6 - 开发语言:
Python 3.9
3. 数据集构建与处理
3.1 数据组织方式
项目采用 YOLO 标注格式,核心目录如下:
- 图片目录:
datasets/images - 标注目录:
datasets/labels - 数据集配置:
datasets/VOC.yaml
类别定义为 2 类:
0: yiwu1: maogan
3.2 数据规模与样本类型
- 当前标注文件数量:3114 (
datasets/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
训练流程包括:
- 准备训练输出目录(
train_result) - 自动构建训练/验证数据配置
- 加载预训练模型
yolov8n.pt - 执行训练并保存实验结果到
train_result/exp - 将最佳权重复制为统一入口(若存在)
核心训练参数(来自 train_result/exp/args.yaml):
epochs = 100imgsz = 640batch = 16device = 0workers = 4optimizer = autolr0 = 0.01weight_decay = 0.0005mosaic = 1.0mixup = 0.0fliplr = 0.5
5. 训练指标与结果解读
训练记录文件:train_result/exp/results.csv
5.1 关键指标
- 最佳
mAP50:0.86525 - 最佳
mAP50-95:0.64020 - 最佳
Precision:0.87757 - 最佳
Recall:0.83305
末轮(Epoch 100)指标:
Precision = 0.84637Recall = 0.80207mAP50 = 0.84912mAP50-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. 深度学习开发过程总结
本项目体现了完整的深度学习工程闭环:
- 数据集构建与清洗:按 YOLO 格式组织图像与标签,并自动生成训练/验证配置
- 模型训练与调优:基于 YOLOv8 预训练权重进行迁移学习,结合批量、学习率与增强参数优化结果
- 指标评估与可解释可视化:通过 loss、mAP、P/R 曲线与关键 epoch 汇总表进行效果分析
- 系统集成与功能开发:将模型能力封装到 PyQt6 桌面端,实现模型管理、检测执行、结果展示与记录管理
该流程可直接作为后续扩展视频流实时检测、摄像头在线推理、模型版本管理与部署优化的基础。











