基于YOLOv8行人车辆检测系统

发布时间:2026/7/29 1:21:33
基于YOLOv8行人车辆检测系统 本项目面向道路交通场景中的行人与车辆目标检测任务完成 YOLOv8 与 Faster R-CNN 两类检测模型的训练、评估、可视化对比并集成 PyQt5 桌面端检测系统。系统支持图片检测、视频检测、摄像头实时检测、检测数量统计、历史记录保存以及 CSV / JSON 数据导出。项目概述项目以行人和车辆两类目标为检测对象围绕模型训练、效果评估、模型对比和桌面端应用四个部分展开使用 YOLOv8s 完成单阶段目标检测训练默认作为桌面端系统的推理模型。使用 Faster R-CNN ResNet50 FPN 完成两阶段检测模型训练用于和 YOLOv8 进行性能对比。保存训练日志、指标 CSV、训练曲线、混淆矩阵、PR 曲线、F1 曲线等结果文件。基于 PyQt5 构建图形界面提供图片、视频、摄像头三种检测入口。检测结果包含目标框、类别、置信度、行人数、车辆数和总目标数。默认桌面端入口为detection_ui.py默认加载权重为runs/detect/person_car_detect/weights/best.pt数据集说明本项目使用 YOLO 标注格式的数据集检测类别为person和car。当前交付目录主要包含训练产物、模型权重和系统代码若需要重新训练需要准备或补齐data数据集目录。数据集结构Faster R-CNN 训练脚本默认读取如下目录结构YOLOv8 训练也可按相同数据划分准备data.yamldata/ ├── images/ │ ├── train/ # 训练集图片 │ └── val/ # 验证集图片 └── labels/ ├── train/ # 训练集标注 └── val/ # 验证集标注标注格式标注文件为 YOLO 格式每张图片对应一个同名.txt文件每行表示一个目标class_id x_center y_center width height字段说明字段说明class_id类别编号0表示行人1表示车辆x_center目标框中心点横坐标按图片宽度归一化y_center目标框中心点纵坐标按图片高度归一化width目标框宽度按图片宽度归一化height目标框高度按图片高度归一化数据统计根据当前项目中的 YOLOv8 训练日志验证阶段数据统计如下统计项数值检测类别2 类person、car验证集图片数4,959 张验证集目标实例数60,875 个行人实例数6,999 个车辆实例数53,876 个标注格式YOLO 归一化框格式输入尺寸640 x 640说明当前 README 只记录训练日志和项目文件中能够确认的数据。若后续替换数据集请以实际data/目录和data.yaml为准同步更新本节。模型方案YOLOv8 检测模型YOLOv8 是本项目桌面端默认使用的检测模型适合实时检测场景。其整体流程如下输入图像 │ ▼ YOLOv8 Backbone 特征提取 │ ▼ Neck 多尺度特征融合 │ ▼ Detect Head 输出目标框、类别和置信度 │ ▼ NMS 后处理 │ ▼ 行人 / 车辆检测结果本项目中 YOLOv8 的主要作用训练person、car两类目标检测权重。提供桌面端图片、视频和摄像头实时检测能力。输出检测框、类别标签、置信度和数量统计。生成混淆矩阵、PR 曲线、F1 曲线、训练结果曲线等可视化文件。Faster R-CNN 检测模型Faster R-CNN 用于模型对比实验和批量图片检测。项目采用 TorchVision 中的 Faster R-CNN ResNet50 FPN并将分类头替换为 3 类输出输入图像 │ ▼ ResNet50 FPN 特征提取 │ ▼ RPN 候选框生成 │ ▼ RoI Align 特征对齐 │ ▼ 分类分支 边界框回归分支 │ ▼ 置信度过滤与结果输出Faster R-CNN 训练时会将 YOLO 标注转换为x_min, y_min, x_max, y_max格式并将类别编号转换为 TorchVision 检测模型所需的标签编号其中0作为背景类1表示行人2表示车辆。训练过程YOLOv8 训练流程读取数据集配置文件data.yaml。加载yolov8s.pt预训练权重。按 640 x 640 输入尺寸进行训练。使用 YOLOv8 默认检测损失包括边界框损失、分类损失和 DFL 损失。训练过程中保存best.pt和last.pt。训练结束后在验证集上评估 Precision、Recall、mAP50、mAP50-95。当前训练配置记录在runs/detect/person_car_detect/args.yamlFaster R-CNN 训练流程读取data/images/train、data/labels/train作为训练集。读取data/images/val、data/labels/val作为验证集。加载 COCO 预训练权重fasterrcnn/fasterrcnn_resnet50_fpn_coco-258fb6c6.pth替换检测头使模型输出背景、行人、车辆 3 类。使用 SGD 优化器和 StepLR 学习率衰减策略训练 100 轮。每轮训练后计算 Precision、Recall、F1。按 F1 分数保存最优模型best.pth同时保存最后一轮模型last.pth。输出训练日志、CSV 指标、JSON 历史记录和可视化曲线。训练参数YOLOv8 参数参数值说明模型yolov8s.ptYOLOv8s 检测模型训练轮数100总训练 Epoch输入尺寸640训练和验证输入尺寸批大小16每批图片数量优化器autoUltralytics 自动选择初始学习率0.01lr0最终学习率比例0.01lrf动量0.937SGD 动量参数权重衰减0.0005正则化参数预热轮数3warmup_epochsAMP开启混合精度训练训练设备CUDA:0训练日志记录为 RTX 3060 Laptop GPU输出目录runs/detect/person_car_detectYOLOv8 训练结果目录Faster R-CNN 参数参数值说明模型Faster R-CNN ResNet50 FPNTorchVision 检测模型类别数3背景、行人、车辆训练轮数100总训练 Epoch批大小4每批图片数量优化器SGD随机梯度下降初始学习率0.005主学习率动量0.9SGD 动量权重衰减0.0005正则化参数学习率调度StepLR每 10 轮衰减衰减系数0.1gamma置信度阈值0.5评估和推理过滤阈值IoU 阈值0.5匹配阈值输出目录runs/fasterrcnn/person_car_detectFaster R-CNN 训练结果目录训练结果YOLOv8 验证结果YOLOv8 最优权重为runs/detect/person_car_detect/weights/best.pt整体结果指标数值Precision0.82942Recall0.65837mAP500.74918mAP50-950.45874推理速度约 1.9 ms / image训练耗时约 5.172 小时分类别结果类别ImagesInstancesPrecisionRecallmAP50mAP50-95person1,7126,9990.7920.5530.6510.346car4,95453,8760.8490.7480.8240.550Faster R-CNN 训练结果Faster R-CNN 最优权重为runs/fasterrcnn/person_car_detect/weights/best.pth最佳性能出现在第 78 轮指标数值Best Epoch78F1 Score0.7074Precision0.7112Recall0.7036最终第 100 轮结果指标数值F1 Score0.7046Precision0.7089Recall0.7004Total Loss0.2504Classifier Loss0.0663Box Regression Loss0.1427Objectness Loss0.0042RPN Box Loss0.0371模型对比对比项YOLOv8Faster R-CNN结论整体指标mAP50 0.7492F1 0.7074YOLOv8 整体得分更高Precision0.82940.7112YOLOv8 误检更少Recall0.65840.7036Faster R-CNN 漏检更少应用倾向实时检测、桌面端推理离线评估、召回优先场景按场景选择综合当前训练结果YOLOv8 更适合作为桌面端实时检测模型Faster R-CNN 在召回率上更高适合对漏检更敏感的离线检测或对比实验。可视化结果说明YOLOv8 可视化文件目录runs/detect/person_car_detect/文件说明results.png训练损失、验证损失、Precision、Recall、mAP 等指标曲线results.csv每个 Epoch 的完整训练指标confusion_matrix.png混淆矩阵confusion_matrix_normalized.png归一化混淆矩阵PR_curve.pngPrecision-Recall 曲线P_curve.pngPrecision 随置信度变化曲线R_curve.pngRecall 随置信度变化曲线F1_curve.pngF1 分数随置信度变化曲线labels.jpg标注分布可视化labels_correlogram.jpg标注框相关性可视化train_batch*.jpg训练批次与数据增强可视化val_batch*_labels.jpg验证集真实标签可视化val_batch*_pred.jpg验证集预测结果可视化Faster R-CNN 可视化文件目录runs/fasterrcnn/person_car_detect/文件说明training_results.png总损失、分类损失、回归损失、目标性损失、RPN 损失、Precision、Recall、F1 和学习率曲线f1_curve.pngF1 分数变化曲线并标注最佳轮次results.csv每轮训练指标training_history.json完整训练历史training_log.txt训练日志summary_report.txt训练结果摘要模型对比文件目录runs/comparison/文件说明model_comparison.pngYOLOv8 与 Faster R-CNN 指标对比图comparison_report.txt模型对比文字报告comparison_data.json模型对比结构化数据桌面端系统功能桌面端系统入口detection_ui.py图片检测支持选择本地单张图片进行目标检测。显示带检测框的结果图。统计行人数量、车辆数量和总目标数量。展示每个检测目标的类别和置信度。图片检测结果会写入detection_history.json。视频检测支持选择本地视频文件。对视频帧逐帧执行 YOLOv8 检测。实时刷新检测画面和数量统计。可在界面中停止当前检测任务。摄像头检测支持选择摄像头编号 0、1、2。调用本机摄像头进行实时行人车辆检测。实时显示检测框、类别、置信度和数量统计。历史记录历史记录保存在detection_history.json。支持在界面中查看检测时间、输入来源、行人数、车辆数和总数。支持导出为 CSV。支持导出为 JSON。技术栈类别技术编程语言Python 3.9深度学习框架PyTorch、TorchVisionYOLO 框架Ultralytics YOLOv8桌面端框架PyQt5图像处理OpenCV、Pillow数据处理NumPy、Pandas、CSV、JSON可视化Matplotlib模型类型YOLOv8s、Faster R-CNN ResNet50 FPN项目结构c88/ ├── detection_ui.py # PyQt5 桌面端主程序默认加载 YOLOv8 best.pt ├── detection_history.json # 图片检测历史记录 ├── train_fasterrcnn.py # Faster R-CNN 训练脚本 ├── detect_fasterrcnn.py # Faster R-CNN 批量检测脚本 ├── fasterrcnn_config.py # Faster R-CNN 训练配置 ├── visualize_fasterrcnn_results.py # Faster R-CNN 训练曲线和摘要生成脚本 ├── compare_models.py # YOLOv8 与 Faster R-CNN 指标对比脚本 ├── redraw_epoch_plots.py # 根据 CSV 重新绘制训练图表 ├── requirements_fasterrcnn.txt # Faster R-CNN 训练相关依赖 ├── 训练日志.txt # YOLOv8 训练日志 ├── yolov8s.pt # YOLOv8s 预训练权重 ├── yolov8s-cls.pt # YOLOv8 分类权重文件 ├── yolo11n.pt # YOLO 系列权重文件 ├── yolo11m.pt # YOLO 系列权重文件 ├── fasterrcnn/ │ └── fasterrcnn_resnet50_fpn_coco-258fb6c6.pth │ # Faster R-CNN COCO 预训练权重 ├── runs/ │ ├── detect/person_car_detect/ │ │ ├── weights/ │ │ │ ├── best.pt # YOLOv8 最优权重桌面端默认加载 │ │ │ └── last.pt # YOLOv8 最后一轮权重 │ │ ├── results.csv # YOLOv8 每轮训练指标 │ │ └── *.png / *.jpg # YOLOv8 训练与验证可视化结果 │ ├── fasterrcnn/person_car_detect/ │ │ ├── weights/ │ │ │ └── best.pth # Faster R-CNN 最优权重 │ │ ├── results.csv # Faster R-CNN 每轮训练指标 │ │ ├── training_history.json # Faster R-CNN 训练历史 │ │ ├── training_results.png # Faster R-CNN 训练曲线 │ │ └── summary_report.txt # Faster R-CNN 训练摘要 │ └── comparison/ │ ├── model_comparison.png # 两类模型对比图 │ ├── comparison_report.txt # 两类模型对比报告 │ └── comparison_data.json # 两类模型对比数据 ├── vis_output/ # 检测可视化输出图片 └── data/ # 重新训练时需要准备的数据集目录环境准备与启动1. 创建 Python 环境建议使用 Python 3.9并优先使用独立虚拟环境。cd 项目根目录2. 安装依赖先安装 Faster R-CNN 训练依赖python -m pip install -r requirements_fasterrcnn.txt再安装桌面端和 YOLOv8 推理所需依赖python -m pip install ultralytics PyQt5 opencv-python如需使用 GPU请确保本机 PyTorch、CUDA 和显卡驱动版本匹配。3. 启动桌面端系统python .\detection_ui.py启动后可在界面中选择图片检测视频检测摄像头检测历史记录查看与导出4. 重新训练 YOLOv8如果需要重新训练 YOLOv8请先准备数据集和data.yaml再执行yolo detect train modelyolov8s.pt data数据集目录\data.yaml epochs100 batch16 imgsz640 projectruns/detect nameperson_car_detect训练完成后桌面端默认读取runs/detect/person_car_detect/weights/best.pt5. 训练 Faster R-CNN请先按 数据集结构 准备data/目录然后执行python .\train_fasterrcnn.py训练输出目录runs/fasterrcnn/person_car_detect/6. Faster R-CNN 批量检测python .\detect_fasterrcnn.py --weights runs/fasterrcnn/person_car_detect/weights/best.pth --source data/images/val --output runs/fasterrcnn/detect --conf 0.5参数说明参数说明--weightsFaster R-CNN 权重路径--source待检测图片文件或图片目录--output检测结果输出目录--conf置信度阈值7. 生成可视化和对比结果生成 Faster R-CNN 训练图表和摘要python .\visualize_fasterrcnn_results.py生成 YOLOv8 与 Faster R-CNN 对比图表python .\compare_models.py根据现有 CSV 重新绘制训练图python .\redraw_epoch_plots.py本项目为个人原创结构清晰功能完整适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求可以评论或私信作者。作者原创项目地址michael-jay.pages.dev/projects.html

相关新闻