基于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检测模型

系统部分截图

相关推荐
光羽隹衡6 小时前
计算机视觉——Opencv(图像拼接)
人工智能·opencv·计算机视觉
SEO_juper6 小时前
2026内容营销破局指南:告别流量内卷,以价值赢信任
人工智能·ai·数字营销·2026
初恋叫萱萱6 小时前
数据即燃料:用 `cann-data-augmentation` 实现高效训练预处理
人工智能
一战成名9966 小时前
CANN 仓库揭秘:昇腾 AI 算子开发的宝藏之地
人工智能
hnult6 小时前
2026 在线培训考试系统选型指南:核心功能拆解与选型逻辑
人工智能·笔记·课程设计
A小码哥6 小时前
AI 设计时代的到来:从 PS 到 Pencil,一个人如何顶替一个团队
人工智能
AIGCmitutu6 小时前
PS 物体底部阴影怎么做?3 步做出自然逼真的投影效果
人工智能·电子商务·photoshop·ps·美工
开源技术6 小时前
Claude Opus 4.6 发布,100万上下文窗口,越贵越好用
人工智能·python
聆风吟º6 小时前
CANN hccl 深度解析:异构计算集群通信库的跨节点通信与资源管控实现逻辑
人工智能·wpf·transformer·cann
狸奴算君7 小时前
告别机械回复:三步微调AI模型,打造会“读心”的智能客服
人工智能