电动车、电单车入梯数据集电动车进电梯检测识别(代码+教程+数据集)

news2024/11/17 7:36:05

数据集介绍

共有 5347 张图像和一一对应的标注文件

标注文件格式提供了两种,包括VOC格式的xml文件和YOLO格式的txt文件。

标注的对象共有以下几种:

[‘Electric-bicycle’]

标注框的数量信息如下:(标注时一般是用英文标的,括号里提供标注对象的中文作为参考)

Electric-bicycle: 5366 (电梯电动车)

注:一张图里可能标注了多个对象,所以标注框总数可能会大于图片的总数。

完整的数据集,包括3个文件夹和一个txt文件:

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

代码使用说明

本项目用于识别电梯监控视角内的电动车以及自行车。提供了基于检测的方法与基于跟踪的方法。基于检测的方法会对检测到有目标实例的每一帧返回标注图像, 基于跟踪的方法则在此基础上进行了去重。

运行环境:

conda  activate  yolo

预训练模型

对yolov5s进行了微调,以增加在电梯视角下识别的准确率。

模型路径runs/train/exp8/weights/best.pt

可识别类别: 电动车(类别号1),自行车(类别号2),行人(类别号4)

基于检测的方法

运行 detect_ebike.py 文件,

detect_ebike.py中提供的EbikeDetection类,用于检测电动车以及自行车。

class EbikeDetection(): 
    def __init__(self,model_path = 'runs/train/exp8/weights/best.pt',classes = [1,2],device=0,conf_thresh = 0.25,view_img = False):
        '''
        params: 
            model_path: 预训练模型路径,为字符串输入
            classes: 检测类别,为列表。默认检测[1,2]为电动车与自行车。
            device: 所使用的GPU编号。
            conf_thresh: 检测的置信度。可以控制只保留置信度高于阈值的检测结果,过滤掉置信度较低的结果。通过调整conf_thresh的值,可以灵活地控制检测结果的准确性和召回率。较高的阈值会过滤掉置信度较低的检测结果,可以提高准确性但可能会降低召回率;较低的阈值会保留更多的检测结果,可以提高召回率但可能会降低准确性。
            view_img: 是否实时显示图像,调试时使用,默认为False。
        '''
    def detect_one_frame(self, frame):
        '''
        执行检测的主函数,仅当检测结果不为空时返回标注后的图像,否则返回None。
        '''
  • 使用方法
  1. 创建检测实例

    detecting_ebike = EbikeDetection(model_path = 'runs/train/exp2/weights/best.pt',classes = [1,2],device=0,conf_thresh = 0.25,view_img = False)
    

    可全部使用默认参数 detecting_ebike = EbikeDetection()

  2. 逐帧识别图像:

    使用时调用detecting_ebike.detect_one_frame()函数。

    result = detecting_ebike.detect_one_frame(frame)
    

    frame为从rtsp流/视频文件/图像文件等中截取的一帧图像。
    当检测结果不为空时,返回标注好的图像,否则返回None。

  • 示例

    detect_ebike.py文件中提供了三个示例函数运行,分别接收 rtsp流/视频文件,文件夹,以及单帧图像作为输出。
    rtsp流/视频文件:

    def test_rtsp(rtsp_url,save_path,frame_interval = 1):
        '''
        rtsp_url: rtsp流地址。
        save_path: 结果文件存储路径,存储所有检测结果不为空的标注图像,用于调试。
        frame_interval: 间隔多少帧进行检测。
        '''
    

在这里插入图片描述

文件夹:

def test_folder(folder_path, save_path,frame_interval =1)'''
    folder_path: 存储测试图像的文件夹,默认其中的所有文件为图像格式。
    其余同test_rtsp函数。
    '''

在这里插入图片描述

单帧图像:

def test_img(img_path, save_path):

Note

detect_ebike.py文件默认执行test_folder函数,test_sample提供了少许测试图像。

parse_opt()函数用以命令行接收EbikeDetection类的初始化参数,用以测试时使用。初始化参数可不作修改。
在这里插入图片描述

基于跟踪的方法

基于跟踪的方法不会对检测到的每一帧返回标注图像,只会在检测到新的实例后返回标注图像。

具体可见
track_ebike.py 文件。定义了EbikeTracking类用以跟踪检测对象,使用方法与基于检测的方法类似,可均使用默认参数。

tracking_ebike = EbikeTracking(weights='runs/train/exp8/weights/best.pt',imgsz=(640, 640),classes=[1,2],config_deepsort="deep_sort_pytorch/configs/deep_sort.yaml",device='cuda:0',conf_thres = 0.25, iou_thres = 0.45, view_img = False)
# 默认参数: tracking_ebike = EbikeTracking()
'''
config_deepsort: 追踪模型配置文件路径
iou_thres: 
   用于设置在目标跟踪中的IoU(Intersection over Union)阈值。IoU是一种衡量两个边界框重叠程度的度量指标。在目标跟踪中,当两个边界框的IoU大于等于设定的阈值时,认为这两个边界框表示同一个目标。
   具体来说,当进行目标跟踪时,系统会根据当前帧中的检测结果和前一帧中已经跟踪的目标,通过计算当前帧中每个检测结果与已跟踪目标的IoU,来判断是否将其归为同一个目标。如果当前帧中某个检测结果与已跟踪目标的IoU大于等于设定的阈值(iou_thresh),则将其归为同一个目标,否则将其视为新的目标。
其余同检测模型参数。
'''
result = tracking_ebike.track_one_frame(frame)

识别示例结果:

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

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

相关文章

使用shardingsphere实现mysql数据库分片

在大数据时代,随着业务数据量的不断增长,单一的数据库往往难以承载大规模的数据处理需求。数据库分片(Sharding)是一种有效的数据库扩展技术,通过将数据分布到多个数据库实例上,提高系统的性能和可扩展性。…

图解Lamda使用场景

1.参考如下文章,讲的挺好的 深入浅出 C Lambda表达式:语法、特点和应用 (请注意:此链接是本章节的原文) 2. 什么是 Lambda表达式(截取以上参考文章) Lambda表达式是一种在被调用的位置或作为…

每日OJ题_牛客_NC40链表相加(二)_链表+高精度加法_C++_Java

目录 牛客_NC40链表相加(二)_链表高精度加法 题目解析 C代码 Java代码 牛客_NC40链表相加(二)_链表高精度加法 链表相加(二)_牛客题霸_牛客网 题目解析 模拟⾼精度加法的过程,只不过是在链表中模拟。 C代码 /*…

107.WEB渗透测试-信息收集-FOFA语法(7)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:106.WEB渗透测试-信息收集-FOFA语法(6) 密码文件: 语…

MFC设置特定控件字体大小和背景颜色

MFC设置特定控件字体大小和背景颜色 初始化函数里 m_editFont.CreatePointFont(580 , _T("宋体"));m_ctrlEdit.SetFont(&m_editFont);重写消息 HBRUSH CMFCTESTDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) {HBRUSH hbr CDialogEx::OnCtlColor(pDC,…

Calcite第一课

Calcite 是什么? 2024 年 9 月,最新版本 1.37.0 。前面三节我们先不看任何的源码,只从背景、介绍、概念、原理层面入手,作为深入学习和源码分析的预备。 如果用一句话形容 Calcite,Calcite 是一个用于优化异构数据源的…

最全测评!分享7款超好用的AI论文润色网站

在当前的学术写作领域,AI论文润色工具已经成为提升论文质量和效率的重要助手。以下是七款超好用的AI论文润色网站,其中特别推荐千笔-AIPassPaper。 一、千笔-AIPassPaper 是一款集论文大纲生成、内容填充、文献引用、查重修改于一体的全方位论文写作平…

友思特“未来视界”趣味实验室 | 第2讲:中草药的高光谱成像

第2讲 ——当中药遇上高光谱系统 友思特“未来视界”实验室第二讲开课了!本期主角是凝结了中国古老智慧的特色——中药。 从神农尝百草到《本草纲目》典籍问世,中药材发展至今,品类已高达上万种。在这其中,难免会存在形态相似而…

曲面构件的布尔运算

1.前言 布尔运算算法有多种,可以根据几何数据表达方式分为Brep布尔运算、CSG布尔运算、网格布尔运算等,而网格布尔运算又又多种,如BSP方式、八叉树方式,博主实现过Brep布尔运算、BSP和八叉树两种网格布尔运算。详细可参考博主文章…

[NewStarCTF 2023 公开赛道]Begin of PHP1

开始代码审计. <?php error_reporting(0); highlight_file(__FILE__);if(isset($_GET[key1]) && isset($_GET[key2])){echo "Level 1<br>";if($_GET[key1] ! $_GET[key2] && md5($_GET[key1]) md5($_GET[key2])){$flag1 True;}else{die(…

依赖倒转原则(DIP)

依赖倒转原则&#xff08;DIP&#xff09;&#xff1a;Dependency Inversion Principle&#xff0c;模块之间要依赖抽象&#xff0c;不依赖实现&#xff0c;要面向接口编程&#xff0c;不要面向实现编程。高层次模块不应该直接依赖低层模块&#xff0c;这样就降低了客户端与实现…

2024.9.26 作业 +思维导图

一、作业 1、什么是虚函数&#xff1f;什么是纯虚函数 虚函数&#xff1a;函数前加关键字virtual&#xff0c;就定义为虚函数&#xff0c;虚函数能够被子类中相同函数名的函数重写 纯虚函数&#xff1a;把虚函数的函数体去掉然后加0&#xff1b;就能定义出一个纯虚函数。 2、基…

排序--堆排序【图文详解】

二叉树的相关概念 叶子&#xff1a;没有子节点的节点叫叶子节点 大根堆&#xff1a;所有的父亲大于儿子 小根堆&#xff1a;所有的儿子大于父亲 父亲于儿子的的下标关系&#xff1a; 父亲的下标为i &#xff0c;那么左孩子的下标为2*i1&#xff0c;右孩子的下标为2i2 子的下…

Fuxi:一款功能强大的跨平台渗透测试工具

关于Fuxi Fuxi是一款功能强大的跨平台渗透测试工具&#xff0c;该工具基于Python 3开发&#xff0c;支持在Linux、macOS和Windows操作系统上使用&#xff0c;具备良好的跨平台特性。在该工具的帮助下&#xff0c;广大研究人员可以轻松快速地执行渗透测试和安全研究任务。 工具…

SpringCloudEureka简介

背景 SpringCloudEureka是基于NetfliEureka做了二次封装&#xff0c;负责微服务架构的服务治理功能。 SpringCloud通过为Eureka增加SpringBoot风格的自动化配置&#xff0c;只需要简单的引入依赖和注解配置&#xff0c;就能让SpringBoot构建的微服务应用轻松和Eureka服务治理体…

SQL语言入门

一、SQL语言入门&#xff1a; 数据库管理人员&#xff08;DBA&#xff09;通过数据库管理系统&#xff08;DBMS&#xff09;可以对数据库&#xff08;DB&#xff09;中的数据进行操作 SQL是一种非过程化语言&#xff0c;只需提出“做什么”&#xff0c;而不需要指明“怎么做”…

11. LCEL:LangChain Expression Language

这篇文章覆盖了LCEL的理解和他是如何工作的。 LCEL(LangChain Expression Language)&#xff1a;是把一些有趣python概念抽象成一种格式&#xff0c;从而为构建LangChain组件链提供一种“简约”代码层。 LCEL在下面方面有着强大的支撑&#xff1a; 链的快速开发流式输出、异…

C++ 刷题 使用到的一些有用的容器和函数

优先队列 c优先队列priority_queue&#xff08;自定义比较函数&#xff09;_c优先队列自定义比较-CSDN博客 373. 查找和最小的 K 对数字 - 力扣&#xff08;LeetCode&#xff09; 官方题解&#xff1a; class Solution { public:vector<vector<int>> kSmallestP…

java 解析excel (本地资源)

在Java中解析Excel文件&#xff0c;可以使用Apache POI库。以下是一个简单的例子&#xff0c;展示如何使用Apache POI读取一个Excel文件&#xff08;假设为.xlsx格式&#xff09;的内容。 首先&#xff0c;确保你的项目中包含了Apache POI的依赖。如果你使用Maven&#xff0c;…

绝了,自从用了它,我每天能多摸鱼2小时!

大家好&#xff0c;我是可乐。 俗话说的好&#xff1a;“摸鱼一时爽&#xff0c;一直摸鱼一直爽”。 作为一个程序员&#xff0c;是否有过调试代码熬到深夜&#xff1f;是否有过找不到解决方案而挠秃头顶&#xff1f; 但现在你即将要解放了&#xff0c;用了这款工具——秘塔…