【YOLO 系列】基于YOLO V8的密集场景下行人检测识别系统【python源码+Pyqt5界面+数据集+训练代码】

news2025/1/16 14:49:27

前言

在密集的城市环境中,行人检测对于公共安全、交通管理和智能监控具有重要意义。然而,传统的行人检测方法在面对密集场景时,常常因目标重叠和遮挡而难以准确识别。为了应对这一挑战,我们启动了这个项目,目的是利用YOLOV8这一先进的深度学习技术,开发一个在密集场景下具有高准确度的行人检测系统。

通过对密集场景下的行人数据集进行深入分析和标注,我们训练了YOLOV8模型,使其能够精确识别并区分密集场景中的行人。这一系统能够实时处理图像数据,即使在目标密集和遮挡严重的情况下,也能提供准确的行人检测结果。

通过这个项目,我们不仅提升了密集场景下行人检测的技术水平,还为城市安全管理、交通监控和智能视频分析等领域提供了强大的技术支持,有助于构建更加智能和安全的城市环境。

基于此项目,设计了一个使用Pyqt5库来搭建页面展示系统。本系统支持的功能包括训练模型的导入、初始化;置信度与IOU阈值的调节、图像上传、检测、可视化结果展示、结果导出与结束检测;视频的上传、检测、可视化结果展示、结果导出与结束检测;摄像头的上传、检测、可视化结果展示与结束检测;已检测目标信息列表、位置信息;以及推理用时。本博文提供了完整的Python代码和使用教程,适合新入门的朋友参考,完整代码资源文件请转至文末的下载链接

优势

1. 高准确性:YOLOV8模型针对密集场景进行了优化,提高了在复杂环境下的行人识别准确度。

2. 实时性:系统能够快速处理图像数据,提供实时的行人检测结果,适用于需要快速响应的应用场景。

3. 鲁棒性:即使在目标重叠和遮挡的情况下,系统也能保持较高的识别率,显示出良好的鲁棒性。

4. 可扩展性:系统设计考虑了不同规模和复杂度的密集场景,具有良好的可扩展性。

5. 多场景适用:系统不仅适用于城市街道,也能在商场、车站、机场等人流密集的场所发挥作用。

应用前景

1. 公共安全监控:系统可以帮助监控人员快速识别密集场景中的异常行为或事件,提高公共安全。

2. 交通管理:在交通高峰时段,系统可以辅助交通管理部门监控行人流量,优化交通流。

3. 智能视频监控:作为智能视频监控系统的一部分,系统可以自动识别和跟踪行人,用于安全防范。

4. 人群分析:系统可以用于分析人群密度和流动模式,为城市规划和商业分析提供数据支持。

5. 紧急疏散指导:在紧急情况下,系统可以快速识别人群分布,辅助制定疏散计划和指导。

6. 智能交通系统:系统可以集成到智能交通系统中,提高行人过街安全和交通信号控制的智能化水平。


一、软件核心功能介绍及效果演示

软件主要功能

  1. 支持图片、图片批量、视频及摄像头进行检测,同时摄像头可支持内置摄像头和外设摄像头

  2. 可对检测结果进行单独分析,并且显示单个检测物体的坐标、置信度等;

  3. 界面可实时显示目标位置检测结果检测时间置信度检测结果回滚等信息;

  4. 支持图片视频摄像头的结果保存,将检测结果保持为excel文件;

界面参数设置说明

  1. 标签4 摄像头源/相机/网络源

  2. 标签5 交并比阈值:目标检测时的iou参数,只有目标检测框的交并比大于该值,结果才会显示;

  3. 标签6 置信度阈值:目标检测时的conf参数,只有检测出的目标置信度大于该值,结果才会显示;

  4. 标签7 显卡选择:在进行推理时是否使用显卡,默认勾选(使用显卡);

  5. 标签8 半精度选择:启用半精度(FP16)推理,可加快支持的 GPU 上的模型推理速度,同时将对精度的影响降至最低,默认不勾选(不使用半精度);

  6. 标签9 图片推理尺寸: 在推理时将推理图片固定的尺寸;

  7. 标签10 数据集的配置文件:数据集在训练时的配置文件(.yaml);

  8. 标签11 训练好的模型:最终要进行推理的模型,一般选择最优的一个模型;

  9. 标签12 类别名:该项目的所有类别,可以方便在后续查看某一个类别。

视频演示

密集场景下行人检测识别系统_哔哩哔哩_bilibili

图片检测演示

  1. 点击打开图片按钮,选择需要检测的图片,或者点击打开文件夹按钮,选择需要批量检测图片所在的文件夹,操作演示如下:

  2. 点击表格中的指定行,界面会显示该行表格所写的信息内容。

视频检测演示

  1. 点击视频按钮图标,打开选择需要检测的视频,在点击开始运行会自动显示检测结果。再次点击停止按钮,会停止检测视频。

  2. 点击表格中的指定行,界面会显示该行表格所写的信息内容。

摄像头检测演示

  1. 选择相机源中输入需要检测的摄像头(可以是电脑自带摄像头,也可以是外接摄像头,视频流等方式),然后点击摄像头图标来固定选择的推理流方式,最后在点击开始运行即可开始检测,当点击停止运行时则关闭摄像头检测。

  2. 点击表格中的指定行,界面会显示该行表格所写的信息内容。

检测结果保存

点击导出数据按钮后,会将当前选择的图片【含批量图片】、视频或者摄像头的检测结果进行保存为excel文档,结果会存储在output目录下。

环境搭建

创建专属环境

conda create -n yolo python==3.8

 激活专属环境

conda activate yolo

安装torch-GPU库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "torch-2.0.1+cu118-cp38-cp38-win_amd64.whl"

安装torchvision-GPU库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "torchvision-0.15.2+cu118-cp38-cp38-win_amd64.whl"

安装ultralytics库

pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple

测试环境

yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg'

 此时就表明环境安装成功!!!

安装图形化界面库 pyqt5

pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple

算法原理

YOLOv8是一种前沿的深度学习技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性,在精度和速度方面都具有尖端性能。在之前YOLO 版本的基础上,YOLOv8 引入了新的功能和优化,使其成为广泛应用中各种物体检测任务的理想选择。主要的创新点包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。

YOLOv8目标检测算法具有如下的几点优势:

(1)更友好的安装/运行方式;

(2)速度更快、准确率更高;

(3)新的backbone,将YOLOv5中的C3更换为C2F;

(4)YOLO系列第一次使用anchor-free;

(5)新的损失函数。

YOLO各版本性能对比

网络结构

YOLOv8模型的整体结构如下图所示:

YOLOv8与YOLOv5模型最明显的差异是使用C2F模块替换了原来的C3模块;另外Head 部分变化最大,从原先的耦合头变成了解耦头,并且从 YOLOv5 的 Anchor-Based 变成了 Anchor-Free

YOLOv8的网络架构包含了多个关键组件,这些组件共同工作以实现快速而准确的目标检测。首先是其创新的特征提取网络(Backbone),YOLOv8的Backbone采用了最新的网络设计理念,通过深层次的特征融合和精细的特征提取策略来增强对目标的识别能力。这一策略的成功关键在于其特征提取器能够充分捕获目标的细微特征,同时保持计算效率。

YOLOv8在训练策略上也进行了优化。与YOLOv7相比,YOLOv8采用了SPFF(Spatial Pyramid Fusion Fast)策略,该策略通过高效的多尺度特征融合提高了模型对不同大小目标的检测能力。此外,YOLOv8在训练过程中引入了一种名为Task Aligned Assigner的新技术,这种技术能够更精准地将预测框与真实目标对齐,从而提高检测的准确率。

在损失函数的设计上,YOLOv8进行了创新,采用了JFL(Joint Family Losses),这是一种集成了多个损失函数的复合损失函数,能够同时优化目标检测的多个方面。这些损失函数包括用于提升模型对目标位置和大小预测准确性的CIOU Loss,以及优化分类准确性的分类损失函数。JFL的设计允许YOLOv8更全面地考虑检测任务中的不同需求,通过协调各种损失来提升总体的性能。

YOLOv8的原理不仅在于其创新的技术点,更在于这些技术如何被综合应用于解决实际的目标检测问题。通过其精心设计的网络架构、高效的训练策略以及综合的损失函数设计,YOLOv8实现了在保持实时性的同时,提高了在复杂场景下的检测准确率。这些改进使得YOLOv8成为了一个强大的工具,适用于从自动驾驶到智能视频监控等多种应用场景。

四、模型的训练、评估与推理

数据集准备

WiderPerson数据集是一个在野外的行人检测基准数据集,其中的图像是从广泛的场景中选择的,不再局限于交通场景。选取13382幅图像,标注约400K个各种遮挡的标注。随机选取8000/1000/4382幅图像作为训练、验证和测试子集。

图片数据集的存放格式如下:

下载数据集后,然后运行下述代码:

  1. 将解压的数据集放在 VOCDataset 文件夹里面;

  2. 运行splitDataset.py,用于划分数据集;

  3. 运行xml2txt.py,用于得到训练标注文件;

  4. 运行ViewCategory.py,用于查看一共有那些类别;

  5. mydata.yaml,用于填写模型训练的数据配置文件。

注意:在xml2txt.py和mydata.yaml中的类别名称的顺序要一致

模型训练

数据准备完成后,通过调用train.py文件进行模型训练,epochs参数用于调整训练的轮数,代码如下:

from ultralytics import YOLO

# build from YAML and transfer weights
model = YOLO('yolov8n.yaml').load('./weights/yolov8n.pt')

# Train the model
model.train(data='./VOCData/mydata.yaml', epochs=100, imgsz=640)

训练结果分析

YOLOv8在训练结束后,可以在runs/目录下找到训练过程及结果文件,如下所示:

P_curve.png

confusion_matrix_normalized.png

训练 batch

验证 batch

模型推理

模型训练完成后,可以得到一个最佳的训练结果模型best.pt文件,在runs/trian/weights目录下。我们通过使用该文件进行后续的推理检测。

图片检测代码如下:

from ultralytics import YOLO

# Load a model
model = YOLO('./runs/detect/train/weights/best.pt')

# Run batched inference on a list of images
model.predict("./img", imgsz=640, save=True, device=0)

执行上述代码后,会将执行的结果直接标注在图片上,结果如下:

关于该系统涉及到的完整源码、UI界面代码、数据集、训练代码、测试图片视频等相关文件,均已打包上传,感兴趣的小伙伴可以通过下载链接自行获取。

五、获取方式

本文涉及到的完整全部程序文件:包括 python源码、数据集、训练好的结果文件、训练代码、UI源码、测试图片视频等(见下图),获取方式见文末:

注意:该代码基于Python3.8开发,运行界面的主程序为GUI.py,其他测试脚本说明见上图。为确保程序顺利运行,请按照requirements.txt配置软件运行所需环境。

关注下方公众号:【AI算法与电子竞赛】,发送【YOLO系列源码】即可获取下载方式

六、链接作者

欢迎关注我的公众号:@AI算法与电子竞赛

硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

江苏隆昌化工上线隆道平台 采购管理迎来全面升级

当前,传统产业与数字产业深度加速融合,大数据、云计算、人工智能等新技术推动产业深刻变革,能源化工行业迎来战略转型加速期。数字化转型已成为能源化工企业提升运营效率、控制运营成本、提高产品质量、打造竞争优势的强大引擎。为实现传统采…

OVS:网桥的状态:fail_mode模式

目录 1.创建一个普通的ovs网桥不做任何配置 2.检测fail_mode值,默认为空 3.创建netns并配置sto网桥的两个普通端口并配置IP信息 4.默认情况下的两个端口下挂两个虚拟机v3,v4天然通信-ping-ok 5.修改网桥的fail_mode为standalone,原来的通信没有影响 6.修改了…

java常用类(1)

目录 1.Object类 1.1 toString()方法 1.1.1重写toString()方法 2.1 equals()方法 2.1.1 的作用 2.1.2 equals()方法 2.Arrays类 2.1 equals()方法 2.2 copyOf()方法 2.3 fill()方法 2.4 sort()方法 1.Object类 在java中Object类是所有类的父类,如果一个类没有显示…

数据独立性-信息、数据、数据结构、数据独立性

一、引言 同人工管理数据和文件系统管理数据相比,数据库管理数据最主要的优点是数据独立性高。数据独立性是数据库领域中的一个常用术语和重要概念,包括数据的物理独立性和逻辑独立性 二、数据与数据结构 1、信息 在数据管理领域,数据与信…

排序之插入排序----直接插入排序和希尔排序(1)

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 排序之插入排序----直接插入排序和希尔排序(1) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记,欢迎大家在评论区交流讨…

uni-app uni-data-picker级联选择器无法使用和清除选中的值

出现问题&#xff1a; 使用点击右边的叉号按钮无法清除已经选择的uni-data-picker值 解决办法&#xff1a; 在uni-app uni-data-picker使用中&#xff0c;要添加v-model&#xff0c;v-model在官网的示例中没有体现&#xff0c;但若不加则无法清除。 <uni-data-picker v-m…

从0搭建一个vue项目,不使用脚手架从html到vue

前言 从最开始学习web网页开始&#xff0c;搭建一个网页只需要创建一个html文件对其进行编写dom标签语言即可&#xff1b;后来分离了html&#xff0c;css和js&#xff0c;搭建一个网页开始需要文件夹&#xff0c;文件夹包含了这3类文件以及静态文件&#xff0c;图片&#xff0c…

2024年全新Studio One 6 .6.1新功能介绍及安装激活使用指南

​ 录制、制作、混音、掌握和表演所需的一切。Studio One 6 .6.1通过新的智能模板、直观的拖放工作流程、可定制的用户界面和强大的集成工具&#xff0c;让创作变得快速而轻松。 智能模板。快速启动。 快速启动录音、混音、掌握、节拍制作或简单地演奏虚拟乐器的基本工作流程—…

#04贪心法

要点&#xff1a; 贪心法的基本思想、基本要素与求解步骤&#xff1b; 贪心法的应用。 难点&#xff1a; 贪心法的最优子结构性质与贪心选择性质。 贪心法的基本思想 每个阶段的决策一旦做出就不可更改。不允许回溯。 并不从整体最优考虑&#xff0c;所作出的选择只是在某…

视频素材网站哪个好用?好用的做短视频素材下载网站分享

你是否正面临着为短视频寻找完美素材的困扰&#xff1f;是否对网络上那些雷同的素材网站感到厌烦了&#xff1f;今天&#xff0c;我将为大家推荐几个优秀的海外视频素材网站&#xff0c;这些隐藏的宝藏网站定能让你的作品焕发新光彩&#xff01; 蛙学素材网——您的创作好帮手…

希望数学少年俱乐部精品课学生用书-四年级

PDF版本链接链接&#xff1a;https://pan.baidu.com/s/1t6prtG9sd-1mYsnCUz-mKQ 提取码&#xff1a;0548 --来自百度网盘超级会员V7的分享

《编译原理》阅读笔记:p19-p24

《编译原理》学习第 4 天&#xff0c;p19-p24总结&#xff0c;总计 5 页。 一、技术总结 1.grouping of phases 这里谈到分组(group)&#xff0c;那么就会有一个疑问&#xff0c;分组的依据是什么&#xff1f;即根据什么来分组。 (1) front end & back end 编译器包含…

办公效率神器:ONLYOFFICE 的配置和使用

1.认识 ONLYOFFICE ONLYOFFICE 是一款免费开源的协同办公软件套件&#xff0c;支持多种文件格式&#xff0c;包括PDF、Word、Excel、PowerPoint等。它提供了文档编辑、表格处理、演示制作等功能&#xff0c;并可以与其他应用程序和平台集成&#xff0c;功能亮点特点如下&#…

【unity笔记】六、UI实现下拉列表切换视角

具体步骤如下 1. 创建UI下拉列表&#xff1a; 在Unity场景中右键点击并选择UI -> 下拉列表 来创建一个新的下拉列表。 2. 添加摄像机选项&#xff1a; 在Dropdown的Options属性中添加新的选项&#xff0c;通过点击按钮来添加选项&#xff0c;并为每个选项设置一个显示名…

【大数据】—谁是世界上最富的人?

引言 在2024年&#xff0c;全球财富的分布再次成为公众和经济学家关注的焦点。随着经济的波动和新兴市场的崛起&#xff0c;亿万富翁的名单也在不断变化。本文将深入探讨这一现象&#xff0c;通过最新的数据可视化分析&#xff0c;揭示世界上最富有的人在2024年的财富状况和趋…

成都百洲文化传媒有限公司助力电商品牌乘风破浪

在当今数字化时代&#xff0c;电商行业风起云涌&#xff0c;竞争异常激烈。成都百洲文化传媒有限公司凭借其对电商行业的深刻理解与实战经验&#xff0c;已然成为行业中的佼佼者。公司专注于电商服务领域&#xff0c;通过创新的营销模式和精准的市场策略&#xff0c;助力众多品…

#03动态规划

要点&#xff1a; 动态规划方法与贪心法、分治法的异同&#xff1b; 动态规划方法的基本要素与求解步骤&#xff1b; 动态规划方法的应用。 难点&#xff1a; 如何根据问题的最优子结构性质构造构造动态规划方法中的递归公式或动态规划方程。 动态规划的基本思想 动态规…

使用Servlet开发javaweb,请求常见错误详解及其解决办法【404、405、500】

Servlet报错的情况多种多样&#xff0c;涵盖了配置错误、代码逻辑错误、资源未找到、权限问题等多个方面。以下是一些常见的Servlet报错情况及其可能的原因和解决方法&#xff1a; 404 Not Found: 错误原因图示&#xff1a; URL映射 发送请求&#xff0c;出现404错误 原因: 请…

excel隐藏的部分内容如何显示出来?3个方法帮助你!

excel隐藏的部分如何显示出来&#xff1f;你是否曾经在Excel中遇到过某些单元格被隐藏&#xff0c;或者某些数据在编辑时突然消失&#xff0c;让你感到困惑和无助&#xff1f;不要担心&#xff0c;今天我将向你揭示如何解决这些问题&#xff0c;让你轻松显示隐藏的部分。 方法1…

神经网路学习7-线性模型

一个最简单的线性模型&#xff0c;w是权重&#xff0c;一般来说会取随机值&#xff0c;然后不断学习直到与预期相同 如此以此取每个值与真实值的差值&#xff0c;即评估误差 即找一个合适的权重w&#xff0c;使得平均误差最小 上面的是针对单个样本的&#xff0c;后面的是对…