基于YOLOv8深度学习的智慧交通非机动车交通违规行为自动检测系统
随着城市交通日益复杂程度不断提升,在非机动车领域(尤其是电动自行车与电动滑板车等新型交通工具)中出现了越来越多违反交通规则的行为,在这些行为中存在较大安全隐患并严重影响着道路通行效率。传统的人工值守与机械执法手段在提高安全系数方面效果有限且难以应对大规模实时监管需求。面对这一困境人们亟需一种高效可靠的解决方案而基于深度学习算法构建的智能化自动监控系统已然成为解决这一挑战的核心方案
本研究开发了一款基于YOLOv8深度学习模型的智慧交通非机动车违规行为自动检测系统。该系统旨在利用实时视频流自动识别并分类非机动车人的违规动作,并涵盖"非机动车横穿马路"以及"非机动车斑马线违规"两大类别。该系统结合PyQt5框架进行人机交互界面的设计与实现,并从而实现了用户操作简便、便于即时查看检测结果的功能。系统的核心技术模块主要负责通过YOLOv8模型实现目标物体的精准识别。通过精确识别非机动车人的各种违规动作特征,并实现了对交通违法行为的即时监测与预警机制
在数据集方面
研究表明,在检测非机动车横穿马路违规行为以及斑马线违规行为方面
算法流程
Tipps:建议对项目的算法流程进行全面剖析,在系统地探讨核心技术机制的同时,请关注各环节的关键点设置及运行规律分析。具体而言,在数据导入及预处理阶段开始,在设计阶段及其优化过程展开,在结果展示环节直至最终呈现完整成果的过程中均采用清晰有序的组织方式,并以简洁明了的语言进行阐述以确保技术细节的真实性和完整性。建议重点围绕各步骤中的关键节点展开深入探讨并总结相应的经验教训以期达到预期目标

模型训练
Tipps:模型的训练、评估与推理
1.YOLOv8的基本原理
YOLOv8作为SOTA模型代表,在Yolo系列历史版本的基础上进行了深入优化与创新性设计。该系统新增了功能模块与优化内容,在保持原有框架优势的同时提升了整体性能与计算效率,并特别适合用于目标检测、图像分割以及人体姿态估计等多种应用场景。具体而言,在以下方面进行了优化:引入了新型神经网络架构、开发了一种新型检测算法框架以及设计了一种新型损失函数计算方案,在多类硬件平台上展现出良好的兼容性和高性能特性。

在YOLO系列中占据领先地位的是YOLOv8,在各项关键指标上均超过了当前的对象检测及实例分割技术。该系统汲取了YOLOv5、YOLOv6以及YOLOX等模型的优势,并基于对提升并优化YOLOv5架构的基础上完成了改进工作的同时,并未放弃继承并保留了YOLOv5工程化设计的简洁性和实用性。
Yolov8模型网络结构图如下图所示:

2.数据集准备与训练
本研究采用了包含非机动车交通违规图像目标的数据集,并利用Labelimg标注工具对每张图像的目标边界框及其类别进行了标注。基于该数据集应用了YOLOv8n模型进行了训练。随后,在验证集中展开了全面的性能评估与对比分析。整个实验流程包括以下阶段:数据准备阶段、模型训练阶段以及模型评估阶段。研究的主要目标集中在非机动车交通违规行为分类识别上。所涉数据集共计包含1966张图片,在具体分布上主要呈现如下特点:
训练集:包含了1375张图像,并主要应用于模型的学习与优化过程。
验证集:包含了394张图像,并用于检验模型对新数据的泛化能力以及避免过拟合现象。
测试集:包含了197张图像,并经过全面验证以检验其实际应用效果。
数据集分布的可视化图表

部分数据集图像如下图所示:

部分标注如下图所示:

该数据分配策略确保了训练阶段的数据集在各阶段(训练、验证、测试)中的均衡分布情况,并为YOLOv8n模型的开发及其性能评估提供了可靠的基础支持。
在项目目录内创建一个datasets目录,并将收集到的图片按照训练集与验证集的比例分配至该目录中

随后需要建立一个data.yaml文件用于管理训练数据的路径及模型需要进行检测的类别;该文件包含训练数据路径的信息以及模型需要进行检测的类别信息并会将读取这些信息以指导训练与验证过程

这个文件明确了涉及模型训练与验证的数据集路径,并且包括模型需要检测的目标类别。
完成数据准备工作后, 使用train.py文件进行模型训练. 其中, epochs参数用于调节模型训练周期的数量, batch参数的作用在于调节每次输入的数据批量大小(通常受内存限制, 在最低设置为1).
CPU/GPU训练代码如下:

导入名为yolov8n.pt的预训练YOLOv8模型文件,并将其标记为预先训练好的状态。采用YOLO模型进行训练工作,请注意以下参数设置:其中data的数据集配置文件路径由data_yaml_path变量指定;设置总训练轮数为150个周期;批次大小设定为4个样本;选择SGD优化器作为更新参数的工具;此次实验任务被命名为train_v8以便后续追踪和分析
3.YOLOv8模型训练结果与性能评估
在深度学习的过程中,在分析模型训练过程中的关键指标变化趋势时,我们通常会关注指标曲线的变化情况。YOLOv8模型的训练过程主要包含三种不同的损失指标:定位误差指标(box_loss)、分类准确性指标(cls_loss)以及动态特征精细度指标(dfl_loss)。其中涉及的主要三种类型。
损失函数作用说明:
(1)定位损失 (box_loss):该损失衡量了预测边界与真实边界之间的差异(GIoU指标),值越小则定位精度越高。
(2)分类损失 (cls_loss):通过评估锚框与其对应的真实分类是否匹配的结果越高。
(3)动态特征损失 (dfl_loss):该方法通过DFLLoss计算预测边界与目标边界之间的距离,并根据特征图的尺度信息进行优化调整。最终能够提升目标检测的定位准确性。
训练和验证结果文件存储:
训练完成后,相关的训练过程和结果文件会保存在 runs/ 目录下,包括:

用于展示损失变化的可视化图表(Loss Curves)。这些图表帮助分析模型在不同阶段的表现。此外,还提供了性能评估的关键曲线图(平均精度mAP、精确率和召回率)。这种图形化表示方法能够直观地反映模型在各个度量上的表现情况。此外,在分类模型开发中还使用了混淆矩阵用于分类模型性能评估(Confusion Matrix)。混淆矩阵通过真实标签与预测结果之间的对比关系来计算准确性和误分类情况等关键指标。此外,在信息检索系统中常用Precision-Recall (P-R) 曲线来评估信息检索系统的性能表现。Precision-Recall (P-R) 曲线通过绘制不同阈值下的精确度与召回率关系来全面衡量系统的检索效果。
损失曲线(Loss Curve)和性能指标分析:

训练指标体系:
train/box_loss:
描述:
表示在训练过程中Box Loss损失项的具体表现。
趋势:
随着模型不断优化,在Box Loss损失项上取得了显著进展。
该变量用于表示训练过程中类别分类损失(Classification Loss)的变化情况。
同样地,在这一过程中可以看出分类损失随着训练步骤的增加而持续下降。
该损失函数train/dfl_loss体现了Distribution Focal Loss的变化趋势,并被应用于边界框分布精度的优化。随着训练过程的发展,此损失函数逐渐减小。这表明模型在深度特征学习过程中表现出色。
用于评估的标准:该指标表示验证集上边界框损失(Box Loss)的变化情况。描述该指标表示验证集上边界框损失(Box Loss)的变化情况。随着训练过程的推进,在验证集上的边界框损失持续下降,并表明模型在面对测试数据时表现出更强的适应性。
Validation Set Classification Loss: 该指标表示验证集上类别分类损失(Classification Loss)的变化趋势。随着训练过程的进行,在线学习算法通过不断优化模型参数使得验证集分类损失呈现持续下降的趋势,在逐步降低的同时模型对测试数据的分类能力也得到了显著提高。
val/dfl_loss:
描述: 表示该指标反映了验证集上DFL Loss的变化情况。
趋势: 该损失持续下降, 表明模型在验证集上的深度特征学习能力有所增强。
性能指标项 metrics/precision(B) 用于衡量模型在训练集上精度的变化情况。该指标反映了模型在不同阶段对正类样本识别能力的演变趋势。从实验结果来看,在训练过程中该值持续上升至稳定状态前均呈现上升趋势,在达到稳定状态后则维持相对平稳水平。这表明模型在识别正类样本时表现出较高的准确性,并且其学习效率得到了有效提升
该指标(metrics/recall(B))反映了模型在训练集上对正类样本的识别能力。从数据可以看出,在测试过程中该指标始终保持在99%以上(趋近于完美),并未出现明显的提升或下降趋势。
metrics/mAP50(B):
该指标(mAP@50)用于衡量模型在验证集上的目标检测性能,在IoU≥50%的情况下计算平均精度。
从训练过程来看,在逐步优化后该指标持续增长,并最终收敛于较高数值。这表明模型在整个目标检测任务中表现出较强的整体性能。
metrics/mAP50-95(B):
描述: 表示验证集上 IoU 从 50% 到 95% 时的综合平均精度(mAP@50-95)。
趋势: 此值随着训练逐渐增加,显示出模型在精度要求更高的检测任务中的表现得到提升。
总结:
(1)训练过程中的各项损失均显示出逐渐下降的趋势,表明模型的学习过程在不断优化。
(2)精度、召回率、mAP指标的上升反映了模型在训练过程中的检测能力和准确性逐步提高,尤其是mAP50和mAP50-95的提升,表示模型的目标检测能力有了显著增强。
(3)验证集的损失也在逐步减小,说明模型不仅在训练集上表现好,在验证集上的泛化能力也在提高。
Precision-Recall(P-R)曲线分析:

曲线说明:
蓝色曲线用于表示以下两个关键指标:
(1)其中第一条曲线对应于“Crossing Violation”行为(即非机动车横穿马路),其精度值达到0.983。
(2)第二条表明“非机动车横穿马路”违规行为与精度、召回率之间的关系。
橙色曲线:
(1)表示 "Crosswalk Violation"(非机动车斑马线违规行为),其精确度(Precision)值为0.993。
(2)该曲线揭示了"非机动车斑马线违规行为"这一违规模式下精确度与召回率之间的关系。
蓝色粗线:
(1)代表“All classes”,其平均精度mAP@0.5达到98.8%。
(2)该曲线汇总了各类别的性能表现,直观反映了整体模型在各类检测任务中的准确率与召回率。
在Precision-Recall曲线上用蓝色标记的是"非机动车横穿马路"违规行为,在橙色线条上则标注的是"非机动车斑马线违规"的情况。以粗线形式展示的是各类别检测性能的整体表现。该模型在非机动车横穿马路及斑马线违规这两类场景中均展现了较高的精确率与召回率。
混淆矩阵 (Confusion Matrix) 作为分类模型性能评估的重要分析工具

结论:
该模型在识别非机动车交通违法行为方面具有较高的准确率,在对绝大多数样本实现正确的归类的同时,在一定数量的样本上出现了分拣错误以及场景误判的情况,并仍需持续改进。
4.检测结果识别
完成模型训练后, 我们能够产出一个最优的结果模型best.pt文件, 该文件位于runs/train/weights目录中. 该文件可用于后续的推理检测工作. 其中, 请注意 imgTest.py 包含图片检测代码的具体实现.

加载所需库如下:
(1)从ultralytics库导入YOLO模型类;
(2)使用OpenCV模块进行图像处理和显示。
模型文件路径配置与图像文件路径设置如下:
(1)定义模型文件路径为' models/best.pt ':
该模型文件将用于目标检测任务。
(2)指定目标图像文件的完整路径为TestFiles/imagetest.jpg:
该图片将被用于检测过程。
加载预训练模型:
(1)model = YOLO(path, task='detect'):通过指定路径加载YOLO模型,并将检测任务配置为目标检测 (detect)。
(2)通过 conf 参数配置目标检测的置信度阈值,并利用 $iou 参数设定非极大值抑制(NMS)中的交并比(IoU)阈值。
检测图片:
(1)results = model(img_path):该方法通过调用预训练模型对指定输入的图像文件进行识别并解析,并将结果存储在 results 变量中。
显示检测结果:
(1)res = results[0].plot():输出并呈现绘制在图像上的检测结果。
(2)cv2.imshow(“YOLOv8 Detection”, res):通过OpenCV技术展示并配置窗口标题为"YOLOv8 Detection"的检测后图像。
(3)cv2.waitKey(0):等待用户按下任意键以关闭显示的窗口。
执行imgTest.py代码后,会将执行的结果直接标注在图片上,结果如下:

这段输出是基于YOLOv8模型对图片“imagetest.jpg”进行检测的结果,具体内容如下:
图像信息:
(1)处理的图像路径为:TestFiles/imagetest.jpg。
(2)图像尺寸为640×640像素。
根据上述分析可知:通过模型对图片进行分析后发现,在照片中识别出1个'Crosswalk Violation'(非机动车闯红灯行为)
处理速度:
(1)预处理时间: 5.2 毫秒
(2)推理时间: 6.0 毫秒
(3)后处理时间: 72.6 毫秒
总结:
(1)该系统识别出"Crosswalk Violation"违规行为,并具有较高的推理效率。
(2)尽管前两个阶段运行迅速,在后处理环节仍需较长的时间。
(3)总体而言推理耗时较短,在实时应用方面表现良好。
运行效果
– 运行 MainProgram.py

主要功能:该系统具备以下核心功能特点:(1)能进行在线处理目标图片中的非机动车交通违规图像检测;(2)能够实现多种数据源的接入与整合,并支持批量处理能力;(3)界面能够动态呈现目标定位结果、目标数量统计以及相应的置信度和用时信息;(4)系统能够存储相应的检测结果。
2.检测结果说明:

(1)置信度门限:本系统设定为0.25,在此门限之上才进行目标输出筛选;模型对每个目标的信任程度越大,则表示其对该目标被正确识别的概率越高。
(2)交并比门限:本系统设定为0.70,在此门限之上才被视为有效的检测边界;即衡量检测边界与真实边界重叠区域的比例;该指标反映了两个边界之间相似性的程度。
这两个参数常被用来应用于目标检测系统中,在改变它们时将直接影响模型的检测精度和误检率。
该界面图示展示了基于YOLOv8的目标检测系统的结果界面。以下是对各字段的具体说明:

(1)该模型完成检测所需的时间为0.038秒。
(2)该模型体现了其实时处理能力,并具有极快的检测速率。
目标数目(Number of objects detected): (1)识别出的目标数量为1,即当前捕获的第一个目标。
此处提供了一个目标分类选择菜单,请操作者根据需求进行设置

Result: 非机动车越行越远的行为表明系统正在进行Crossing Violation detection。
(1)这表明该模型识别出的物体类别中包含非机动车横穿马路这一项的分类信心值为84.23%。
(2)这里的置信度指标衡量了模型对该检测结果的信任程度,在这一指标下较高的数值意味着更高的信心水平。
(1)x坐标值为156、y坐标值为122的位置信息标记为目标区域的起始点。
(2)x坐标值为186、y坐标值为214的位置数据标记为目标区域的结束点。
这些坐标作为图像中的目标区域标记使用,并限定了检测到的'非机动车越行越危险'的位置。
这张图详细记录了一次非机动车交通违规图像检测的结果内容,涉及多个因素如检测时间.违规类型.行为置信度及目标位置信息等.用户可通过界面观察并评估这些结果能有效提高非机动车交通违规图像目标检测的效率.
3.图片检测说明
(1)非机动车斑马线违规

(2)非机动车横穿马路

启动图片操作流程,在界面上可以选择待检图片或指定包含多个待检图片的文件夹进行批量处理。
操作步骤如下:
(1)单击目标筛选器后可查看预设筛选结果。
(2)单击保存选项将检测结果存储于 save_data 文件夹内。
检测结果:系统检测出图片中的非机动车交通违规图像实例,并被系统显示出来。具体包含总数量的数据以及各个维度的详细信息如用时、目标类型、置信度和位置坐标等。
检测结果:系统检测出图片中的非机动车交通违规图像实例,并被系统显示出来。具体包含总数量的数据以及各个维度的详细信息如用时、目标类型、置信度和位置坐标等。
4.视频检测说明

单击视频按钮后会启动程序并自动完成挑选所需检测的视频过程,并在完成一次操作后会自动显示检测结果;再次单击可关闭当前正在播放的视频内容。
单击保存按钮后系统将对当前检测结果进行存储操作并将其存储路径设置为:save_data目录下。
监测数据显示:该系统能够实时监控视频流,并能识别出非机动车越行越过的图像片段,并将这些关键数据反馈给操作人员。通过表格形式展示了各次检测事件的发生置信度及具体位置坐标
该界面呈现了系统在视频帧中的多目标检测性能,具备对非机动车穿越马路场景的图像目标进行准确识别的能力,并输出包括详细检测结果及相应的置信度评分信息。
5.摄像头检测说明

按下启动摄像头按钮,则会使得摄像头处于开启状态;该装置具备实时检测能力;再次按下,则会关闭摄像头设备。
检测结果:该系统通过摄像头实时采集数据并对道路场景进行分析评估。
实时回放摄像头画面,并对被监测行为的位置进行标记。
每帧图像的详细监测数据均被记录在表格中。
6.保存图片与视频检测说明

当用户点击"保存"按钮时, 系统会自动识别并处理当前所选的所有图像以及相关视频内容. 在此操作完成后, 所有被处理后的图像与视频内容会被系统自动识别并存储到指定位置.
这些图像与视频内容会被系统自动识别并存储到指定位置.
以上即为详细的文件管理信息.

该CSV文件记录了图片的相关信息,并列出了以下具体数据:具体包含图片路径这一栏位的信息、对应的目标编号这一栏位的信息以及目标所属类别这一栏位的信息等详细字段数据。其中置信度一栏的数据则代表系统对该预测结果的信心程度。此外还有目标坐标位置这一栏位的信息,在此 CSV 文件中具体记录了每个目标对应的检测框左上角和右下角两点的x和y坐标值等详细信息

(1)图片保存

(2)视频保存

– 运行 train.py
1.训练参数设置

(1)取自data_yaml_path变量值对应的数据集配置。
(2)设定总训练迭代次数为150次。
(3)每一批次处理的图像数量设为4张。(批大小)
(4)将训练结果存储至命名为train_v8的目标目录下。
(5)采用SGD算法作为优化器。
然而,在大多数深度学习任务中普遍认为GPUs能够显著提高训练速度。
尽管如此,在某些情况下如硬件限制或其它技术瓶颈的影响下,
必须在CPU上完成深度学习模型的训练。
温馨提醒:在使用深度学习模型进行训练时,请注意以下事项——在CPU环境下完成训练任务通常会耗时更多(尤其是像YOLOv8这类计算密集型的任务)。只有当有特殊需求时才建议选择CPU环境以节省时间;否则一般推荐采用GPU环境以获得更好的效率表现。
2.训练日志结果

这张图展示了使用YOLOv8进行模型训练的详细过程和结果。
训练总时长:
(1)经过了150轮的训练后,在累计耗时上达约一个半小时。
(2)本次研究主要采用了NVIDIA GeForce RTX 3070 Ti显卡作为计算平台。
(3)该研究系统展现出卓越的训练效能,在性能上得益于YOLOv8模型的优化设计以及高性能硬件的支持。
验证结果:
(1)mAP@50:98.8。
(2)mAP@50-95:63.8%。
速度:
(1)预处理时间:0.3ms
(2)推理时间:1.5ms
(3)后处理时间:1.0ms
验证数据位于 runs\detect\train_v8 目录中
完成情况:
(1)整个验证流程成功退出:表明整个验证过程顺利完成且无错误发生。
总结:
经过150个训练周期的系统性优化后, 模型在非机动车横穿马路与斑马线违规行为检测方面展现出了卓越的表现, 实现了高准确率的目标. 同时, 在这一过程中, 损失值持续下降, 而相应的精度持续提升. 最后, 模型整体表现出良好的性能.
