基于 YOLOv8 的轴承缺陷检测系统

基于 YOLOv8 的轴承缺陷检测系统

一、项目简介

本系统基于 YOLOv8 深度学习目标检测模型和 PyQt6 图形界面框架开发,是一款面向轴承表面缺陷智能识别的桌面应用。系统提供从模型训练、多源输入检测到结果可视化、历史追溯的完整功能链路,适用于工业质检辅助、课程设计、毕业设计答辩及算法学习场景。


二、核心功能介绍

1. 模型训练模块 (train.py)

  • 基于 YOLOv8 训练轴承缺陷检测模型
  • 自动保存训练日志(results.csv)
  • 自动生成可视化图表(混淆矩阵、PR 曲线、F1 曲线等)
  • 保存最佳权重(best.pt)和最终权重(last.pt)
  • 支持自定义训练参数(epoch、batch、图像尺寸等)和数据增强

2. 检测功能

图片检测

  • 支持 JPG、PNG、BMP 等常见图片格式
  • 左侧预览原图,右侧展示检测结果
  • 实时统计各类缺陷数量
  • 可调节置信度阈值
  • 支持保存标注结果

视频检测

  • 支持 MP4、AVI、MOV、MKV 等视频格式
  • 实时逐帧检测并显示
  • 统计整个视频的缺陷总数
  • 支持录制检测结果视频
  • 显示帧数和 FPS 信息

摄像头检测

  • 支持多个摄像头设备
  • 实时检测与显示
  • 支持拍照和录制功能
  • 实时统计缺陷数量,可重置统计数据

3. 历史记录管理

  • 自动记录所有检测历史
  • 按检测类型筛选(图片 / 视频 / 摄像头)
  • 显示检测时间、来源、模型、检测数量
  • 支持清空历史记录

4. 模型管理

  • 查看当前使用模型
  • 列出所有可用模型
  • 支持模型切换与添加新模型
  • 默认使用最佳训练权重

5. 指标可视化

  • 展示训练过程生成的可视化图表
  • 包含混淆矩阵、PR 曲线、F1 曲线等
  • 网格布局清晰展示,支持刷新更新

6. 用户系统

  • 登录 / 注册功能
  • 本地存储用户数据
  • 密码验证与用户信息显示


三、技术栈介绍

类别 技术 / 库 用途说明
深度学习 YOLOv8 (ultralytics) 目标检测模型,基于 PyTorch
GUI 框架 PyQt6 图形界面开发
图像处理 OpenCV 图像读取、视频流处理、绘图
图像处理 Pillow 图像格式转换与处理
数值计算 NumPy 数组运算与数据处理
序列化 dill 对象序列化(用于模型相关)

架构设计:采用 config / core / ui 三层结构,界面层调用业务逻辑层,业务逻辑层访问数据层,模块低耦合、易扩展。


四、项目结构

c89/
├── main.py                    # 程序入口
├── train.py                   # 模型训练脚本
├── requirements.txt           # 依赖列表
├── 启动系统.bat               # 启动快捷方式
├── 项目说明.md                # 本文档
│
├── config/                    # 配置模块
│   ├── __init__.py
│   └── config.py              # 全局配置(路径、参数、类别等)
│
├── core/                      # 核心业务模块
│   ├── __init__.py
│   ├── detector.py            # YOLO 检测器封装
│   └── storage.py             # 用户与历史记录存储
│
├── ui/                        # 界面模块
│   ├── __init__.py
│   ├── login_window.py        # 登录注册窗口
│   ├── main_window.py         # 主窗口框架
│   ├── styles.py              # 统一样式管理
│   └── widgets/               # 功能组件
│       ├── image_detect.py    # 图片检测
│       ├── video_detect.py    # 视频检测
│       ├── camera_detect.py   # 摄像头检测
│       ├── history_widget.py  # 历史记录
│       ├── model_select.py    # 模型选择
│       └── metrics_widget.py  # 指标可视化
│
├── data/                      # 数据目录(自动生成)
│   ├── users.json             # 用户数据
│   ├── detection_history.json # 检测历史
│   └── detection_results/     # 检测结果文件
│
├── datasets/                  # 数据集目录
│   └── data.yaml              # 数据集配置
│
├── 轴承缺陷检测训练文件/      # 训练产物
│   ├── weights/
│   │   ├── best.pt            # 最佳权重
│   │   └── last.pt            # 最终权重
│   ├── results.csv            # 训练日志
│   └── *.png / *.jpg          # 可视化图表

五、数据库设计

系统采用 JSON 文件进行本地数据持久化,无需安装数据库。

5.1 用户表 (users.json)

存储用户账号信息。

{
  "用户名": {
    "password": "密码明文",
    "created_at": "注册时间 (YYYY-MM-DD HH:MM:SS)"
  }
}
字段 类型 说明
用户名 key 唯一标识
password string 用户密码
created_at string 注册时间

5.2 检测历史表 (detection_history.json)

存储每次检测的完整记录。

[
  {
    "id": 1,
    "type": "图片检测|视频检测|摄像头检测",
    "source": "文件路径或来源描述",
    "model": "模型文件名",
    "time": "检测时间 (YYYY-MM-DD HH:MM:SS)",
    "total_detections": 5,
    "detections": [
      {
        "class_id": 0,
        "class_name": "凹槽",
        "confidence": 0.95,
        "bbox": [x1, y1, x2, y2]
      }
    ]
  }
]
字段 类型 说明
id int 自增记录 ID
type string 检测类型
source string 输入来源(文件路径等)
model string 使用的模型文件名
time string 检测时间
total_detections int 检测到的缺陷总数
detections array 每条检测详情
detections[].class_id int 类别 ID(0–3)
detections[].class_name string 类别名称
detections[].confidence float 置信度
detections[].bbox array 边界框 [x1,y1,x2,y2]

5.3 缺陷类别

ID 类别名 英文名 颜色标记
0 凹槽 aocao 红色
1 凹线 aoxian 绿色
2 擦伤 cashang 蓝色
3 划痕 huahen 黄色

六、数据流程

检测流程

用户选择输入源 → 调整参数 → 点击检测
    ↓
加载 YOLO 模型 → 执行推理 → 后处理 (NMS)
    ↓
绘制检测框 → 更新界面显示 → 统计结果
    ↓
保存到历史记录 → 可选保存结果文件

训练流程

准备数据集 → 配置 data.yaml → 运行 train.py
    ↓
YOLOv8 训练 → 生成日志和图表 → 保存权重
    ↓
验证模型 → 输出指标 → 完成

七、文件存储说明

数据目录data/ 下自动生成 users.jsondetection_history.jsondetection_results/(图片结果、视频录制、摄像头拍照等)。

训练结果runs/train_yyyymmdd_hhmmss/ 或指定目录,包含 weights/results.csv、混淆矩阵、PR 曲线等图表。


八、快速开始

  1. 安装依赖:双击 安装依赖.bat 或执行 pip install -r requirements.txt
  2. 启动系统:双击 启动系统.bat 或执行 python main.py
  3. 首次使用:注册账号(用户名≥3 字符,密码≥6 字符)→ 登录 → 使用各项功能
  4. 训练模型(可选):执行 python train.py

九、系统要求

  • 硬件:CPU Intel i5 及以上,内存 8GB 以上,推荐 NVIDIA GPU(CUDA 加速)
  • 软件:Windows 10/11,Python 3.8+,可选 CUDA 11.0+
  • 摄像头:用于摄像头检测功能(可选)

本项目为个人原创,结构清晰,功能完整,适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求可以评论或私信作者。

作者原创项目地址:michael-jay.pages.dev/projects.html

posted on 2026-08-03 00:55  Jay8059  阅读(2)  评论(0)    收藏  举报

导航