如何基于自己训练的Yolov5权重,结合DeepSort实现目标跟踪

网上有很多相关不错的操作demo,但自己在训练过程仍然遇到不少疑惑。因此,我这总结一下操作过程中所解决的问题。

1、deepsort的训练集是否必须基于逐帧视频?
我经过尝试,发现非连续性的图像仍可以作为训练集。一个实例(如指定某个人、某辆车等)对应一个train\test文件夹即可。当然,逐帧效果更佳。
在这里插入图片描述

2、yolo训练的类型不止一个,该怎么办?
按照问题1中,每个类型都可以制作1个或多个实例(如类型0表示自行车,则可以有红色自行车、蓝色自行车等多个实例,类别1表示xxx,同理),全部都集中存放于train\test即可。

在这里插入图片描述

3、deepsort训练完成后,如何实现对自己视频中的目标进行跟踪?
将track.py相关参数进行修改即可,如下所示。注意,若yolo存在识别多个类别,则需要对应修改’–classes’中参数!!!

if __name__ == '__main__':parser = argparse.ArgumentParser()# 表示yolo训练得到的权重parser.add_argument('--yolo_weights', type=str, default='yolov5/weights/best.pt', help='model.pt path')# 表示训练得到的权重parser.add_argument('--deep_sort_weights', type=str, default='deep_sort_pytorch/deep_sort/deep/checkpoint/ckpt.t7', help='ckpt.t7 path')# 测试视频parser.add_argument('--source', type=str, default='data/test.mp4', help='source')parser.add_argument('--output', type=str, default='inference/output', help='output folder')  # output folderparser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)')parser.add_argument('--conf-thres', type=float, default=0.4, help='object confidence threshold')parser.add_argument('--iou-thres', type=float, default=0.5, help='IOU threshold for NMS')parser.add_argument('--fourcc', type=str, default='mp4v', help='output video codec (verify ffmpeg support)')parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')# True表示显示、保存、存储结果parser.add_argument('--show-vid', action='store_true', default=True,help='display tracking video results')parser.add_argument('--save-vid', action='store_true',default=True, help='save video tracking results')parser.add_argument('--save-txt', action='store_true',default=True, help='save MOT compliant results to *.txt')# 表示跟踪所有类别,yolo训练类型共200种parser.add_argument('--classes', nargs='+', default=list(range(200)), type=int, help='filter by class')parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS')parser.add_argument('--augment', action='store_true', help='augmented inference')parser.add_argument('--evaluate', action='store_true', help='augmented inference')parser.add_argument("--config_deepsort", type=str, default="deep_sort_pytorch/configs/deep_sort.yaml")args = parser.parse_args()args.img_size = check_img_size(args.img_size)with torch.no_grad():detect(args)

效果
在这里插入图片描述

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

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

相关文章

二叉树、红黑树、B树、B+树

二叉树 一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。 二叉树的特点: 每个结点最多有两棵子树,即二叉树不存在度大于2的结点。二叉树的子树有左右之分&#xf…

HPC是如何助力AI推理加速的?

高性能计算(High-Performance Computing,HPC)通过提供强大的计算能力、存储资源和网络互联,可以显著地辅助人工智能(AI)应用更快地进行训练和推断。那么,HPC是如何助力AI推理加速的?…

PostgerSql

建表修改字段等语句 1.建表 create table student ( id int, name varchar(30), birthday date, score numeric(5,2) ) 2.修改表名称 alter table student rename to student1; 3.修改表中列的类型 alter table student1 alter column name type varchar(40); 4.删除表的…

java八股文面试[多线程]——什么是线程安全

对线程安全的理解 总结:一个进程内的多个线程同时访问堆内存。 知识来源: 【并发与线程】对线程安全的理解_哔哩哔哩_bilibili

9.4 集成功率放大电路

OTL、OCL 和 BTL 电路均有各种不同输出功率和不同电压增益的集成电路。应当注意,在使用 OTL 电路时,需外接输出电容。为了改善频率特性,减小非线性失真,很多电路内部还引入深度负反馈。这里以低频功放为例。 一、集成功率放大电路…

创邻科技张晨:图数据库,激活数据要素的新基建

“数据经济时代,数据要素产业链的各细分领域均蕴含机遇,图技术作为网络协同和数据智能的底层发动机,将深度掘金数字中国价值潜能”。 8月22日,在2023中国(南京)国际软件产品和信息服务交易博览会的信息技术…

Selenium 遇见伪元素该如何处理?

问题发生 在很多前端页面中,大家会见到很多::before、::after 元素,比如【百度流量研究院】: 比如【百度疫情大数据平台】: 以【百度疫情大数据平台】为例,“累计确诊”文本并没有显示在 HTML 源代码中&am…

【项目实战典型案例】05.前后端分离的好处(发送调查问卷)

目录 一、背景二、思路三、过程1、主要的业务逻辑2、解决问题的思路 四、总结五、面向对象的好处 一、背景 以下流程图是给用户发送调查问的整体流程,将不必要的业务逻辑放到前端进行处理。这样导致逻辑混乱难以维护。前后端分离的其中一个目的是将功能的样式放在了…

AODV代码实现详解——原理与源码分析(一)

首先来几个标准参考: RFC 3561 RFC 3561 中文翻译 一个博客 挺好的另一个博客 事件? 字段长度? 事件驱动 各种定时器 状态转移图? AODV协议 基本概念 AODV(Ad hoc On-Demand Distance Vector)是一种基于…

门禁系统忘记登入密码,现在更换电脑如何迁移旧电脑门禁系统的数据

环境: ivms-4200 v3.10.0.6_c 问题描述: 门禁系统忘记登入密码,现在更换电脑如何迁移旧电脑门禁系统的数据,旧电脑记住密码,忘了密码和密保了 解决方案: 1.前往海康官网下载4200客户端,在新电脑上安装 …

使用锐捷RG-EG210G-E路由器实现两个IP地址冲突的局域网互通

需求背景: 之前写过一篇博文使用路由器实现三个不同网段局域网内的计算机相互访问,链接如下 https://blog.csdn.net/agang1986/article/details/131862160 当前的需求又发生了变更,有两个独立的局域网,内部的计算机个数和配置的IP…

HTTPS 握手过程

HTTPS 握手过程 HTTP 通信的缺点 通信使用明文,内容可能被窃听(重要密码泄露)不验证通信方身份,有可能遭遇伪装(跨站点请求伪造)无法证明报文的完整性,有可能已遭篡改(运营商劫持) HTTPS 握手过程 客户端发起 HTTPS 请求 用户在浏览器里…

go vet中的那些检测项

go vet 是 Go 语言自带的一个工具,用于分析 Go 代码中的常见错误和潜在问题。它可以检查代码中可能存在的各种问题,例如: 未使用的变量、函数或包 可疑的函数调用 错误的函数签名 程序中的竞态条件 错误的类型转换等 本文意图指令当前go vet所…

如何编译打包OpenSSH 9.4并实现批量升级

1 介绍 openssh 9.4版本已于8月10号发布,安全团队又催着要赶紧升级环境里的ssh版本,本文主要介绍Centos5、Centos6、Centos7下openssh 9.4源码编译rpm包以及批量升级服务器openssh版本的方法。关注公众号后台回复ssh可获取本文相关源码文件。 https://w…

QT 消息对话框按钮显示

前言 搞QT嘛,大多数都是军工。都要国产化,而且消息对话框的按钮的英文也不是很得劲,所以需要汉化。使用静态函数的按钮就是显示英文,汉化的代码如下。 void Widget::on_pushButton_clicked() {QMessageBox box(QMessageBox::Inf…

ES基础操作

1.创建索引 在 Postman 中,向 ES 服务器发 PUT 请求 : http://127.0.0.1:9200/shopping 后台日志 重复发送 PUT 请求添加索引 : http://127.0.0.1:9200/shopping ,会返回错误信息 : 2.获取单个索引相关信息 在 Postman 中&#…

Springboot+mybatis-plus+dynamic-datasource+Druid 多数据源 分布式事务

Springbootmybatis-plusdynamic-datasourceDruid 多数据源事务,分布式事务 文章目录 Springbootmybatis-plusdynamic-datasourceDruid 多数据源事务,分布式事务0.前言1. 基础介绍ConnectionFactoryAbstractRoutingDataSource 动态路由数据源的抽象类 Dyn…

CSS学习笔记01

CSS笔记01 什么是CSS CSS(Cascading Style Sheets ):层叠样式表,也可以叫做级联样式表,是一种用来表现 HTML 或 XML 等文件样式的计算机语言。字体,颜色,边距,高度,宽度…

5 群起集群

1.在启动集群之前,先配置workers,有几个节点就配置几个 [atguiguhadoop102 hadoop]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/workers在该文件中增加如下内容: hadoop102 hadoop103 hadoop104 注意:该文件中添加的内容结尾不允许有空格&a…