基于深度学习的高精度交通标志检测系统(PyTorch+Pyside6+YOLOv5模型)
摘要

基本介绍
近年来,在人工智能领域中,机器学习与深度学习技术取得了显著的进步。在检测精度和速度这两个关键指标上而言,深度学习方法相较于传统方法展现出了更为优异的表现。YOLOv5是一种基于单阶段目标检测框架的第五代改进算法,在实验结果表明,在速度和准确性两个方面均有显著提升的基础上被提出。为了展示该技术的核心优势及其应用潜力,在本文中我们采用YOLOv5检测算法为基础设计并构建了一个高精度的交通标志识别系统,并通过结合PySide6编程库开发了用户界面系统来实现目标检测识别功能模块的具体实现工作。随着研究的深入发展,YOLO系列已衍生出包括YOLOv6、YOLOv7、YOLOv8等多个版本的新一代改进算法。后续计划将提供该系统的升级版本,并支持最新的YoloV8等算法实现;如有兴趣的朋友欢迎关注并收藏本文内容
环境搭建
( )将完整文件下载至本地电脑,在终端中运行" "后启动对应的文件夹
( )在终端中运行" "后启动对应的文件夹
( )在终端中运行conda create -n yolo5 python=3.8
安装PyTorch及其视觉库:" "后完成安装
其中- i https://pypi.tuna.tsinghua.edu.cn/simple表示启用了清华镜像
此命令需确保nvidia-smi显示的CUDA版本不小于 ,以满足后续操作需求
最后安装余下依赖项,请运行:" "完成所有步骤


在Python环境中使用pip命令安装指定版本的Pyside6库并从指定来源下载

为了在windows系统下完成pycocotools库的安装过程:pip install pycocotools -i https://pypi.tuna.tsinghua.edu.cn/simple
界面及功能展示
本博文所设计的软件界面具有简洁大方的特点。主要功能模块涵盖训练模型导入及初始化操作。置信度阈值与目标框iou阈值调节是该系统的核心配置参数,在具体应用中需根据实际需求进行合理设置。图片上传后进行目标识别,并通过可视化工具展示初步检测结果。对于视频数据,则同样支持实时处理功能:上传后立即启动目标识别流程,并通过可视化工具实时更新分析结果。系统还提供了完整的操作记录功能:已识别的目标列表及位置信息显示将实时更新并保存供后续查询分析使用。此外,在模型运行过程中会自动统计运算时间参数(即前向推理用时),以便于后续优化改进工作。期待用户对本系统表现的认可和反馈,请持续关注后续更新内容

模型选择与初始化
用户可以选择点击"模型权重选择"按钮来上传训练完成的模型权重;支持的文件格式包括.pt、.onnx以及.engine等多种类型;随后点击"模型权重初始化"按钮即可完成已选中模型初始化信息的配置。


置信分与IOU的改变
通过Confidence或IOU下方的输入框中更改数值即可实现同步调整滑动条的位置。同时,在滑动条上进行位置调整也会相应地影响到输入框中的数值显示。这些数值的变化将会被模型中的配置参数所接收,并最终导致检测时所使用的置信度阈值和IoU阈值发生相应调整。
图像选择、检测与导出
用户可以点击选择图像按钮上传单张图片进行检测与识别。

再次点击图像检测按钮即可完成输入图像的目标检测功能。随后系统将在'用时'列中记录每次检测所花费的时间,在'目标数量'列中会显示当前已探测到的目标总数。在下方选择框中可以选取已经探测到的目标,在其对应的目标位置参数(如xmin、ymin、xmax及ymax)数值发生变动。

再次点击检测结果展示按钮后,在系统左下方将显示输入图像的检测结果,并能够识别并输出目标的类别、位置及其置信度数据

单击"图像检测结果导出"按钮以下载生成的结果图,并在存储位置填写图片文件名及其扩展名以便完成后续处理

启动关闭图像检测按钮从而完成系统界面的刷新。清除所有输出信息随后再次被触发选择图像或选择视频按钮以实现上传功能。
视频选择、检测与导出
通过启动视频选项按钮并提交该视频用于分析过程中的识别阶段后,系统将在界面左侧顶端呈现该视频的第一帧画面。

通过再次点击视频检测按钮即可实现输入视频的目标检测功能。随后系统将在"用时"列中记录每次检测所耗时间的同时会显示当前已识别出的目标总数。用户可以在下拉列表中选择已检出的目标,并根据其位置坐标(即xmin、ymin、xmax以及ymax)的变化进行相应设置。

通过按下暂停 video 检测 button 的操作可触发 input 视频执行暂停功能,
此时 button 状态转变为继续执行 video 检测操作,
系统界面将临时存储当前捕获的所有 frame 及其对应的 frame 分析数据,
通过下拉 target box 中的目标列表可以选择已确定的目标坐标信息,
完成上述操作后再次按下 continue video 检测 button 将完成整个 video 检测流程。
通过激活 video 检测结果导出 button 可获取已完成 video 的 detection 数据 result,
在 save bar 区域中键入待保存 file 名及文件扩展名字段即可完成 result 的存储过程。

通过 clicking the stop video detection button, you can achieve the refreshing of the system interface. Clear all output information cleanly, then click again on the image selection or video selection button to upload corresponding images or videos.
摄像头打开、检测与结束
用户可以通过按下摄像头按钮启动摄像头设备并完成检测与识别工作。随后, 系统将捕获的摄像头图像输入至界面左侧区域以供展示。

通过再次点击摄像头上的检测按钮即可完成对摄像头进行目标检测的功能。随后系统将在时间记录栏中显示本次目标检测所需的时间。同时在目标计数栏中显示当前已识别出的目标数量。此外在选项列表中提供已识别出的目标供用户进行选择。这些信息将根据目标位置(即xmin ymin xmax以及ymax)的坐标值发生相应的变化

单击结束视频检测按钮即可导致系统界面刷新,并将所有输出信息清除。随后,请单击选择图像、选择视频或启动摄像设备来上传相应内容。
算法原理介绍
本系统采用了基于深度学习的单阶段目标检测算法YOLOv5,相比于YOLOv3和YOLOv4,YOLOv5在检测精度和速度上都有很大的提升。YOLOv5算法的核心思想是将目标检测问题转化为一个回归问题,通过直接预测物体中心点的坐标来代替Anchor框。此外,YOLOv5使用SPP(Spatial Pyramid Pooling)的特征提取方法,这种方法可以在不增加计算量的情况下,有效地提取多尺度特征,提高检测性能。YOLOv5s模型的整体结构如下图所示。

YOLOv5网络架构由输入模块、主干模块、精简模块及预测模块构成。其中输入模块位于网络前端,在采用Mosaic数据增强策略的基础上对输入数据实施随机裁剪并拼接处理;主干模块负责特征提取工作,在这一环节YOLOv5采用了CSPNet结构进行特征提取;为了实现更高效的特征融合主干模块将原始特征图分为两部分一部分通过多层卷积层逐步精处理另一部分则直接进行下采样操作随后将两部分特征图进行深度结合最终形成统一的特征表示;通过这种分阶段的特征融合方式YOLOv5实现了更强的非线性表征能力显著提升了目标检测任务中的识别效果;在精简模块中连续应用卷积核C3结构块完成各尺度特征图间的融合;预测模块则基于结果特征图输出目标中心坐标及其尺寸参数;作为目标检测领域的高性能解决方案YOLOv5凭借其精确高效的检测能力受到了广泛认可;当前随着YOLO系列算法的发展新版本如YOLOv6YOLOv7及YOLOv8等相继推出并不断优化改进;博主也计划将其研究成果逐步应用于本系统后续开发敬请期待
数据集介绍
本系统采用了一种名为交通标志的数据标注方法,在该系统中被标记为了指示标志、静止标志以及警示标志三大类。该数据集合总数量为17856张图片,在各类别中都具有丰富的旋转实例以及多样的光照条件分布情况。为了提高模型性能目标,在本文实验中选取了包含训练集16356张图片与验证集1500张图片的数据集作为研究基础。其中选取部分样本图像如下图所示进行展示分析。由于YOLOv5算法对输入图像尺寸有一定限制要求,在实际应用中需要将所有图像统一至固定尺寸标准下进行处理工作才能满足算法运行需求。为了尽可能减少图像失真影响同时又能保证检测精度水平,在模型训练阶段统一采用了统一大小为640x640像素的标准进行处理工作。此外在提升模型泛化能力和抗过拟合能力方面还融合了多种数据增强技术手段包括但不限于随机旋转在-20°到+20°之间变化缩放比例在±1.2倍之间波动裁剪操作以及色彩变换等多维度优化措施从而有效扩充了原始数据集合规模并降低了潜在过拟合风险

关键代码解析
本系统的深度学习模型采用PyTorch框架实现,并依托于YOLOv5算法进行目标检测。在训练环节中,默认以预训练模型为基础构建了初始模型,并经过反复优化网络结构参数以提升检测效果。为了增强其泛化能力和鲁棒性,在这一过程中综合运用了学习率衰减策略以及数据增强技术


Pyside6界面设计
作为解决Python程序GUI开发问题的一个有效方案,Pyside6库能够迅速生成功能完善的图形界面。在本文中我们将详细讲解如何利用Pyside6库来创建一个直观的交互界面让用户能够轻松选择并上传图片视频以实现目标检测功能。
实验结果与分析
在实验结果及分析部分中, 我们采用了精度和召回率等指标来评估模型性能, 并借助于损失曲线以及PR曲线对模型进行性能分析. 在具体的训练阶段中, 我们基于前面介绍的交通标志数据集进行建模, 采用YOLOv5算法构建模型架构并对数据集进行系统性训练. 整个过程共计经历了300个轮次迭代. 在每一次迭代过程中, 我们都会利用tensorboard记录下当前模型在训练集以及验证集上的损失变化情况. 如图所示, 随着训练轮数的增多, 模型不仅展现了持续下降的趋势特征, 并且其验证误差的表现也逐步趋近于稳定状态. 这一现象表明, 模型正在不断优化自身的特征提取能力. 训练结束后, 我们对模型进行了系统性评估工作

通过图表可以看出我们训练的YOLOv5模型在验证集上的PR曲线。根据图表可看出该模型在验证集上达到了较高水平的召回率与精确率,并且整体表现优秀。

该图像展示了本博文在基于YOLOv5模型对交通标志数据集进行Mosaic数据增强训练时的应用情况。


综上所述,在本篇博文中通过训练得到了YOLOv5模型,在数据集上展现出良好的性能水平,并具备较高的检测精度和抗干扰能力。此外,在经过全面测试后发现该系统在实际应用场景中具有良好的适用性,并最终开发出一套流畅且高精度的目标检测系统界面。即为本文演示部分的内容展示
基于深度学习的多种目标检测方案涵盖西红柿猫狗山羊等野生动物头盔交警等场景欢迎关注本人账号从中获取所需资源
完整项目目录如下所示:

