【多目标跟踪MOT学习笔记】字节跳动ByteTrack论文研究(一):BYTE策略

2023-10-27


前言

  最近在研究Tracking-by-Detection的目标跟踪策略,想优化SOT的跟踪性能,恰好搜到了字节的这篇文章,所以进行了研究,本文简略介绍论文中所提到的BYTE策略。


一、是什么ByteTrack?

  什么…是快乐星球?(手动狗头)
  ByteTrack是字节跳动与2021年10月份公开的一个全新的MOT算法,原论文是《ByteTrack: Multi-Object Tracking by Associating Every Detection Box》目前收录于arXiv,还未发表。
  ByteTrak的MOTA和FPS都实现了较好的性能,要优于现有的大多数MOT算法。
在这里插入图片描述
  个人觉得,本文的核心就是BYTE,不过BYTE的策略真的是十分简单易懂,而且原论文中也只有一个伪代码作为参考,所以我对该策略进行了总结。

二、BYTE

1.BYTE method 概览

  由于原论文里面只有几张图片和一个伪代码,我根据自己对原论文的BYTE算法理解绘制了BYTE的流程框图,如下图所示。
在这里插入图片描述
  先前的MOT算法一般在完成当前帧的目标检测后只会保留置信度比较大的检测框用于进行目标跟踪,比如图中置信度为0.9和0.8的目标框。而在BYTE中,作者保留了所有的检测框(图中的所有四个黄色的检测框)并且通过阈值将它们分成了两份,先后与上一帧的检测框(绿框、红框和蓝框)进行关联。
  在跟踪过程中,由于遮挡、运动模糊和尺度变换等因素,我们仅仅凭借高置信度的检测框无法完美地实现所有目标的MOT,比如上图中关联1的输出,原先红框的对象被遗漏了,而关联2则较好地解决了这个问题,利用低置信度的检测框,既完成了红框目标的匹配,也滤除了背景误检的框(置信度为0.1的黄框)。

2. First Association(关联1)

  完成Object Detection以后,对检测框的拆分较为容易理解,下面详细介绍一下BYTE提出的association策略。
  对于关联1,我们可以将其理解为目前MOT主流的跟踪策略。下面展示了可视化的关联思路。
在这里插入图片描述
  假设上图表示的是当前帧的关联策略,那么该操作的输入分别是前一帧的所有跟踪框的信息的卡尔曼滤波预测结果和当前帧的检测网络检测得到的置信度高于阈值的检测框,即上图中的粉红色的框框取的部分。(为了方便画图,我将KF操作包括在了关联1里面)
  后续操作便是经典的IoU匹配和匈牙利算法寻优,得到当前帧的跟踪结果。关联1结束以后,为得到匹配的跟踪框和检测框将保留(图中的D_remain和T_remain),用于后续操作。
  作者还提出,BYTE的关联1操作具有灵活性并可用于其他MOT算法,比如用在DeepSort里,就可以将Re-ID特征提取结果加入到关联1中,如上图所示。

3. Second Association(关联2)

  关联2的输入分别为第置信度的检测框(如下图红框所示),以及关联2的其中一个输出结果T_remain,其操作事实上仅仅只使用了IoU匹配,最后输出匹配上的跟踪框tracks T和仍然没有匹配上的检测框T_re-remain。
在这里插入图片描述
  作者表示,对于低置信度的检测框,由于目标往往处于严重遮挡和严重运动模糊的状态,所以外观相似度特征(比如ReID)非常不可靠,而相比较而言IoU匹配是更佳的选择,鉴于此,在关联2中,作者仅仅只使用了IoU,而并未引入外观相似度。
  对于关联1,我们可以将其理解为目前MOT主流的跟踪策略。下面展示了可视化的关联思路。

4. Post-Processing(后处理)

  以上已经介绍了BYTE的主题思路,确实是简单易懂,但是还没完事,想必各位巨佬都已经注意到了我们还有两个数据没有处理,分别是关联1的输出D_remain和关联2的输出T_re-remain。这里作者给出了处理方案。

4.1 T_re-remain

  事实上,对于长时的目标跟踪,我们对跟踪框的ID进行保存是很有必要的(比如目标10在第100帧消失后,又在第120帧重新出现),所以对于关联2操作以后未得到匹配的跟踪框T_re-remain(即消失的目标),作者将其放入了T_lost中。
  T_lost中的跟踪框会在保留特定帧以后进行删除(比如30帧),而在这30帧里面,T_lost将仍然放到tracks T里面进行下一帧的跟踪预测,只是对于当前帧的跟踪结果,T_lost的boxes和ID并不会显示在图中(说白了就是表面上看不出来,实际上还是在使用这些未匹配上的框,如果这些框一直匹配不上就扔了,也不亏,要是重新匹配上了就血赚~)。

4.2 D_remain

  关联1输出的D_remain直接用于生成新的跟踪框,表示有新目标出现。因为本身D_remain中的检测框都拥有较高的置信度,如果其中的目标框的置信度高于设定阈值且连续两帧都被检测到的话,就生成新的跟踪框。


总结

  后续看一下ByteTrack算法,再试试能不能把官方例程跑通。其实是想把BYTE机制用到SOT里的,不过看官方源码上手的应该快一些~
  官方源码传送门:https://github.com/ifzhang/ByteTrack

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【多目标跟踪MOT学习笔记】字节跳动ByteTrack论文研究(一):BYTE策略 的相关文章

随机推荐

  • 动态通讯录

    目录 1 修改联系人结构体 2 修改初始化功能 3 增加判断通讯录是否需要扩容 4 修改删除功能 在静态内存的基础之上 我们试着用动态内存开辟空间的方式去修改通讯录 动态通讯录是对静态通讯录的补充 只需要修改部分代码就可行 1 修改联系人结
  • 人工智能中蕴含的情商

    古语云 人之初 性本善 性相近 习相远指的是生于天地之间的为人处事之道 善良并不意味着胆小与懦弱 格物斯坦认为善良的人往往具有较高的情商和组织协调能力 善待世间的一切天地万物 一切是非恩怨 一切明争暗斗 且听吾分析到来 有句话是这样说的 情
  • Building an MFC project for a non-Unicode character set is deprecated

    VS2013多字节工程问题 使用VS2013编译旧版VC 程序时 提示Building an MFC project for a non Unicode character set is deprecated 微软提供了解决方案 一 错误信
  • 关于cmake qmake make makeile之间的关系问题

    总之 qmake是根据 pro文件生成makefile文件 同理cmake是根据CMakeList txt生成的makefile文件 make再根据makefile文件来编译工程文件 来完成 预编译 gt 编译 gt 汇编 gt 链接 中的
  • 使用命令行将Windows上的Git升级到最新版本

    关于Git的命令有很多 这里简单说一下和版本升级有关的几条吧 查看版本信息 git version 在2 14 2和2 16 1之间的版本中 命令是git update 从Git 2 16 1开始 您可以使用git update git f
  • Struts2中关于"There is no Action mapped for namespace / and action name"的总结

    参考 http www cnblogs com gulvzhe archive 2011 11 21 2256632 html 今天在调试一个基础的Struts2框架小程序 总是提示 There is no Action mapped fo
  • 深度学习六、图像风格迁移

    所谓图像风格迁移 是指利用算法学习著名画作的风格 然后再把这种风格应用到另外一张图片上的技术 1 图像风格迁移的原理 在学习原始的图像风格迁移之前 可以先回忆一下ImageNet图像识别模型VGGNet 事实上 可以这样理解VGGNet的结
  • 云学python (第5章对象带你飞之储存 上下文管理器pickle 包)《vamei-从Python开始学编程》 笔记

    2 上下文管理器 文件操作常常和上下文管理器一起使用 上下文管理器 context manager 用于规定某个对象的使用范围 一旦进入或者离开该使用范围 则会有特殊操作被调用 比如为对象分配或者释放内存 下面是一段常规的文件操作程序 常规
  • RabbitMq消息收发详解(转)

    消费者有两种接收消息的方法 poll consumer 即拉模式 消费者主动去消息队列拉取消息 push consumer 即推模式 消息队列主动往消费者推送消息 一 消费者通过推 PUSH 方式获取消息 实现push模式最简单的方式就是使
  • Cmake中的Glog用法浅析

    Cmake中的Glog用法浅析 Glog是谷歌开源的C 日志库 用来记录程序运行时的输出信息 这里有几篇关于Glog库用法的博客 网址如下 http blog csdn net chdhust article details 5181337
  • 动态住宅代理VS静态住宅代理,怎么选择?

    现在 越来越多的海外代理服务商均支持动态住宅IP与静态住宅IP 很多小伙伴就疑惑 这二者有什么区别呢 哪个更好 其实 没有哪个更好 只有哪一个更合适您的业务 无论动态住宅IP还是静态住宅IP都来自真实的住宅IP地址 都可以提供IP隐匿作用
  • 电机矢量控制方法

    在工业控制领域 电动机是一个重要的研究方向 发电厂60 的能量都去驱动电动机来为人类服务 可见电机的控制在工业以及军事方面的重要性 电动机分为直流电机和交流电机 而交流电机包括同步交流电机和异步交流电机 同步电动机和异步电动机的区别在于 同
  • 跳出for循环

    跳出for循环有三种方式 1 continue 跳出当次循环 可继续进行下一个循环 function ceshi for var i 0 i lt 6 i if i 3 continue console log i ceshi 效果图 2
  • 如何设计管理员和用户登录界面C语言,管理员登录设计(第7节)

    本文实现管理员登录效果 当用户名和密码正确时 弹出登录成功提示 否则弹出用户名或密码错误提示 今天有以下三大学习任务 学习任务一 了解命名空间的定义 定义 namespace 空间名 类 引用 using 空间名 学习任务二 实现管理员登陆
  • 【micropython】SPI触摸屏开发

    背景 最近买了几块ESP32模块 看了下mircopython支持还不错 所以买了个SPI触摸屏试试水 记录一下使用过程 硬件相关 SPI触摸屏 使用2 4寸屏幕 常见淘宝均可买到 驱动为ILI9341 具体参数如下图 引脚描述 ESP32
  • C++中【字符串】与【整型】和【浮点型】转换攻略

    异想之旅 本人原创博客完全手敲 绝对非搬运 全网不可能有重复 本人无团队 仅为技术爱好者进行分享 所有内容不牵扯广告 本人所有文章仅在CSDN 掘金和个人博客 一定是异想之旅域名 发布 除此之外全部是盗文 C 算法刷题等过程中经常会遇到字符
  • 化工安全生产管理平台:融合重大危险源监控预警、可燃有毒气体检测报警、企业安全风险分区于一体

    产品概述 化工企业安全生产信息化管理平台 以实现化工企业安全生产数字化 信息化 智能化管理为目标 建设融合重大危险源监控预警管理 可燃有毒气体检测报警管理 企业安全风险分区管理 生产人员在岗在位管理和企业生产全流程管理于一体的安全生产信息化
  • 测试从业1到3年经验,常见软件测试工程师面试题总结

    前言 软件测试工程师 和开发工程师相比起来 虽然前期可能不会太深 但是涉及的面还是比较广的 前期面试实习生或者一年左右的岗位 问的也主要是一些基础性的问题比较多 涉及的知识主要有MySQL数据库的使用 Linux操作系统的使用 软件测试框架
  • SpringMVC文件的上传下载&JRebel的使用

    目录 前言 一 JRebel的使用 1 IDea内安装插件 2 激活 3 离线使用 使用JRebel的优势 二 文件上传与下载 1 导入pom依赖 2 配置文件上传解析器 3 数据表 4 配置文件 5 前端jsp页面 6 controlle
  • 【多目标跟踪MOT学习笔记】字节跳动ByteTrack论文研究(一):BYTE策略

    文章目录 前言 一 是什么ByteTrack 二 BYTE 1 BYTE method 概览 2 First Association 关联1 3 Second Association 关联2 4 Post Processing 后处理 4