基于YOLO系列算法(YOLOv5、YOLOv6、YOLOv8以及YOLOv9)和Streamlit框架的行人头盔检测系统

摘要

本文基于最新的基于深度学习的目标检测算法 (YOLOv5、YOLOv6、YOLOv8)以及YOLOv9) 对头盔数据集进行训练与验证,得到了最好的模型权重文件。使用Streamlit框架来搭建交互式Web应用界面,可以在网页端实现模型对图像、视频和实时摄像头的目标检测功能,在网页端用户可以调整检测参数(IoU、检测置信度等)。本数据集标注了行人头盔目标,且已转换成YOLO格式的标注文件。本博文介绍了完整的YOLO算法综述、数据集介绍、关键技术解析以及系统功能演示,需要的朋友可从本博文的视频简介和评论置顶处获取下载链接。
(注:本文包含三个不同的系统变体
【1】基于YOLOv8和Streamlit框架的目标检测算法(Ultralytics版本为8.0),源码和数据集链接: https://mbd.pub/o/bread/ZpaVl51v
【2】基于YOLOv8和YOLOv5和Streamlit框架的目标检测算法(Ultralytics版本为8.0,YOLOv5的版本为7.0,源码和数据集链接:https://mbd.pub/o/bread/ZpaVl55p)
【3】基于YOLOv5、6、8、9和Streamlit框架的目标检测算法(Ultralytics版本为8.2),源码和数据集链接:https://mbd.pub/o/bread/ZpaVl55q)

环境搭建

  • 打开Anaconda prompt (管理员打开)
  • 进入项目目录:cd xxxxxxxx (如果在非c盘,需要先f: (以f盘为例))
  • 创建一个conda虚拟环境:conda create -n st python=3.10
  • 进入虚拟环境:conda activate st
  • 安装依赖环境:pip install -r requirements.txt
  • 登录时默认的用户名为111,密码也为111
    在这里插入图片描述

项目打开:(无登录界面,默认使用CPU检测):streamlit run app.py
(无登录界面,默认使用GPU检测):streamlit run app_gpu.py
(有登录界面,默认使用CPU检测):streamlit run login.py
(有登录界面,默认使用GPU检测):streamlit run login_gpu.py

YOLO算法综述

YOLO(You Only Look Once)系列算法是一系列用于实时目标检测的深度学习算法,由Joseph Redmon等人开发。该系列算法的主要思想是将目标检测问题转化为单一的回归问题,通过一个神经网络直接从整幅图像中输出目标的类别和边界框坐标,从而实现快速准确的目标检测。YOLO系列算法的主要版本包括YOLO、YOLOv2、YOLOv3、YOLOv4、YOLOv5、YOLOv6、YOLOv7、YOLOv8和YOLOv9等,每个版本都在前一版本的基础上进行了改进和优化,以提高检测精度和速度。下面将详细介绍每个版本的特点和改进。
YOLO(You Only Look Once):它将目标检测问题转化为一个单一的回归问题,并通过一个卷积神经网络直接输出目标的类别和边界框坐标。YOLO将图像分割为 S × S 个格子(grid),每个格子负责检测该格子内的目标,并输出目标的类别概率以及边界框的位置信息。由于采用单一网络直接输出结果,YOLO在速度上具有优势,但在小目标检测和定位精度上存在一定问题。
YOLOv2:YOLOv2在YOLO的基础上进行了改进和优化,主要包括使用更深的网络结构(Darknet-19)、采用多尺度预测和Anchor Boxes等技术。多尺度预测可以提高模型对不同尺度目标的检测能力,Anchor Boxes可以更好地适应不同形状的目标,并提高定位精度。此外,YOLOv2还引入了批标准化(Batch Normalization)和卷积替代池化(Convolutional With Pooling)等技术来提高模型的训练速度和精度。
YOLOv3:YOLOv3在YOLOv2的基础上进一步改进,主要包括引入残差网络(ResNet)作为主干网络、采用多尺度预测以及使用更细粒度的Anchor Boxes等技术。引入ResNet可以提高模型的特征提取能力,多尺度预测可以进一步提高模型对不同尺度目标的检测能力,使用更细粒度的Anchor Boxes可以提高模型的定位精度。此外,YOLOv3还采用了特征融合和跨尺度连接等技术来提高模型的检测性能。
YOLOv4:YOLOv4是YOLO系列算法的最新版本,它在YOLOv3的基础上进行了进一步的改进和优化,主要包括引入更深更宽的网络结构(CSPDarknet53)、采用更多的数据增强和正则化技术以及使用更大的Batch Size等。CSPDarknet53是一种全新的网络结构,可以提高模型的特征提取能力和泛化能力,更多的数据增强和正则化技术可以进一步提高模型的鲁棒性和泛化能力,使用更大的Batch Size可以提高模型的训练速度和稳定性。此外,YOLOv4还引入了模型融合和跨域训练等技术来进一步提高模型的检测性能。
YOLOv5:YOLOv5 是由ultralytics团队开发的目标检测算法,通过简化模型结构和优化训练流程,实现了更快的训练速度和更高的检测精度。YOLOv5采用了CSPDarknet53作为骨干网络,采用了CSP(Cross Stage Partial)结构,提高了模型的效率和准确性。YOLOv5引入了自适应训练策略,可以根据硬件资源自动调整训练超参数,提高了模型的泛化能力。YOLOv5具有多尺度训练和推理的能力,可以在不同大小的目标上取得良好的检测效果。
YOLOv6:YOLOv6 是美团视觉智能部研发的一款目标检测框架,致力于工业应用。本框架同时专注于检测的精度和推理效率,在工业界常用的尺寸模型中:YOLOv6-nano 在 COCO 上精度可达 35.0% AP,在 T4 上推理速度可达 1242 FPS;YOLOv6-s 在 COCO 上精度可达 43.1% AP,在 T4 上推理速度可达 520 FPS。在部署方面,YOLOv6 支持 GPU(TensorRT)、CPU(OPENVINO)、ARM(MNN、TNN、NCNN)等不同平台的部署,极大地简化工程部署时的适配工作。
YOLOv7:YOLOv7是一种优秀的端到端检测算法。YOLOv7由Alexey Bochkovskiy和Chien-Yao Wang等人(YOLOv4团队)于2022年提出。在 5 FPS 到 120 FPS 的范围内,YOLOv7 的速度和准确性都超过了所有已知的物体检测器,在 30 FPS 的所有已知实时物体检测器中,YOLOv7 的准确性最高,达到 56.8% AP。
YOLOv8:YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本。是一款强大、灵活的目标检测和图像分割工具,它提供了最新的 SOTA 技术。提供了一个全新的SOTA模型。基于缩放系数也提供了N/S/M/L/X不同尺度的模型,以满足不同部署平台和应用场景的需求;网络结构上引入C2F和SPPF模块,并对不同尺度的模型进行了精心微调,提升网络特征提取能力及模型性能的同时,平衡模型的推理速度;采用Anchor-Free代替Anchor-Based,对网络输出头进行解耦,分离类别预测和目标框的回归,同时去掉置信度分支;采用TaskAlignedAssigner 动态正样本分配策略,提高样本的生成质量;引入了 Distribution Focal Loss用于目标框的回归。
YOLOv9:YOLOv9引入了程序化梯度信息(Programmable Gradient Information, PGI),这是一种全新的概念,旨在解决深层网络中信息丢失的问题。传统的目标检测网络在传递深层信息时,往往会丢失对最终预测至关重要的细节,而PGI技术能够保证网络在学习过程中保持完整的输入信息,从而获得更可靠的梯度信息,提高权重更新的准确性。这一创新显著提高了目标检测的准确率,为实时高精度目标检测提供了可能。此外,YOLOv9采用了全新的网络架构——泛化高效层聚合网络(Generalized Efficient Layer Aggregation Network, GELAN)。GELAN通过梯度路径规划,优化了网络结构,利用传统的卷积操作符实现了超越当前最先进方法(包括基于深度卷积的方法)的参数利用效率。这一设计不仅提高了模型的性能,同时也保证了模型的高效性,使YOLOv9能够在保持轻量级的同时,达到前所未有的准确度和速度。在MS COCO这样的挑战性数据集上的验证结果显示,YOLOv9在目标检测领域设置了新的性能基准,无论是在效率、速度还是准确性方面,YOLOv9都展示了卓越的性能

实验数据集

本系统使用的头盔行人数据集手动标注了头盔和行人这两个类别,数据集总计1100张图片。该数据集中类别都有大量的旋转和不同的光照条件,有助于训练出更加鲁棒的检测模型。本文实验的头盔行人检测识别数据集包含训练集887张图片,验证集213张图片。

关键技术

Streamlit

Streamlit 是一个开源应用程序框架,旨在简化为机器学习和数据科学构建 web 应用程序的过程。近年来,它在应用 ML 社区中获得了很大的吸引力。 Streamlit 成立于 2018 年,是前谷歌工程师在部署机器学习模型和仪表盘时遇到的挑战所带来的挫折。使用 Streamlit 框架,数据科学家和机器学习实践者可以在几个小时内构建自己的预测分析 web 应用程序。不需要依赖前端工程师或 HTML 、 CSS 或 Javascript 知识,因为这一切都是用 Python 完成的。一个简单的Streamlit初始界面如下图所示。
在这里插入图片描述

Streamlit的官方Github仓库:https://github.com/streamlit/streamlit
Streamlit的官方文档:https://streamlit.io/

YOLOv8

YOLOv8 是 Ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本,目前支持图像分类、物体检测和实例分割任务,在还没有开源时就收到了用户的广泛关注。YOLOv8 是一个 SOTA 模型,它建立在以前 YOLO 版本的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。总而言之,Ultralytics 开源库的两个主要优点是:(1)融合众多当前 SOTA 技术于一体;(2)未来将支持其他 YOLO 系列以及 YOLO 之外的更多算法
在这里插入图片描述

YOLOv8 算法的核心特性和改动可以归结为如下:
提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求
骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,属于对模型结构精心微调,不再是无脑一套参数应用所有模型,大幅提升了模型性能。不过这个 C2f 模块中存在 Split 等操作对特定硬件部署没有之前那么友好了
Head 部分相比 YOLOv5 改动较大,换成了目前主流的解耦头结构,将分类和检测头分离,同时也从 Anchor-Based 换成了 Anchor-Free
Loss 计算方面采用了 TaskAlignedAssigner 正样本分配策略,并引入了 Distribution Focal Loss

YOLOv8官方Github:https://github.com/ultralytics/ultralytics
mmyolo官方参考资料:https://mmyolo.readthedocs.io/zh-cn/dev/recommended_topics/algorithm_descriptions/yolov8_description.html

YOLOv5

YOLOv5 是一个面向实时工业应用而开源的目标检测算法,受到了广泛关注。让 YOLOv5 爆火的原因不单纯在于 YOLOv5 算法本身的优异性,更多的在于开源库的实用和鲁棒性。简单来说 YOLOv5 开源库的主要特点为:
友好和完善的部署支持
算法训练速度极快,在 300 epoch 情况下训练时长和大部分 one-stage 算法如 RetinaNet、ATSS 和 two-stage 算法如 Faster R-CNN 在 12 epoch 的训练时间接近
框架进行了非常多的 corner case 优化,功能和文档也比较丰富
在这里插入图片描述

其他变体配置(n、s、m、x)与YOLOv5-l结构相同,唯一区别是模块数量与通道数
YOLOv5官方GitHub:https://github.com/ultralytics/yolov5
mmyolo官方资料:https://mmyolo.readthedocs.io/zh-cn/dev/recommended_topics/algorithm_descriptions/yolov5_description.html
YOLOv5封装成一个类:
在这里插入图片描述

YOLOv9
摘要:当今的深度学习研究主要关注设计最佳目标函数,以实现模型预测与真实值的高度一致性,并开发合适的架构以确保预测过程中信息的充分利用。然而,传统方法往往忽视了在特征提取和空间转换的多层处理过程中,输入数据可能遭受的信息损失问题。本研究深入探讨了深度网络中数据传递过程中的信息损失问题,特别是信息瓶颈和可逆函数的挑战。提出了一种新概念——可编程梯度信息(PGI),旨在解决深度网络处理复杂任务时遇到的信息变化挑战。通过PGI,可以在计算目标函数时保留完整的输入信息,从而提供准确的梯度信息以优化网络权重。进一步地,本文设计了一种创新的轻量级网络架构,即广义高效层聚合网络(GELAN),展示了PGI在提升轻量级模型性能方面的有效性。通过在MS COCO数据集上进行目标检测任务的实验验证,证明了GELAN在参数效率方面超越了依赖深度可分卷积的现有技术。PGI的适用性跨越从轻量级到大型模型,能够在无需大型预训练数据集的条件下,实现从头开始训练模型的性能优势。

PGI主要包括三个组成部分,即主分支、辅助可逆分支以及多级辅助信息;PGI的推理流程仅涉及主分支,避免了额外推理成本的产生。这一设计精巧地应对了深度学习中的关键挑战,通过两个关键组件提升模型性能:
辅助可逆分支:引入此组件是为了解决随着网络深度增加而引发的信息瓶颈问题。这种信息瓶颈会干扰损失函数生成有效梯度的能力,辅助可逆分支通过保持信息流动的完整性来克服这一障碍
多级辅助信息:此部分旨在解决深度监督可能导致的误差累积问题,尤其是在拥有多个预测分支的结构和轻量级模型中。通过引入多级辅助信息,模型能够更有效地学习并减少误差传播

Generalized ELAN:GELAN是通过融合两个先进的网络设计理念——具有梯度路径规划能力的CSPNet和ELAN——而诞生的。这种设计致力于实现一个既轻量又快速且精确的网络架构,全面优化了网络性能和效率。在此基础上,研究者对ELAN的应用范围进行了扩展,使其不再局限于传统的卷积层堆叠方式,而是能够灵活地适配各种计算单元,显著提升了网络的通用性和适应性。

论文地址:https://arxiv.org/abs/2402.13616
Yolov9源代码:https://github.com/WongKinYiu/yolov9

系统界面及功能演示

系统登录与注册:包含用户注册、创建用户、重设密码登功能(默认的用户名为111,密码也为111)
登录后系统界面左侧可调整:选择模型、置信度、IoU、选择设备、是否保存检测结果、选择检测任务等功能
图像检测:点击Browse files按钮上传本地图像(图像和项目路径下不要出现中文,为方便测试在项目的test_images目录下存放测试图片,在test_videos目录下存放测试视频),在项目的upload_files目录会保存用户上传的图片;之后点击开始检测按钮系统会自动检测图片,并在右侧显示检测后的结果,在上方显示测试相关信息,下方显示检测结果,用户可下载结果(默认下载格式为csv文件),系统会在saved_results保存结果图片
视频检测:点击Browse files按钮上传本地视频(图像和项目路径下不要出现中文,为方便测试在项目的test_images目录下存放测试图片,在test_videos目录下存放测试视频),在项目的upload_files目录会保存用户上传的视频;之后点击开始检测按钮系统会自动检测图片,并在右侧显示检测后的结果,在上方显示测试相关信息,下方显示检测结果,用户可下载结果(默认下载格式为csv文件),系统会在saved_results保存结果视频
摄像头检测:选择摄像头检测任务后,系统会自动打开本机摄像头并调用算法实时检测,系统会在saved_results保存结果视频

基于YOLO系列算法(YOLOv5、YOLOv6、YOLOv8以及YOLOv9)和Streamlit框架的行人头盔检测系统

模型训练及结果

在实验结果与分析部分,我们使用精度和召回率等指标来评估模型的性能,还通过损失曲线和PR曲线来分析训练过程。在训练阶段,我们使用了前面介绍的数据集进行训练,使用了YOLOv8算法对数据集训练,总计训练了100个epochs。从下图可以看出,随着训练次数的增加,模型的训练损失和验证损失都逐渐降低,说明模型不断地学习到更加精准的特征。在训练结束后,我们使用模型在数据集的验证集上进行了评估,得到了以下结果。
在这里插入图片描述

Ultralytics框架下的YOLOv8m模型的训练结果
在这里插入图片描述

Ultralytics框架下的YOLOv5s模型的训练结果
在这里插入图片描述

Ultralytics框架下的YOLOv6s模型的训练结果
Ultralytics框架下的YOLOv9c模型的训练结果片描述Ultralytics框架下的YOLOv9c模型的训练结果

综上,本博文训练得到的YOLOv8模型在数据集上表现良好,具有较高的检测精度和鲁棒性,可以在实际场景中应用。另外本博主对整个系统进行了详细测试,最终开发出一版流畅的高精度目标检测系统界面。另外本博文的PDF与更多的目标检测识别系统请关注笔者的微信公众号 BestSongC,在后台回复20240524来获取,后续会有更多的项目首发于该公众号。

完整项目目录如下所示
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/639359.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言-atoi()库函数的模拟实现

文章目录 前言一、atoi()库函数的介绍及使用1.1 atoi()库函数介绍1.2 atoi()库函数使用 二、atoi()库函数的模拟实现2.1 函数设计2.2 函数实现思路2.3 具体实现2.4 测试 总结 前言 本篇文章介绍c语言中库函数atoi()的使用,以及模拟实现库函数。 一、atoi()库函数的…

【linux】详解linux权限

目录 用户 文件属性 更改文件权限 更改文件拥有者 更改文件所属组 用户的权限 文件掩码 粘滞位 总结 基本指令可参考: 【linux】详解linux基本指令-CSDN博客 【linux】详解linux基本指令-CSDN博客 用户 超级用户(root)&#xff…

Redis篇 在linux系统上安装Redis

安装Redis 在Ubuntu上安装Redis 在Ubuntu上安装Redis 在linux系统中,我们安装Redis,必须先使它有root权限. 那么在linux中,如何切换到root用户权限呢? sudo su 就可切换到用户权限了. 在切换到用户权限后,我们需要用一条命令来搜索Redis相关的软件包 apt search redis 会出现非…

怎样下载Android Studio历史版本文件包

1.在官网上下载都是推荐最新版本,想下载历史版本比较费劲,绕来绕去的。 2.进入这个网站可以下载其他版本https://android-studio.en.uptodown.com/windows/versions Older versions of Android Studio Its not uncommon for the latest version of an a…

解耦:哪些方法可以用来解耦代码

目录 1.引用 2.为何解耦如此重要 3.如何判断代码是否需要解耦 4.如何给代码解耦 5.思考题 1.引用 前面我们曾经讲到,重构可以分为大型重构和小型重构。小型重构的主要目的是提高代码的可读性,大型重构的主要目的是解耦。本节讲解如何对代码进行解耦…

webgl three 模型操作

模型位置操作是改变相关属性 平移改变位置 缩放改变缩放值 旋转改变角度 webgl中是4x4矩阵 前三排是原始状态 第四排是改变值 .position 位置 .scale 缩放 .rotation 绕轴旋转 .quaternion 绕axis旋转 其实和svg差不多 缩放 缩放是操作对角线 // Matrix4x4 …

大语言模型的工程技巧(三)——分布式计算

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型:从线性回归到通用人工智能》,欢迎有兴趣的读者多多支持。 本文将讨论如何利用多台机器进行神经网络的分布式训练。利用多台机器来加速大语言模型的训练,是其获得成功的重要原…

操作系统总结3

目录 2.3.3 进程互斥的硬件的实现方法 (1)知识总览 (2)中断的屏蔽方法 (3)TestAndSet指令 (4)Swap指令 总结 2.3.4 信号量机制 (1)知识总览 &#x…

《web应用设计》第八次作业

我的小组长是姚若希,我们组课程设计的题目是:学生管理系统 ,我认领的功能模块是:课程管理 2.查询并分页

MM模块五(采购订单)

创建采购订单:ME21N 参考报价单创建采购订单: 哪个采购部门的哪个采购员为哪个公司代码下的采购订单 点击保存 注:采购订单的数量不能大于采购申请的数量

选择优化求解器的关键因素:以MindOpt为例

选择一款适合自己业务需求的求解器我们一般需要考量什么呢?可求解的问题类型?问题规模?本文将介绍一些需要考虑的重要因素,并且介绍阿里达摩院MindOpt优化求解器在这些因素下的表现。 ⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇…

【Linux】Centos7安装MySql

【Linux】Centos7安装MySql 下载 MySQL 官网下载 MySQL,用的是 CentOS7.9 所以选择红帽系统 https://downloads.mysql.com/archives/community/ 安装 使用rz命令上传 MySQL tar # 创建 MySQL 解压目录 [rootlocalhost /]# mkdir /usr/local/mysql# 解压 [rootloca…

【漏洞复现】懒人网址导航页 search.html SQL注入漏洞

0x01 产品简介 赖人网址导航系统是一种智能化的网址导航平台,旨在帮助用户快速找到所需的网址和资源。该系统提供了智能化的网址搜索和推荐功能,能够根据用户的搜索习惯和偏好推荐相关的网址和资源。同时,系统还提供了网址分类、网址收藏和网…

VScode SSH连接远程服务器报错

一、报错 通过VScode SSH插件远程连接服务器,输入密码后没有连接成功,一直跳出输入密码界面,在输出界面里,一直是Waiting for server log或者是显示Cannot not find minimist 二、处理 🐱: 这个时候应该…

数据可视化技术头歌测试合集

努力是为了不平庸~ 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰 目录 时间趋势可视化-柱形图 第1关:“大胃王”比赛数据柱形图绘制——绘制柱形图的基本步骤 任务描述 相关知识 观察和处理数据 绘…

JLINK使用及问题

一、安装:安装过程选择好文件夹,过程中一直默认就行,如果之前安装的有其他版本,在最后一步需要多注意一下,或者不注意,直接默认选中的就行。 二、使用: 在官网下载的J-Link V7.96i&#xff0c…

视频码流分析工具

一、VQ Analyzer 在线使用说明: https://vicuesoft.com/vq-analyzer/userguide/ ref: Video Analyzer and Streaming Tester Software – VQ Analyzer HEVC 分析工具 - 懒人李冰 推荐一个开源且跨平台的免费码流分析软件YUView - 知乎

【大模型部署】在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型

【大模型部署】在C# Winform中使用文心一言ERNIE-3.5 4K 聊天模型 前言 今天来写一个简单的ernie-c#的例子,主要参考了百度智能云的例子,然后自己改了改,学习了ERNIE模型的鉴权方式,数据流的格式和简单的数据解析,实…

【漏洞复现】智慧校园(安校易)管理系统 FileUpProductupdate.aspx 任意文件上传漏洞

0x01 产品简介 "安校易"是银达云创公司基于多年教育市场信息化建设经验沉淀,经过充分的客户需求调研,并依据国家"十三五”"教育信息化建设规范而推出的综合互联网教育信息化解决方案。“安校易“以物联网技术为基础,以学…

民国漫画杂志《时代漫画》第19期.PDF

时代漫画19.PDF: https://url03.ctfile.com/f/1779803-1248634637-c04860?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!