公司动态
基于 YOLOv8 的交通违规检测系统(全套源码+数据集)
1. 项目简介本系统以YOLOv8为核心检测引擎面向城市道路监控场景实现对行人、非机动车、摩托车等目标的交通违规行为自动检测与分类。系统支持图片、视频、实时摄像头三种输入模式并配有完整的PyQt6 图形化操作界面涵盖检测、统计、历史管理、指标可视化等功能完整还原了深度学习项目从数据到系统的落地全链路。可检测的违规类型类别中文含义Crossing_Violation路口闯红灯Crosswalk_Violation斑马线违规Helmet_Violation骑行未戴头盔Normal正常合规行为Passenger_Violation非机动车违规载人Pedestrian_Violation行人综合违规Trafficlight_Violation不遵守交通灯信号2. 深度学习开发流程原始数据采集 │ ▼ 数据标注Roboflow │ ▼ 数据增强与集成翻转 / 旋转 / 亮度 / 裁剪 / 色调抖动 │ ▼ 数据集划分训练集 4,666 张 / 验证集 390 张 │ ▼ 模型选型YOLOv8s 预训练权重迁移学习 │ ▼ 超参数配置优化器 AdamW / 学习率 / 批大小 / 数据增强策略 │ ▼ 模型训练100 EpochsGPU 加速 │ ▼ 训练过程监控Loss 曲线 / mAP 曲线 / 学习率衰减 │ ▼ 模型评估精确率 / 召回率 / mAP50 / mAP50-95 / F1 │ ▼ 最优权重保存best.pt │ ▼ 系统集成PyQt6 UI 多模态检测 历史管理 指标展示3. 数据集详情3.1 基本信息项目内容数据集来源城市道路交通监控视频帧 静态场景图片标注工具Roboflow在线标注与增强平台标注格式YOLO 格式.txt归一化中心坐标检测类别数7训练集样本数4,666 张验证集样本数390 张总样本数5,056 张数据增强倍率约 3 倍每张原图生成 3 个增强版本3.2 类别定义ID英文类名中文含义场景说明0Crossing_Violation路口闯红灯非机动车 / 行人在路口闯红灯1Crosswalk_Violation斑马线违规不走斑马线或在斑马线处违规2Helmet_Violation未戴头盔骑摩托车 / 电动车时未佩戴头盔3Normal正常合规合规骑行或正常通行4Passenger_Violation违规载人非机动车超载乘客5Pedestrian_Violation行人综合违规行人闯红灯等综合性违规6Trafficlight_Violation交通灯违规不遵守红绿灯信号通行3.3 数据来源构成文件名前缀内容说明bicycle_N_jpg自行车 / 电动车场景正常bicycle_anormal-K-N_jpg自行车违规场景K1~6 代表 6 种违规子类型bicycle_normal-K-N_jpg自行车正常场景多角度 / 多光照bicycle_no5_N_jpg不戴头盔的骑行场景motorcycle_N_jpg摩托车场景motorcycle_no5_N_jpg摩托车不戴头盔scooter_normal-K-N_jpg踏板车多场景正常行驶Passenger_N_jpg违规载人Pedestrian_ES_N_JPG行人违规T000XXX_...-mp4_XXXXXX_jpg交通监控视频帧提取含各类违规时刻3.4 标注格式说明每个.txt文件与图片一一对应每行记录一个目标class_id cx cy w hclass_id类别编号0~6cx,cy目标中心点归一化至 0~1w,h目标框宽高归一化至 0~13.5 数据增强策略通过 Roboflow 平台对原始图片实施以下增强提升模型泛化能力水平翻转50% 概率亮度与对比度随机扰动随机旋转与剪切色调HSV抖动Mosaic 拼接增强概率 1.0随机擦除概率 0.44. 模型训练与调优4.1 模型选型采用YOLOv8sSmall 规格作为基础架构在 COCO 预训练权重基础上进行迁移学习。选用 YOLOv8s 的原因参数量适中约 11M平衡检测精度与推理速度支持端对端训练无需复杂后处理原生支持 YOLO 格式数据集接入成本低4.2 训练参数配置参数值说明基础模型yolov8s.ptCOCO 预训练权重训练轮数 (Epochs)100充分收敛批大小 (Batch)16显存与速度平衡输入尺寸 (imgsz)640 × 640标准 YOLO 输入分辨率优化器AdamW自适应学习率收敛更稳定初始学习率 (lr0)0.01预热阶段起始值终止学习率 (lrf)0.01余弦退火终点倍率动量 (momentum)0.937Adam β1 参数权重衰减0.0005L2 正则化防止过拟合预热轮数3前 3 轮线性预热学习率混合精度 (AMP)开启加速训练、减少显存占用数据加载线程4并行预处理加速IoU 阈值0.7NMS 时判断重叠框的阈值早停耐心 (patience)100与 Epochs 相同不触发早停随机种子0保证实验可复现4.3 训练过程预热阶段1~3 轮学习率从接近 0 线性增长至 lr0防止早期训练震荡。主训练阶段4~90 轮学习率按余弦退火策略逐步下降Loss 平稳收敛mAP 持续提升。精调阶段91~100 轮关闭 Mosaic 增强最后 10 轮学习率降至极低进一步精调边界框回归。最优权重训练完成后自动保存best.pt验证集 mAP50 最高的权重和last.pt最后一轮权重。4.4 最终训练指标第 100 轮指标数值Precision精确率0.844Recall召回率0.824mAP500.865mAP50-950.483训练总时长约 5,735 秒≈ 95.6 分钟5. 训练指标说明指标含义Box Loss边界框回归损失DFL Loss衡量预测框与真实框的位置偏差越小越好Cls Loss分类损失衡量类别预测误差越小越好DFL Loss分布焦点损失Distribution Focal Loss用于更精确地回归边界框坐标Precision精确率 TP / (TP FP)预测为正样本中真正正样本的比例越高越好Recall召回率 TP / (TP FN)真实正样本中被正确检测出的比例越高越好mAP50在 IoU0.5 阈值下的平均精度均值通用检测精度指标越高越好mAP50-95在 IoU0.5~0.95步长 0.05下的平均精度均值更严格的精度评估越高越好F1 ScorePrecision 与 Recall 的调和平均综合评估分类性能越高越好Learning Rate学习率变化曲线反映优化器调度策略预热 → 余弦退火6. 可视化图表含义系统内置和独立脚本共生成以下图表均保存在train_result/traffic_violation_v1/charts/目录图表文件含义说明01_box_loss.png训练集与验证集的边界框回归损失对比曲线。两线同步下降表示模型正常收敛验证集 Loss 明显高于训练集则提示过拟合02_cls_loss.png训练集与验证集的分类损失曲线。反映模型对 7 类违规行为的识别能力提升过程03_dfl_loss.png分布焦点损失曲线。DFL Loss 下降说明边界框坐标预测越来越精准04_precision.png精确率随训练轮次的变化。曲线上标注了最优精确率所在的 Epoch05_recall.png召回率随训练轮次的变化。与精确率共同评估检测的全面性06_map50.pngmAP50 曲线是最常用的目标检测综合评估指标标注了最佳点07_map50_95.pngmAP50-95 曲线对定位精度要求更高数值相比 mAP50 偏低属正常现象08_f1_score.pngF1 综合得分曲线由 Precision 和 Recall 计算得出兼顾精确率与召回率09_learning_rate.png学习率衰减曲线。可观察预热阶段前 3 轮快速上升和余弦退火衰减过程7. 系统功能介绍系统采用PyQt6构建图形化界面通过侧边栏导航切换以下六大功能模块7.1 图片识别支持拖拽或文件选择打开图片JPG / PNG / BMP / WebP一键执行 YOLOv8 检测图上以中文标签 彩色边框标注结果统计卡片展示检测目标总数、类别数、平均置信度、最高置信度双 Tab 展示类别分布表 目标详细数据表含坐标、面积支持导出标注图片和检测结果 CSV 文件7.2 视频识别打开本地视频文件MP4 / AVI / MOV / MKV可设置每 N 帧检测一次兼顾速度与精度实时显示标注画面 进度条右侧实时统计当前帧目标及累计检测情况检测完成自动写入历史记录7.3 摄像头识别选择摄像头编号0~10一键启动实时采集画面并执行目标检测支持检测开关切换不检测时仅预览截图功能保存当前帧至screenshots/目录支持将本次会话结果保存至历史记录7.4 检测历史汇总所有图片 / 视频 / 摄像头检测记录支持按类型筛选图片 / 视频 / 摄像头和关键词搜索点击记录查看详情时间、模型、类别分布等支持导出历史数据为 CSV 文件支持一键清空历史7.5 模型管理支持浏览并切换不同的模型权重文件.pt/.onnx自动验证模型文件是否存在可视化调整推理参数置信度阈值、IoU 阈值、最大检测数模型信息展示路径、类别数、类别列表中英文对照7.6 指标展示直接读取训练产生的results.csv内嵌 Matplotlib 图表训练曲线Box Loss、Cls Loss、DFL Loss训练 vs 验证、综合性能曲线mAP / P / R / F1指标汇总末轮关键指标统计卡片 综合性能柱状图 学习率衰减曲线支持重新加载数据刷新图表7.7 登录 / 注册浅色渐变风格登录界面支持账号注册密码 SHA-256 加密存储data/users.json注册成功后自动跳转登录页默认账号admin/admin1238. 项目技术栈类别技术 / 库深度学习框架Ultralytics YOLOv8基于 PyTorch图形界面PyQt6图像处理OpenCV-Python、Pillow数据处理Pandas、NumPy可视化Matplotlib嵌入 PyQt6 的 QtAgg 后端数据增强Roboflow 平台数据存储JSON 文件历史记录、用户信息开发语言Python 3.9运行平台Windows 10/11支持 GPU 加速9. 项目结构c139/ │ ├── app.py # 程序入口初始化 PyQt6 并启动登录窗口 ├── login_window.py # 登录 / 注册窗口 ├── main_window.py # 主窗口侧边栏 页面堆栈 ├── train.py # 模型训练脚本 ├── visualize_results.py # 独立训练结果可视化脚本 │ ├── config/ │ ├── train_config.py # 训练超参数集中配置 │ └── label_map.py # 英文类别名 → 中文显示映射表 │ ├── core/ │ ├── detector.py # YOLOv8 检测器封装中文标注绘制 │ ├── history_manager.py # 检测历史记录 CRUD CSV 导出 │ └── user_manager.py # 用户注册 / 登录 / 密码加密 │ ├── pages/ │ ├── image_page.py # 图片识别页 │ ├── video_page.py # 视频识别页多线程 │ ├── camera_page.py # 摄像头实时识别页多线程 │ ├── history_page.py # 检测历史记录页 │ ├── model_page.py # 模型管理 参数设置页 │ └── metrics_page.py # 训练指标可视化页嵌入 Matplotlib │ ├── utils/ │ ├── styles.py # 全局 QSS 样式表浅色渐变主题 │ ├── widgets.py # 公共 UI 组件StatCard / PageHeader / Card │ └── data_utils.py # 数据集工具函数 │ ├── datasets/ │ ├── data.yaml # YOLO 数据集配置类别 / 路径 │ ├── train/labels/ # 训练集标注文件4,666 个 .txt │ └── valid/labels/ # 验证集标注文件390 个 .txt │ ├── train_result/ │ └── traffic_violation_v1/ │ ├── weights/ │ │ ├── best.pt # 验证集最优权重系统默认加载 │ │ └── last.pt # 最后一轮权重 │ ├── results.csv # 逐轮训练指标记录 │ ├── args.yaml # 训练参数快照 │ └── charts/ # 生成的可视化图表9 张 │ ├── data/ │ ├── history.json # 检测历史记录自动生成 │ └── users.json # 用户账号数据自动生成 │ └── screenshots/ # 摄像头截图保存目录自动生成10. 快速开始环境依赖pipinstall-rrequirements.txt启动系统python app.py首次启动时系统会自动加载train_result/traffic_violation_v1/weights/best.pt若存在若不存在请进入【模型管理】页面手动指定权重路径。重新训练在config/train_config.py中修改超参数后执行python train.py生成训练可视化图表python visualize_results.py本系统完整实现了深度学习项目从数据构建 → 模型训练 → 结果评估 → 系统集成的全流程适用于智慧交通、城市安防等应用场景的二次开发与功能扩展。本项目为个人原创结构清晰功能完整适合计算机视觉方向课程设计、毕业设计和项目演示使用。有定制化需求可以评论或私信作者。作者原创项目地址michael-jay.pages.dev/projects.html