yolov8行人车辆检测与计数系统

news2024/11/18 21:33:34

yolov8行人车辆检测与计数系统(Python+YOLOv8+deepsort车辆追踪深度学习模型+清新界面)
(1)YOL v8算法实现,模型一键切换更新;
(2)检测图片、视频等图像中的各目标数目;
(3)摄像头监控实时检测,便携展示、记录和保存;
(4)支持切换目标,各目标位置切换查看;
(5)提供数据集和训练代码可重新训练;
支持定制功能(车辆追踪,车辆测试),车牌识别,红绿灯识别

项目概述

  1. YOLOv8:用于目标检测,它是一个快速准确的对象检测模型。
  2. DeepSORT:用于对检测到的目标进行追踪,它结合了外观特征和运动信息。
  3. GUI:提供用户友好的界面,用于启动程序、选择模型、显示结果等。

技术栈

  • Python:编程语言。
  • YOLOv8:对象检测模型。
  • DeepSORT:目标追踪算法。
  • PyQt5 或 Tkinter:用于构建GUI。
  • OpenCV:用于图像处理和视频流。

安装依赖

1pip install ultralytics yolov5 deepsort_pytorch opencv-python-headless PyQt5

关键代码

1. 设置YOLOv8模型加载
 
1from ultralytics import YOLO
2import cv2
3
4# 加载YOLOv8模型
5model = YOLO("yolov8n.pt")  # 使用较小的预训练模型
2. 实现DeepSORT
1from deep_sort_pytorch.utils.parser import get_config
2from deep_sort_pytorch.deep_sort import DeepSort
3
4# 初始化DeepSORT
5cfg = get_config()
6cfg.merge_from_file("deep_sort_pytorch/configs/deep_sort.yaml")
7deepsort = DeepSort(cfg.DEEPSORT.REID_CKPT,
8                    max_dist=cfg.DEEPSORT.MAX_DIST, min_confidence=cfg.DEEPSORT.MIN_CONFIDENCE,
9                    nms_max_overlap=cfg.DEEPSORT.NMS_MAX_OVERLAP, max_iou_distance=cfg.DEEPSORT.MAX_IOU_DISTANCE,
10                    max_age=cfg.DEEPSORT.MAX_AGE, n_init=cfg.DEEPSORT.N_INIT, nn_budget=cfg.DEEPSORT.NN_BUDGET,
11                    use_cuda=True)
3. 目标检测和追踪
1def detect_and_track(frame):
2    # 使用YOLOv8检测目标
3    results = model(frame)
4
5    # 提取检测结果
6    boxes = []
7    scores = []
8    class_ids = []
9
10    for result in results:
11        boxes = result.boxes.xyxy.cpu().numpy().astype(int)
12        scores = result.boxes.conf.cpu().numpy()
13        class_ids = result.boxes.cls.cpu().numpy().astype(int)
14
15    # 使用DeepSORT进行目标追踪
16    outputs = deepsort.update(boxes, scores, class_ids, frame)
17
18    # 绘制追踪框
19    for output in outputs:
20        x1, y1, x2, y2, obj_id, cls_pred = output
21        cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)
22        cv2.putText(frame, f"{obj_id}-{int(cls_pred)}", (int(x1), int(y1)), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
23
24    return frame
4. GUI部分

这里我们可以使用PyQt5来创建一个简单的界面,用于控制模型的选择和显示检测结果。

1from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QVBoxLayout, QWidget
2from PyQt5.QtGui import QImage, QPixmap
3from PyQt5.QtCore import QTimer
4
5class App(QMainWindow):
6    def __init__(self):
7        super().__init__()
8        self.initUI()
9
10    def initUI(self):
11        self.setWindowTitle('YOLOv8 + DeepSORT')
12        self.setGeometry(100, 100, 800, 600)
13
14        self.label = QLabel(self)
15        self.label.resize(640, 480)
16        self.setCentralWidget(self.label)
17
18        # 创建定时器
19        self.timer = QTimer(self)
20        self.timer.timeout.connect(self.update_frame)
21        self.timer.start(30)  # 每秒更新30次
22
23    def update_frame(self):
24        # 获取摄像头帧
25        ret, frame = cap.read()
26        if ret:
27            frame = detect_and_track(frame)
28            height, width, channel = frame.shape
29            bytesPerLine = 3 * width
30            qImg = QImage(frame.data, width, height, bytesPerLine, QImage.Format_RGB888).rgbSwapped()
31            self.label.setPixmap(QPixmap.fromImage(qImg))
32
33if __name__ == '__main__':
34    import sys
35    app = QApplication(sys.argv)
36    ex = App()
37    ex.show()
38    sys.exit(app.exec_())

总结

以上代码提供了基于YOLOv8和DeepSORT的行人和车辆检测与计数系统的框架。您可以在此基础上进一步开发,比如添加模型切换功能、保存检测结果、支持不同的数据集等。此外,还可以改进用户界面使其更加友好和实用。

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

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

相关文章

2024数学建模国赛水奖攻略(也可适用其他比赛)

很多同学私信我,问学校要求参加数模比赛,但对建模和编程不太擅长,又不想浪费时间,该怎么办。今天我想和大家分享一些关于数学建模比赛的经验,特别是如何水奖的攻略。 一、选题技巧 有句话说得好,选择比努力…

彻底解决win7系统文件夹选项高级设置是空白

需求背景 win7系统的文件夹选项-高级设置里面是空白的,效果图如下。 解决方法 1、新建txt文本文档 2、文档内容 复制下面的内容到txt文件中,然后保存。 Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Ad…

第七届强网杯-PWN-【WTOA】

文章目录 参考WebAssemblyWasmtime调试逆向源码exp 参考 WebAssembly实践指南——C和Rust通过wasmtime实现相互调用实例 WebAssembly WebAssembly是一种可移植的二进制指令集格式,其本身与平台无关,类似于Java的class文件字节码。 WebAssembly本来的…

Springsecurity中的Eureka报错:Cannot execute request on any known server

完整报错信息: com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server 报错体现: 访问eureka控制面板: 访问测试地址: 控制台报错: 可能的报错原因&#xff…

Python之列表解析和用matplotlib模块绘制图形

列表解析用matplotlib模块绘制成图形导入模块numpy阵列将列表转为阵列arrange函数创建阵列广播 使用matplotilib将阵列绘制成图 列表解析 列表解析式用紧凑的方式来构造列表。 语法: [表达式 for循环 条件] 例如:要得到0-20的偶数列表。需要在0-20中循环…

CyberScraper-2077+simple-one-api:使用大模型爬虫

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 swift与Internvl下的多模态大模型分布式微调指南(附代码和数据&#xff…

IT6113: 高速MIPI DSI 4通道转8通道转接芯片资料

1、产品概述: 芯片将 SOC输出的4通道高速 Mipi DSI 视频转换为8通道半速 DSI 显示器,用于平板电脑、智能手机、笔记本电脑、 VR、智能手表等应用,分割器模式也可用。 2、产品说明 : IT6113 MIPI DSI 视频桥是一个4通道进、8通道出…

2024安卓iOS免签封装源码/解决APP误报毒/可打包和上传APP/自动实现5分钟随机更换签名

源码简介: 2024全新安卓iOS免签封装源码,它可处理apk报毒,解决APP误报毒。不仅可打包APP,也可上传APK。自动实现5分钟随机更换包名和签名系统源码。 解决app误报毒,可打包APP可上传APK,并且自动实现5分钟…

ShardingSphere导致的NPE

1. 项目背景 工程内使用shardingsphere支持分库分表,上层使用的MybatisPlus,有一张表的操作总是报NullPointException。 2. 异常堆栈 ### SQL: INSERT INTO t_tg_message ( update_id, from_id, from_user_name, chat_id, type, data, text, create_…

领夹麦克风哪个品牌音质最好?一文揭秘国内最好的麦克风品牌

在数字化直播与Vlog盛行的今天,无线领夹麦克风凭借其便捷性与高音质,成为了内容创作者们的必备好物。但随着市场的迅速扩张,无线领夹麦克风领域也悄然滋生了一系列乱象。品牌众多,质量却良莠不齐,消费者稍有不慎便可能…

Ollama是什么?安装部署指南

Ollama是什么? 一个本地部署运行大模型的工具,一行命令一键启动,支持linux、windows和mac操作系统的安装。 Ollama支撑哪些大模型? 访问:https://ollama.com/library,列表下的大模型,它都支持…

centos7 redis安装+开机启动(6379+6380)

redis安装 步骤1-下载 下载地址:Index of /releases/ 步骤2-安装 Centos安装Redis-CSDN博客 下载包到 /usr/local/redis解压 tar -zxvf redis-7.0.0.tar.gz切路径 /usr/local/redis/redis-7.0.0编译 make切路径 /usr/local/redis/redis-7.0.0/src安装make instal…

Transformer动画讲解 - Softmax函数

Transformer的Softmax函数 Transformer的Softmax函数: 用于将原始注意力分数转换为输入标记的概率分布。这种分布将较高的注意力权重分配给更相关的标记,并将较低的权重分配给不太相关的标记。Transformers通过Softmax在生成输出时,使用注意…

Find My激光笔|苹果Find My技术与激光笔结合,智能防丢,全球定位

激光笔通常用于指示特定的方向或位置。激光笔在教学领域应用广泛。老师可以利用激光笔在教室中远距离展示教学材料上的内容,。在户外活动中,激光笔也发挥着重要作用,发出求救信号或与其他营地建立联系。激光笔还可以用于娱乐和创意表达。 在…

认知杂谈21

今天分享 有人说的一段争议性的话 I I 自在之“坏”:真实自我的绽放 在社交场合中,听到“他不是个好人”这句话可能会让人惊讶,但其实被贴上“坏人”标签的人往往敢于跳出规则框架,展现真实自我。他们不做表面和谐的牺牲品&am…

前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密

📊 前程无忧搜索接口 JS 逆向:阿里系acw_sc__v2和Sign加密 🔍 观察网页加密规律:阿里系acw_sc__v2 在分析前程无忧的搜索接口时,我们首先需要关注网页的加密规律。特别是阿里系的 acw_sc__v2 加密机制。这个加密机制通…

2024世界机器人大会盛大开幕,卓翼飞思携无人智能领域产品集中亮相 !

开放创新 聚享未来!万众瞩目的2024世界机器人大会暨博览会于8月21日在北京亦创国际会展中心盛大开幕。大会聚焦机器人技术与产业前沿趋势,展示机器人创新应用赋能千行百业的多元场景,全球顶尖的机器人科学家、行业领袖、创新精英汇聚一堂&…

干货-并发编程提高——线程池-Executor (十三)

Executor 框架(java线程基础)不仅包括了线程池的管理,还提供了线程工厂、队列以及拒绝策略等,Executor 框架让并发编程变得更加简单。 /** * 用给定的初始参数创建一个新的ThreadPoolExecutor。 */ public ThreadPoolExecutor(in…

[创业之路-141] :产品经理 - NPDP概述

目录 一、产品经理以及主要职责 1.1 概述 1、市场调研与需求分析 2、产品规划与设计 3、项目管理与协调 4、产品推广与销售支持 5、产品运营与维护 6、其他职责 1.2 产品经理与项目经理的职责分工 1.2.1 职责区别 产品经理 项目经理 1.2.2 合作方式 二、什么是NP…

Oracle数据库最新的支持服务年限

根据图示,建议尽快升级到19c或者23ai