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

系统部分截图

相关推荐
Ian在掘金4 小时前
从零实现一个 PDF 智能问答系统
人工智能·langchain
飞Link4 小时前
智能体时代的“紧箍咒”:深度解析 Agent 治理架构与 AI 杀伤开关
人工智能·架构
飞Link4 小时前
2000 亿砸向算力:字节跳动 AI 基建跨越,后端与运维的“万亿 Token”生死战
运维·人工智能
zhangfeng11334 小时前
小龙虾 wordbuddy 安装浏览器控制器 agent-browser npm install -g agent-browse
前端·人工智能·npm·node.js
阿里云大数据AI技术4 小时前
一条 SQL 生成广告:Hologres 如何实现素材生成到投放分析一体化
人工智能·sql
liudanzhengxi4 小时前
GitSubmodule避坑全攻略
人工智能·新人首发
用户425210800604 小时前
Claude Code Linux 服务器部署与配置
人工智能
OJAC1114 小时前
学过Python却不敢投AI岗,他最后拿下12K offer
人工智能
Bigger4 小时前
因为看不懂小棉袄的画,我写了个 AI 程序帮我“翻译”她的世界
前端·人工智能·ai编程
CeshirenTester4 小时前
LangChain的工具调用 vs 原生Skill API:性能差在哪儿?
java·人工智能·langchain