原创项目合集 基于 YOLOv8 的道路缺陷检测系统

基于 YOLOv8 的道路缺陷检测系统

一、项目简介

本项目基于 YOLOv8 目标检测框架,针对城市道路路面缺陷场景构建了一套完整的检测系统,涵盖数据集管理、模型训练、指标可视化以及可视化交互界面,可对图片、视频、摄像头实时输入进行缺陷目标检测与统计分析。

二、数据集说明

基于 YOLOv8 的道路缺陷检测系统项目截图1 基于 YOLOv8 的道路缺陷检测系统项目截图1

2.1 数据集概览

项目数值
总图片数6,000 张
训练集5,400 张(90%)
验证集600 张(10%)
标注格式YOLO 格式(归一化坐标 .txt
图像尺寸训练输入统一缩放至 640×640

2.2 检测类别(9 类)

类别 ID英文名称中文含义
0Crack裂缝
1Manhole井盖
2Net网状裂缝
3Pothole坑洞
4Patch-Crack修补裂缝
5Patch-Net修补网状裂缝
6Patch-Pothole修补坑洞
7other其他(小写)
8Other其他(大写)

2.3 标注格式说明

每个标注文件(.txt)每行代表一个目标,格式为:

class_id  x_center  y_center  width  height

所有坐标均为归一化值(0~1),相对于图像宽高计算。

三、训练过程

3.1 启动训练

python train.py

可通过命令行参数自定义训练配置:

python train.py --model yolov8s.pt --epochs 200 --batch 8 --imgsz 640 --name exp01

3.2 训练参数说明

参数说明
modelyolov8n.pt使用 YOLOv8n 预训练权重
epochs100训练总轮数
batch16批次大小
imgsz640输入图像尺寸(像素)
optimizerauto自动选择优化器(默认 SGD/AdamW)
lr00.01初始学习率
lrf0.01最终学习率(相对 lr0 的比例)
momentum0.937SGD 动量
weight_decay0.0005权重衰减(L2 正则)
warmup_epochs3学习率预热轮数
patience50早停轮数(验证集无提升则停止)
amptrue开启混合精度训练(加速 + 省显存)
iou0.7NMS IoU 阈值
close_mosaic10最后 N 轮关闭 Mosaic 数据增强

3.3 数据增强策略

增强方式参数值说明
HSV 色调0.015随机色调扰动
HSV 饱和度0.7随机饱和度扰动
HSV 亮度0.4随机亮度扰动
水平翻转0.550% 概率翻转
平移0.1随机平移比例
缩放0.5随机缩放范围
Mosaic1.0四图拼接(训练前期开启)
随机擦除0.4随机遮挡区域
自动增强randaugment随机策略组合

3.4 训练产物

训练完成后所有产物自动保存至 output/yolov8_road_defect/

output/
└── yolov8_road_defect/
    ├── weights/
    │   ├── best.pt       ← 验证集最优模型(推荐用于推理)
    │   └── last.pt       ← 最后一轮模型
    ├── results.csv       ← 每轮训练指标记录
    ├── args.yaml         ← 训练参数快照
    ├── confusion_matrix.png
    ├── BoxP_curve.png
    ├── BoxR_curve.png
    ├── BoxF1_curve.png
    └── labels.jpg

四、训练结果

基于 YOLOv8n 预训练权重,训练 99 个 epoch 后的最优指标如下:

指标最优值
mAP500.3439
mAP50-950.1842
Precision(精确率)0.9621
Recall(召回率)0.4008

精确率较高说明模型检测到的目标可信度高;召回率偏低与数据集中小目标较多、类别分布不均有关,可通过增大模型规模(如 yolov8s/m)或增加训练轮数进一步提升。

基于 YOLOv8 的道路缺陷检测系统项目截图1 基于 YOLOv8 的道路缺陷检测系统项目截图2

五、可视化指标说明

运行以下命令可基于 results.csv 生成全部可视化图,保存至 output/yolov8_road_defect/visualizations/

python visualize.py

5.1 生成图表说明

文件名内容说明
loss_curves.png训练集与验证集三类损失曲线(box_loss / cls_loss / dfl_loss),曲线持续下降表示模型正常收敛
metric_curves.pngPrecision、Recall、mAP50、mAP50-95 随训练轮次的变化趋势,用于判断模型检测能力的提升情况
learning_rate_curves.png各参数组的学习率调度曲线,反映预热阶段和余弦退火衰减过程
overview_dashboard.png四合一总览面板:Box Loss 对比 / Precision-Recall / mAP / Cls Loss,适合一图汇报训练质量
training_summary.png训练汇总卡片,展示总轮次、最优精确率、召回率、mAP50、mAP50-95 及最终损失值

5.2 损失类型说明

损失名称含义
box_loss边界框回归损失,衡量预测框与真实框的位置偏差
cls_loss分类损失,衡量目标类别预测的准确程度
dfl_loss分布焦点损失(Distribution Focal Loss),YOLOv8 特有,用于精细化边框坐标预测

六、系统功能

系统提供基于 PyQt6 的可视化交互界面,启动方式:

python main.py

默认账号:admin,密码:admin123

6.1 功能模块

模块功能描述
图片识别上传本地图片,调用 YOLOv8 进行缺陷检测,展示标注结果、类别统计、置信度分布直方图,支持导出标注图片和 CSV 报告
视频识别逐帧检测本地视频,实时展示带标注的播放画面,统计各类别累计检测数量,支持导出当前帧
摄像头识别接入本地摄像头进行实时检测,可切换检测开关、手动截图保存,支持将本次会话数据存入历史
检测历史查看所有历史检测记录,支持按类型(图片/视频/摄像头)筛选和关键词搜索,可导出历史 CSV
模型管理配置模型权重路径,调整置信度阈值、IoU 阈值、最大检测数等参数,验证并热加载模型
指标展示自动扫描 output 目录下的 results.csv,展示训练损失曲线、mAP 曲线、P/R 曲线及最终指标汇总柱状图
基于 YOLOv8 的道路缺陷检测系统项目截图1 基于 YOLOv8 的道路缺陷检测系统项目截图1 基于 YOLOv8 的道路缺陷检测系统项目截图2 基于 YOLOv8 的道路缺陷检测系统项目截图3 基于 YOLOv8 的道路缺陷检测系统项目截图4 基于 YOLOv8 的道路缺陷检测系统项目截图1

七、项目技术栈

类别技术 / 库
检测框架YOLOv8(Ultralytics)
深度学习PyTorch
UI 框架PyQt6
图表绘制Matplotlib(QtAgg 后端)
图像处理OpenCV(cv2)
数值计算NumPy
语言Python 3.9
数据格式YAML、CSV、JSON

八、项目结构

.
├── main.py                        # 系统启动入口
├── train.py                       # 训练启动入口
├── visualize.py                   # 指标可视化入口
│
├── app/                           # UI 应用层
│   ├── login_window.py            # 登录 / 注册窗口
│   ├── main_window.py             # 主窗口(侧边栏 + 页面堆栈)
│   ├── pages/                     # 各功能页面
│   │   ├── image_page.py          # 图片识别页
│   │   ├── video_page.py          # 视频识别页
│   │   ├── camera_page.py         # 摄像头识别页
│   │   ├── history_page.py        # 检测历史页
│   │   ├── model_page.py          # 模型管理页
│   │   └── metrics_page.py        # 训练指标展示页
│   └── utils/                     # 工具层
│       ├── styles.py              # 全局 QSS 样式
│       ├── detector.py            # YOLOv8 检测封装 + 异步线程
│       ├── history_manager.py     # 检测历史本地存储
│       ├── user_manager.py        # 用户认证管理
│       ├── image_utils.py         # 图像格式转换工具
│       └── config_manager.py      # 模型参数配置持久化
│
├── trainer/
│   └── yolov8_train.py            # YOLOv8 训练模块(参数解析 + 启动)
│
├── visualizer/
│   └── results_visualizer.py      # 训练指标可视化模块
│
├── datasets/                      # 数据集
│   ├── lumian.yaml                # 数据集配置文件
│   ├── train/
│   │   ├── images/                # 训练集图像(5,400 张)
│   │   └── labels/                # 训练集标注
│   └── val/
│       ├── images/                # 验证集图像(600 张)
│       └── labels/                # 验证集标注
│
└── output/                        # 训练产物(自动生成)
    ├── config.json                # 系统配置(模型路径 + 检测参数)
    ├── history.json               # 检测历史记录
    ├── users.json                 # 用户账号数据
    ├── dataset_runtime.yaml       # 训练时生成的数据集配置
    └── yolov8_road_defect/
        ├── weights/
        │   ├── best.pt
        │   └── last.pt
        ├── results.csv
        └── visualizations/        # 可视化图表输出目录

九、快速开始

第一步:安装依赖

pip install -r requirements.txt

第二步:训练模型

python train.py

训练完成后权重保存至 output/yolov8_road_defect/weights/best.pt

第三步:生成可视化图

python visualize.py

第四步:启动系统界面

python main.py

登录后进入【模型管理】页面,加载 output/yolov8_road_defect/weights/best.pt,即可开始检测。

本项目为个人原创,结构清晰,功能完整,适合课程设计、毕业设计和个人学习使用。如需购买项目成品或定制化需求可以联系作者。

微信二维码
Jay 微信二维码