基于 YOLOv8 的智能焊接缺陷检测系统(全套源码+数据集)
本系统针对工业焊接质量检测场景,在 YOLOv8 基础上进行算法改进,实现焊接缺陷的智能识别与检测,并提供完整的桌面端可视化界面。
一、数据集


1.1 基本信息
| 项目 | 内容 |
|---|---|
| 数据集名称 | The Welding Defect Dataset - v2 |
| 任务类型 | 目标检测 |
| 标注格式 | YOLO 格式(.txt,归一化坐标) |
| 图片格式 | JPEG(.jpg) |
| 图片总数 | 2,028 张 |
| 标注框总数 | 5,686 个 |
1.2 检测类别(3 类)
| 类别 ID | 类别名称 | 描述 |
|---|---|---|
| 0 | Bad Weld | 劣质焊缝(夹渣、气孔、咬边等) |
| 1 | Good Weld | 合格焊缝 |
| 2 | Defect | 缺陷区域(裂纹、未熔合、飞溅等) |
1.3 数据划分
| 子集 | 图片数 | 标注框数 | 比例 |
|---|---|---|---|
| 训练集 | 1,619 | 4,583 | 79.8% |
| 验证集 | 283 | 802 | 14.0% |
| 测试集 | 126 | 301 | 6.2% |
1.4 目录结构
The Welding Defect Dataset - v2/
└── The Welding Defect Dataset - v2/
├── data.yaml
├── train/images、train/labels
├── valid/images、valid/labels
└── test/images、test/labels
二、训练过程
2.1 训练脚本
- 基础版:
train.py - 改进版:
train_improved.py(启用 WIoU 等算法改进)
2.2 训练参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| 模型 | yolov8n.pt | 预训练权重(nano) |
| epochs | 100 | 训练轮次 |
| batch | 16 | 批次大小 |
| imgsz | 640 | 输入尺寸 |
| workers | 4 | 数据加载线程数 |
2.3 输出目录
- 基础版:
train_result/exp/ - 改进版:
train_result/exp_improved/
训练产物包括:weights/best.pt、weights/last.pt、results.csv、args.yaml 等。
三、可视化图含义
训练完成后,运行 visualize_results.py 可生成以下图表:
| 图表文件 | 含义 |
|---|---|
| loss_curves.png | 训练与验证损失曲线。Box Loss:边界框回归损失;Cls Loss:分类损失;DFL Loss:分布聚焦损失。曲线下降表示模型收敛。 |
| metrics.png | 评估指标随 epoch 变化。Precision:精确率;Recall:召回率;mAP50:IoU=0.5 时的平均精度;mAP50-95:IoU 0.5~0.95 的平均精度。 |
| learning_rate.png | 学习率调度曲线,反映训练过程中的学习率变化。 |
| summary.png | 训练结果汇总,包含 Box Loss、Cls Loss、Precision/Recall/mAP50、mAP50-95 的综合展示。 |
界面【指标展示】页可读取 train_result 下的 results.csv,以深色主题展示训练曲线与指标汇总。

四、系统功能
| 功能模块 | 说明 |
|---|---|
| 图片识别 | 上传焊接图片,执行检测,展示统计摘要、详细数据、置信度分布,支持导出图片与 CSV |
| 视频识别 | 打开视频文件,逐帧检测并显示实时统计,可导出关键帧 |
| 摄像头识别 | 接入本地摄像头实时检测,支持检测开关、截图保存、会话记录 |
| 检测历史 | 查看、筛选、搜索、导出检测记录,支持按类型与关键词筛选 |
| 模型管理 | 加载模型、验证、调节置信度/IoU/最大检测数等参数 |
| 指标展示 | 可视化训练曲线、mAP、Precision、Recall 等指标 |






五、项目技术栈
| 类别 | 技术 |
|---|---|
| 深度学习 | PyTorch、Ultralytics YOLOv8 |
| 模型改进 | WIoU 损失、DCNv2 可变形卷积、EFP 增强特征金字塔 |
| 界面 | PyQt6 |
| 可视化 | Matplotlib |
| 数据处理 | OpenCV、Pandas、NumPy |
六、项目结构
c153/
├── main.py # 程序入口
├── train.py # 基础版训练
├── train_improved.py # 改进版训练(WIoU 等)
├── visualize_results.py # 训练结果可视化
├── config/ # 配置
│ ├── train_config.py # 训练参数
│ └── app_config.py # 应用路径
├── core/ # 核心逻辑
│ ├── detector.py # YOLOv8 检测器
│ ├── workers.py # 后台检测线程
│ ├── history_manager.py
│ ├── settings_manager.py
│ └── auth_manager.py
├── models/ # 算法改进模块
│ ├── wiou.py # WIoU 损失函数
│ ├── dcn_blocks.py # DCNv2 可变形卷积
│ └── efp.py # EFP 增强特征金字塔
├── ui/ # 界面
│ ├── login_window.py
│ ├── main_window.py
│ └── pages/ # 各功能页
├── utils/ # 工具
│ ├── styles.py # QSS 样式
│ └── path_utils.py
├── visualize/ # 可视化模块
├── train_result/ # 训练结果输出
├── data/ # 运行时数据
└── The Welding Defect Dataset - v2/ # 数据集
七、运行说明
安装依赖
pip install -r requirements.txt
启动界面
python main.py
默认账号:admin / admin
训练模型
python train_improved.py
生成可视化图
python visualize_results.py
八、相关文档
算法创新文档.md:WIoU、DCNv2、EFP 等算法改进说明数据集介绍.md:数据集详细说明
本项目为个人原创,结构清晰,功能完整,适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求可以评论或私信作者。
作者原创项目地址:michael-jay.pages.dev/projects.html
浙公网安备 33010602011771号