ByteTrack多目标跟踪(一)—理论基础

news2024/9/20 20:27:34

ByteTrack多目标跟踪

算法概述

github: https://github.com/ifzhang/ByteTrack

ByteTrack是一种基于Tracking-by-Detection范式的多目标跟踪算法。

先前的多目标追踪算法一般在完成当前帧的目标检测后只会保留置信度比较大的检测框用于进行目标跟踪,比如图中置信度为0.9和0.8的目标框。而在ByteTrack中,作者保留了所有的检测框并且通过阈值将它们分成了高置信度检测框和低置信度检测框。ByteTrack 可以有效解决一些遮挡,且能够保持较低的 ID Switch。因为目标会因为被遮挡检测置信度有所降低,当重新出现时,置信度会有所升高

  1. 当目标逐渐被遮挡时,跟踪目标与低置信度检测目标匹配。
  2. 当目标遮挡逐渐重现时,跟踪目标与高置信度检测目标匹配。

整个算法的代码实现包括了两个最重要的类,来控制整个算法的流程。

STrack class

BYTETrack class

ByteTrack原理

ByteTrack解决了多目标跟踪中的一个重要问题,即低分检测框的处理

  • 传统的跟踪方法通常只关联高分检测框,而低分检测框通常被忽略,这会导致一些真实的目标被漏检或者
    跟踪轨迹被碎片化
  • ByteTrack通过关联几乎每个检测框,包括低分检测框,利用它们与轨迹片段的相似性来恢复真实目标并
    过滤掉背景检测,从而提高了检测器的性能。

在这里插入图片描述

对论文中的原理图进行说明:

  1. a:第一部分是使用目标检测器对不同帧中的人进行检测和识别,在不同的帧中会出现 由于互相的遮挡导致行人检测的置信度降低,若置信度小于0.5时则不会对其进行跟踪(跟踪的忽略)从而导致跟踪的失败。也就是图b出现的情况。
  2. 若在跟踪的过程中也考虑到目标检测时的低分框,则通过算法的改进之后则可以预测出 遮挡人物的位置信息,从而完成对目标的跟踪。
  3. 通过对低分框的处理提高了目标跟踪算法的性能指标。

在这里插入图片描述

根据论文中的实验:整个算法包括了两次数据关联,第一次的数据关联可以采用IOU关联或者采用Re-ID特征进行关联。第二次的数据关联(也就是对低分框进行数据的关联)根据实验的结果更推荐使用IOU的方式来进行关联。

关联方法

  1. 根据目标框的置信度把检测分为高置信度目标框和低置信度目标框。

  2. 第一次把高置信度目标框与之前的跟踪轨迹进行匹配

  3. 第二次使用低置信度目标框与第一次没有匹配上高置信度目标框的跟踪轨迹进行匹配

  4. 对于没有匹配上跟踪轨迹而置信度又足够高的目标框,为其新建一个跟踪轨迹。对于没有匹配上目标框的跟踪轨迹会保留30帧,可以再次进行匹配。

工作机理:

遮挡常导致检测得分由高到低缓慢变化,被遮挡物体在被遮挡之前是可视物体,检测分数较高,可以建立跟踪ID;当物体被遮挡时,通过检测框与轨迹的位置重合度把被遮挡的物体从低分框中挖掘出来,从而保持跟踪ID的连贯性。

ByteTrack论文解析

论文中提到了跟踪方法的思想:在跟踪方法中每一个检测框相当于是在计算机程序中的字节一样是一个核心的基本单位。

we present a simple and effective association method BYTE, named for each detection box is a basic unit of the tracklet, as byte in computer program

整个算法和DeepSort算法一样也是依据Tracking-by-Detection(基于检测的方法)的步骤来进行跟踪算法的实现的

在这里插入图片描述

  • 视频序列输入
  • 目标检测器
  • 特征提取
  • 数据关联
  • 轨迹管理

等一系列的步骤构成了Tracking-by-Detection算法的实现流程。

状态转移图

当一个track初始化的时候,当前的状态处于new状态,当该track没有任何的detection匹配成功之后转变为removed状态,匹配成功时则会位于tracked(匹配状态)。

依据连续帧的匹配状态在tracked(匹配状态)和Lost(失配状态)之间进行转换。

lost状态连续超过30次之后则会转变为Removed状态。

在这里插入图片描述

根据论文中的介绍,我们在考虑低得分框从而提升了整个跟踪算法性能的同时,这种考虑低得分框的方法其实也会出现一些问题。

例如在论文的图a中出现的置信度为0.1的得分框并不是真实的人物而是出现的 误判框将其参与到跟踪的算法中则会产生一些问题。(错误的跟踪)

论文中介绍了处理低得分检测框的一些方法:对于低得分的检测框使用轨迹相似度的方法来提供了一种强有力的与背景信息区分的方法。使得背景框被去除(没有匹配的轨迹)

高得分的检测框同样采用的时之前使用到的使用 运动特征和外观相似度的方法来进行匹配。

论文创新点

The innovation of BYTE lies in the junction area of detection and association, where low score detection boxes are bridges to boost both of them.

在检测和数据关联之间考虑到了junction area的问题。

ByteTrack算法流程

在这里插入图片描述

一阶段匹配

高分检测框的匹配

byteTrack算法在匹配的时候主要分为两步 第一:对高得分的检测框,通过卡尔曼滤波器更新对应的状态,同时使用匈牙利算法将其与跟踪器进行匹配。对于已经匹配到的跟踪器将该追踪器的状态设置为激活状态。

第二:对于没有匹配到的检测目标,为其设置新的追踪器(并将追踪器的状态设置为new状态)

第三:将剩余的没有匹配到的追踪器—定义为remain状态 与小于某一个阈值低分检测框,进行第二次的匹配的操作。

二阶段匹配

低分检测框的匹配

第一:将低分检测框,与还没有匹配的追踪器之间(Remain Track)之间采用相同的方式进行匹配操作。

第二:对于第二次中匹配的候选框,将其状态改为激活态(update)跟踪器变为激活态。

第三:第二次匹配中还是没有匹配成功的追踪器(Track)将其状态从(Remain Track)转变状态为(Re-remain状态)

第四:若追踪器保持(Re-remain状态)超过30帧之后,将其状态变为Lost状态,跟踪算法失去对该检测框的跟踪。

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

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

相关文章

Git的Merge操作原理,手动merge时主分支的提交记录的保留规则

merge merge 是 Git 中用于将不同分支的历史记录合并在一起的命令。它可以将一个分支的变化合并到当前分支中,同时保留两条分支的历史记录。merge 的主要用途: 整合功能:将某个功能分支(如 feature-branch)的修改合并到主分支(如 main)中。 保留提交历史:与 git reba…

drop database xx 傻逼玩意

DB2数据库,就是一个逗比。下面我演示一遍,从创建数据库到删除数据库跑路。哈哈 1.创建数据库 db2 create database test我创建了一个数据库 test 查一下数据库目录 db2 list db directory因为我电脑只有一个盘,C盘,我是装在C盘…

npm login 或者 npm publish 超时timeout

场景:空闲时间想自己尝试下npm发布包,毕竟这东西可以不用,但不能不会 步骤很简单 1.npm login 2.npm publish 这里有个坑。。。因为想发布到npm上,所以这里的镜像源要换回https://registry.npmjs.org,不能使用淘宝镜像…

基于SSM+MySQL的医院在线挂号系统

系统背景 在当前数字化转型浪潮的推动下,医疗服务行业正经历着前所未有的变革。随着人口老龄化的加剧、患者就医需求的日益增长以及医疗资源分布不均等问题的凸显,传统的就医模式已难以满足患者对于便捷、高效医疗服务的需求。因此,构建一套基…

神仙级AI大模型入门教程(非常详细),从零基础入门到精通,从看这篇开始!

一.初聊大模型 1.为什么要学习大模型? 在学习大模型之前,你不必担心自己缺乏相关知识或认为这太难。我坚信,只要你有学习的意愿并付出努力,你就能够掌握大模型,并能够用它们完成许多有意义的事情。在这个快速变化的时…

8千多古诗词唐诗宋词鉴赏ACCESS\EXCEL数据

虽然已经有很多诗词类的数据库,最近又再次找了一下古诗词类的数据,又发现了一些,可是真的是各有各的优点,各有各的特色,之后不再重找诗词类的数据了。 今天这个诗词鉴赏数据也不错,有分类TAG,也…

运维学习————Jenkins部署Jar包

目录 使用Jenkins部署Jar包 1、在Jenkins构建Jar包 2、把项目部署到jenkins本地 3、部署到远程服务器上(不是Jenkins所在的服务器) 4、其他jenkins部署方式(使用插件publish over ssh) 1、安装插件 2、配置system 3、jenkins配置 使用Jenkins部署…

【开端】clickhouse入门使用

一、绪论 这两天使用clickhouse进行数据分析,在使用上和mysql等关系型数据库还是有区别的,在SQL语法上也有差别,所以这里总结一下使用。 二、clickhouse入门使用 ClickHouse介绍 ClickHouse是俄罗斯的Yandex公司于2016年开源的列式存储数据…

SSM健身俱乐部网站—计算机毕业设计源码25623

摘 要 大数据时代下,数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求,利用互联网服务于其他行业,促进生产,已经是成为一种势不可挡的趋势。在健身俱乐部的要求下,开发一款整体式结构的健身俱乐部网站…

【稀疏矩阵】使用torch.sparse模块

文章目录 稀疏矩阵的格式coocsrcsc Construction of Sparse COO tensorsConstruction of CSR tensorsLinear Algebra operations(稀疏与稠密之间混合运算)Tensor methods and sparse(与稀疏有关的tensor成员函数)coo张量可用的ten…

【软件逆向】第38课,软件逆向安全工程师之静态补丁,每天5分钟学习逆向吧!

关于x64dbg补丁工具的使用,以下是一些基本的指南和步骤: x64dbg的安装与配置:首先,您需要从x64dbg的官方网站下载并安装x64dbg。界面介绍:x64dbg的主要界面包括反汇编窗口、寄存器窗口、数据窗口和堆栈窗口。反汇编窗…

正运动邀您共聚2024 CIOE中国光博会!

■展会名称: 第25届中国国际光电博览会(以下简称:CIOE中国光博会) ■展会日期 2024年9月11日–13日 ■展馆地点 中国深圳国际会展中心(新馆)■展位号6A52-10 9月11至13日,深圳国际会展中心…

lnmp - tp6.0的安装和简单使用

概述 使用了很长时间的Mac M2芯片的电脑在之前使用虚拟机之前总有一些bug不是那么好用,周末之余重新安装了一下centos虚拟机,搭建了lnmp环境,打算自己挤时间,做一点应用,作为一次新的小小的尝试。 安装&更新 ce…

HTML5好看的花店商城源码3

文章目录 1.设计来源1.1 主界面1.2 登录界面1.3 注册界面1.4 商品列表界面1.5 商品详细界面1.6 购物车界面1.7 团队介绍界面1.8 关于我们界面1.9 其他界面效果汇总 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在…

设计模式 —— 单例模式

文章目录 一、单例模式1.1 单例模式定义1.2 单例模式的优点1.3 单例模式的缺点1.4 单例模式的使用场景 二、普通案例2.1 饿汉式单例模式(Eager Initialization Singleton)2.2 懒汉式单例模式(Lazy Initialization Singleton) 参考资料 本文源代码地址为 java-demos/singeleton-…

西柚云 Rstudio Server 使用教程

在生物信息学的研究中,R语言与RStudio的搭配如同汽车与引擎,是科研工作的强力组合。不过,除了在个人电脑上传统使用的方式,还有没有更简便、更高效的选择呢? RStudio Server Cloud —— 云端的RStudio体验 快速切换多…

【408DS算法题】036基础-14年真题_求二叉树的WPL

Index 真题题目分析实现总结 真题题目 二叉树的带权路径长度(WPL)是二叉树中所有叶结点的带权路径长度之和。给定一棵二叉树T ,采用二叉链表存储, 结点结构如下: 其中叶结点的weight域保存该结点的非负权值。设root为指向T的根结点的指针, 请…

贪心算法求无序数组最大递增序列

给定一个无序的数组&#xff0c;获取其最大的递增序列。下面使用贪心算法实现&#xff1a; 1、算法实现 void max_seq(int* arr,int len) {/// 标记递增序列的开始位置int start 0;/// 记录最大的递增序列数int max 0;int i 1;for( ; i<len; i){/// 如果当前元素大于…

【计算机组成原理】你知道什么是8421码、什么是余3码什么又是2421码吗?今天这篇文章带你认识计算机中的BCD码

BCD码 导读一、编码1.1 什么是编码&#xff1f;1.2 编码机制ASCII码非ASCII编码Unicode 二、 BCD码2.1 8421码小结 2.2 余3码2.3 2421码2.4 总结 结语 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;&#xff01; 在上一篇内容中我们介绍了不同的进位…

github中action作用和讲解

1&#xff0c;简介 GitHub Actions 是 GitHub 的一个自动化功能&#xff0c;它允许你在 GitHub 仓库中自动执行软件开发工作流程。你可以使用 GitHub Actions 来执行各种任务&#xff0c;比如&#xff1a; 自动测试&#xff1a;每当代码被推送到仓库时&#xff0c;自动运行测试…