基于YOLOv8的行人车辆检测系统

项目简介

本项目基于YOLOv8深度学习算法,实现了行人和车辆的目标检测系统。系统采用PyQt5构建图形界面,支持单张图像、视频和摄像头实时检测,并提供历史记录查询和数据导出功能。

数据集信息

数据集概况

  • 检测类别:2类(person-行人、car-车辆)
  • 训练集图片数量:9,000张
  • 验证集图片数量:1,500张
  • 总图片数量:10,500张
  • 总检测实例数:60,875个
  • 数据格式:YOLO格式(图片+标注文件)

数据集结构

复制代码
data/
├── images/
│   ├── train/          # 训练集图片(9,000张)
│   └── val/            # 验证集图片(1,500张)
└── labels/
    ├── train/          # 训练集标注文件(9,000个)
    └── val/            # 验证集标注文件(1,500个)

训练过程

训练参数

  • 模型架构:YOLOv8s
  • 训练轮数:50 epochs
  • 批次大小:16
  • 图像尺寸:640×640
  • 学习率:初始学习率0.01,最终学习率0.01
  • 优化器:自动选择(默认SGD)
  • 动量:0.937
  • 权重衰减:0.0005
  • 预热轮数:3
  • 数据增强:启用(包括翻转、缩放、HSV调整、Mosaic等)
  • 训练设备:NVIDIA GeForce RTX 3060 Laptop GPU
  • 训练时间:2.840小时

训练结果

  • mAP50:0.712
  • mAP50-95:0.421
  • 精确度(Precision):0.801
  • 召回率(Recall):0.623
  • F1分数:0.712

各类别性能

  • person(行人)

    • 精确度:0.777
    • 召回率:0.535
    • mAP50:0.630
    • mAP50-95:0.330
  • car(车辆)

    • 精确度:0.826
    • 召回率:0.712
    • mAP50:0.793
    • mAP50-95:0.513

可视化图含义

训练过程生成的可视化图表位于 runs/detect/person_car_detect/ 目录:

  1. confusion_matrix.png:混淆矩阵,展示模型在各类别上的分类准确性
  2. confusion_matrix_normalized.png:归一化混淆矩阵,便于比较不同类别
  3. F1_curve.png:F1分数曲线,展示不同置信度阈值下的F1分数变化
  4. P_curve.png:精确度曲线,展示不同置信度阈值下的精确度变化
  5. R_curve.png:召回率曲线,展示不同置信度阈值下的召回率变化
  6. PR_curve.png:精确度-召回率曲线,展示精确度和召回率的权衡关系
  7. results.png:训练结果汇总图,包含损失函数、mAP等指标随训练轮数的变化
  8. train_batch.jpg*:训练批次可视化,展示训练过程中的数据增强效果
  9. val_batch_labels.jpg*:验证集标签可视化,展示真实标注框
  10. val_batch_pred.jpg*:验证集预测结果可视化,展示模型预测框

系统功能

  1. 单张图像识别:上传单张图像进行行人和车辆检测,实时显示检测结果和统计信息
  2. 视频识别:支持视频文件导入,逐帧进行目标检测并实时显示
  3. 摄像头实时识别:支持调用摄像头进行实时检测,适用于实时监控场景
  4. 历史记录查询:自动保存每次检测记录,支持查看历史检测数据
  5. 数据导出:识别结果可导出为CSV或JSON格式,便于后续分析和处理
  6. 检测结果可视化:实时显示检测框、类别标签和置信度,直观展示检测效果

技术栈

  • 前端框架:PyQt5
  • 深度学习框架:PyTorch
  • 目标检测算法:YOLOv8(Ultralytics)
  • 图像处理:OpenCV
  • 数据处理:NumPy、JSON、CSV

系统运行流程

  1. 启动系统 :运行主程序 detection_ui.py,加载训练好的YOLOv8模型权重
  2. 选择检测模式:用户通过左侧导航栏选择检测模式(图片识别/视频识别/摄像头识别)
  3. 输入检测源
    • 图片模式:选择单张图片文件
    • 视频模式:选择视频文件
    • 摄像头模式:选择摄像头设备编号
  4. 执行检测:系统调用YOLOv8模型对输入进行检测,实时显示检测结果
  5. 结果展示:显示检测框、类别、置信度以及统计信息(行人数、车辆数、总检测数)
  6. 保存记录:图片检测完成后自动保存到历史记录
  7. 查询导出:用户可查看历史记录,并导出为CSV或JSON格式

系统目录结构

复制代码
code/
├── detection_ui.py                    # 主程序入口,GUI界面
├── detection_history.json             # 检测历史记录数据
├── log.txt                            # 训练日志
├── data/                              # 数据集目录
│   ├── data.yaml                      # 数据集配置文件
│   ├── images/                        # 图片目录
│   │   ├── train/                     # 训练集图片
│   │   └── val/                       # 验证集图片
│   └── labels/                        # 标注文件目录
│       ├── train/                     # 训练集标注
│       └── val/                       # 验证集标注
├── runs/                              # 训练输出目录
│   └── detect/
│       └── person_car_detect/         # 训练结果
│           ├── weights/               # 模型权重文件
│           │   ├── best.pt            # 最佳模型权重
│           │   └── last.pt           # 最后一轮权重
│           ├── *.png                  # 训练可视化图表
│           └── *.jpg                  # 训练批次可视化
├── vis_output/                        # 可视化输出目录
├── yolo11m.pt                         # YOLO模型文件
├── yolo11n.pt                         # YOLO模型文件
├── yolov8s-cls.pt                     # YOLO分类模型
└── yolov8s.pt                         # YOLO检测模型

系统部分截图

相关推荐
lili-felicity1 分钟前
CANN批处理优化技巧:从动态批处理到流水线并行
人工智能·python
一枕眠秋雨>o<8 分钟前
算子之力:解码CANN ops-nn如何重塑昇腾AI计算范式
人工智能
AI科技10 分钟前
原创音乐人运用AI编曲软件,编曲怎么配和弦的声音
人工智能
dazzle12 分钟前
机器学习算法原理与实践-入门(三):使用数学方法实现KNN
人工智能·算法·机器学习
那个村的李富贵13 分钟前
智能炼金术:CANN加速的新材料AI设计系统
人工智能·算法·aigc·cann
凯子坚持 c15 分钟前
CANN 生态新星:`minddata-dataset-engine` 如何加速 AI 数据 pipeline
人工智能
Fairy要carry16 分钟前
面试-GRPO强化学习
开发语言·人工智能
xiaobaibai15318 分钟前
营销自动化终极形态:AdAgent 自主闭环工作流全解析
大数据·人工智能·自动化
自不量力的A同学24 分钟前
Solon AI v3.9 正式发布:全能 Skill 爆发
java·网络·人工智能
一枕眠秋雨>o<30 分钟前
从抽象到具象:TBE如何重构AI算子的编译哲学
人工智能