Advertisement

基于深度学习的高精度交警检测识别系统(PyTorch+Pyside6+YOLOv5模型)

阅读量:

摘要

在这里插入图片描述

基本介绍

近年来,在人工智能领域取得了长足进展的机器学习与深度学习技术。其中,在检测效率与准确性方面表现出色的深度学习方法也得到了广泛认可。作为第五代目标检测算法代表之一的YOLOv5,在速度与准确性的平衡上较前代有了显著提升。根据实验结果表明,在速度与准确性能方面均有明显提升的情况下开源了相应的代码资源(https://github.com/ultralytics/yolov5)。本博文旨在基于YOLOv5单阶段目标检测算法设计了一种高精度交警识别系统,并通过搭配PySide6库开发相应的界面系统来实现目标检测识别页面的功能开发。值得注意的是随着AI技术的发展已有多款最新一代的目标检测算法相继出现例如YOLOv6、YOLOv7等新版本也将逐步更新采用最新一代算法进行开发的相关源码也将陆续发布供用户下载参考以满足更多复杂场景下的应用需求欢迎关注收藏

环境搭建

(1)获取YOLOv5源码库,并将其保存至个人电脑指定路径。随后在YOLOv5根目录下打开命令提示符,在此环境中运行相应的测试脚本。本次实验中所使用的演示目录为:D:\vscode_workspace\yolov5
(2)通过conda工具创建一个名为yolo5的环境,并执行conda create -n yolo5 python=3.8命令启动安装流程。按照官方仓库下载PyTorch 1.10.0版本,并结合CUDA 11.3版的TorchaVision库进行安装。为了提高代码运行效率与稳定性,在清华镜像仓库中获取依赖项以加速程序运行过程。确保显卡支持CUDA >= 11.3版本后即可完成初始化操作。最后按照requirements.txt文件指示完成其余依赖项的安装工作。

在这里插入图片描述
在这里插入图片描述

请按照以下命令安装Pyside6库:pip install pyside6==6.3 -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述

在 Windows 系统上使用 pip 命令依次执行以下步骤以完成 pycoh tools 的 安装 : 首先运行 pip install pycoh tools 并下载相关的组件包; 然后通过指定源码仓库获取最新版本 : 从 https : // pypi . tuna . tsinghua . edu . cn / simple 下载 。

界面及功能展示

本软件界面的设计方案采用了直观美观的设计理念

在这里插入图片描述

模型选择与初始化

用户可能通过点击模型权重选择按钮来上传训练好的模型权重;接着,在选择了该类别的训练权重格式后,请再次点击模型 weights 初始化按钮以完成已选 model weights 初始化信息的设置

用户可能通过点击模型重量选择按钮来上传训练好的重量值;接着,在选择了该类别的重量格式后,请再次点击重量初始化按钮以完成已选重量值初始化的信息设置

在这里插入图片描述
在这里插入图片描述

置信分与IOU的改变

位于Confidence或IOU参数下方的输入字段,在其数值发生变化时会即时同步更新滑动条的位置;同样地,在滑动条移动导致数值变化时也会即时反映到对应输入字段的位置调整。此外,在Confidence或IOU参数发生变更时会直接影响模型内的配置设置,并进而调节检测器中的置信度和交并比(IoU)阈值。

图像选择、检测与导出

用户可以点击选择图像按钮上传单张图片进行检测与识别。

在这里插入图片描述

再点击一次图像检测按钮可以实现输入图像的目标检测功能模块;随后系统会在时间记录栏中输出所用时间;在目标数量字段中显示已检出的目标总数;提供一个下拉列表让用户可以选择已经检出的目标项;当用户选择一个目标项后,默认会更新该目标的位置参数xmin和ymin;同时也会同步更新xmax和ymax。

在这里插入图片描述

再次点击检测结果展示按钮后,在其左侧方框中会显示输入图像的检测结果;该系统将展示识别出图片中目标的类别、位置及其置信度信息

在这里插入图片描述

通过单击'导出结果'按钮能够获得检测后的图像文件,在存储位置中录入图片名称并附加文件扩展名就可以完成检测成果图件的存储操作

在这里插入图片描述

启动结束图像检测按钮即可从而实现系统界面的刷新;随后需要清除所有输出信息,在执行完上述操作后,请再次点击选择图像或选择视频按钮以提交相应的文件。

视频选择、检测与导出

用户可能会点击选择视频按钮来提交视频用于检测与识别。随后,系统将在其界面左上角展示该视频的第一帧。

在这里插入图片描述

再次点击视频检测按钮即可完成通过目标检测功能进行操作,并且系统将实时更新各项参数信息。具体来说,则是在用时一栏显示本次操作所需时间,在目标数量一栏则会显示已成功识别出的目标总数,并且系统还提供了一个下拉式选择框供用户选择已识别出的目标。当用户从该列表中做出选择时,则会对应于各目标的位置参数(如xmin表示左边界坐标)的变化。

在这里插入图片描述

通过点击"暂停 video 检测"按钮可以执行输入 video 停 pause的操作。
此时按钮状态变为"continue video 检测"。
系统界面将保留 input 所有 frame 以及相应的 frame 检测 result。
用户可通过下拉 target box 选择已检定的目标 并提供其 coordinate position information。
随后再次点击"continue video 检测"按钮即可完成 input video 的 detection 过程。
通过 click "video 检测 result 导出" button 可以导出检定后的 video 文件。
在 save 栏中键入文件名及 extension 即可完成检定 result 的保存过程。

在这里插入图片描述

通过点击结束视频检测按钮的方式可实现系统界面的刷新;随后将输出信息全部清除,在随后再次点击选择图像或选择视频按钮时进行上传操作。

摄像头打开、检测与结束

用户可以选择启动摄像头按钮以启动摄像头设备进行检测与识别操作;随后,该系统会被用来接收来自摄像头设备的图像,并将这些图像显示在系统界面的左上方区域。

在这里插入图片描述

再次点击摄像头上的"检测按钮"即可完成对摄像头进行目标检测的操作。系统会在"时间记录栏"中记录目标检测所需的时间,在"数量统计栏"中显示已识别的目标总数,并通过下拉列表可以选择已识别的目标。当目标的位置发生变化时(如 xmin、ymin、xmax 和 ymax 的值发生变动),系统会相应地更新相关参数。

在这里插入图片描述

通过点击结束视频检测按钮的操作可实现系统界面刷新,请清除当前的所有输出信息。随后再次点击"选择图像"、“选择视频"或者"启动摄像头"按钮,则可实现上传功能。

算法原理介绍

复制代码
    本系统采用了基于深度学习的单阶段目标检测算法YOLOv5,相比于YOLOv3和YOLOv4,YOLOv5在检测精度和速度上都有很大的提升。YOLOv5算法的核心思想是将目标检测问题转化为一个回归问题,通过直接预测物体中心点的坐标来代替Anchor框。此外,YOLOv5使用SPP(Spatial Pyramid Pooling)的特征提取方法,这种方法可以在不增加计算量的情况下,有效地提取多尺度特征,提高检测性能。YOLOv5s模型的整体结构如下图所示。
在这里插入图片描述

YOLOv5网络架构由Input模块、Backbone、Neck和Prediction四个部分构成。Input模块作为网络输入端,在处理阶段采用混合式数据增强技术对输入数据进行随机裁剪过程,并通过拼接的方式完成数据整合。Backbone作为特征提取模块,在网络性能方面起着关键作用。在特征提取环节中,YOLOv5采用了CSPNet(Cross Stage Partial Network)架构,该方法将原始特征图划分为两部分,一部分通过多层卷积层进行深度处理,另一部分则直接进行下采样操作,最终将这两部分中间特征图进行融合处理。这种设计使得模型在非线性表达能力方面得到显著提升,能够更加精准地应对目标检测任务中的复杂背景环境及多样化的物体类别识别需求。在Neck阶段,YOLOv5采用连续卷积核C3结构进行特征图融合操作。而在Prediction阶段,模型基于结果特征图输出目标中心坐标信息及其尺寸参数信息。根据博主观点,YOLOv5是一种兼具高性能与高准确率的目标检测解决方案,能够在分类与定位任务中展现出良好效果。然而随着算法研究的深入,YOLO系列中的更新版本如YOLOv6、YOLOv7及YOLOv8等也不断涌现并取得显著进展,未来博主计划将这些先进算法应用到本系统中,期待能为实际应用带来新的突破和发展机会

数据集介绍

本系统采用了人工标注的方式对交警类别进行了明确标识,在包含共588幅图片的数据集中展开了研究。各类别中包含大量不同姿态以及多样化的光照条件的数据特征能够有效提升模型性能,在本研究中使用的交警检测识别数据集包含了训练集425幅图片和验证集163幅图片。YOLOv5算法对输入图片尺寸有严格要求,在不影响检测精度的前提下需要将所有图像统一调整至640x640像素大小并保留原有比例。同时为了提高模型的泛化能力和抗干扰能力并采用包括随机旋转、缩放、裁剪和颜色变换等在内的数据增强技术以扩充训练样本并减少过拟合风险

关键代码解析

该系统采用PyTorch框架构建了深度学习模型,并基于YOLOv5算法展开目标检测工作。在训练过程中,我们选择预训练模型作为起始模型,并通过逐步优化网络参数来提升其识别能力。为了提高模型的泛化性能,在这一过程中融入了学习率衰减策略以及数据增强技术。在测试环节中,我们利用已训练完成的模型对新收集到的图片与视频进行目标检测操作。具体而言,在获取候选框后会设定置信度阈值以去除低置信度的检测框,并最终获得最终的检测结果。
此外,在实际应用中还支持将这些结果保存为图片或视频文件的形式以便后续分析研究及应用开发。
该系统基于YOLOv5算法框架,并采用PyTorch技术实现。
代码中用到的主要库包括PyTorch、NumPy、OpenCV、PyQt等。

在这里插入图片描述
在这里插入图片描述

Pyside6界面设计

Pyside6是一种基于Python语言的图形用户界面(GUI)开发解决方案,在众多 GUI 编程方案中占据重要地位。本文介绍了一种利用 Pyside6 库构建 GUI 应用的方法,在实际操作中可快速生成功能完善的 GUI 应用程序。
具体而言,在本文中我们将采用 Pyside6 库构建了一个直观且功能强大的图形界面,在界面上提供了一系列常用的 UI 控件选项:标签项、按钮控件、输入字段以及多选框控件等。
通过上述方法的具体实施步骤可知,在界面上配置完成后可以通过 Pyside6 的信号槽机制使得各个组件之间能够高效通信,
从而实现了让用户能够方便地选择图片和视频进行目标检测的过程。

实验结果与分析

在实验结果及分析部分中,我们采用了准确率与召回率等指标来评估模型性能,并基于损失曲线以及PR曲线深入分析了训练效果。在模型训练阶段中,我们采用了前面所述的交警数据集作为训练数据,并运用YOLOv5算法对其进行系统性训练工作。整个训练过程共计进行了300个epochs的迭代优化。为了直观追踪模型学习动态,在每次迭代结束后均利用TensorBoard记录了模型在训练集与验证集上的损失曲线变化情况。从图示数据可以看出,在逐步增加样本处理数量的过程中,模型的平均损失值持续下降趋势明显,并且验证集上的损失值也在稳步缩减。这表明模型逐渐掌握了更为精细的目标识别特征。经过全部训练任务结束后,在独立测试用例上进行了模型评估工作,并得出了具体表现如下

在这里插入图片描述

下图呈现了我们训练的YOLOv5模型在验证集上的PR曲线。通过查看该PR曲线图可以看出,在验证集测试中我们的YOLOv5模型实现了较高的Recall值和Precision值。

在这里插入图片描述

该图片展示了在本博文中通过Mosaic数据增强技术处理的训练图像。

在这里插入图片描述
在这里插入图片描述

总结本次实验所得的YOLOv5模型在数据集上的优异表现。
此外,在对整个系统进行全面测试后,
最终开发出一套流畅且高精度的目标检测系统界面。
完整的UI界面、测试图片视频以及代码文件资料可通过私信获取。

全部评论 (0)

还没有任何评论哟~