【学习笔记】目标跟踪领域SOTA方法比较

news2024/11/14 3:40:15

目录

    • 前言
    • 方法
      • 1 TraDeS:
      • 2 FairMOT:
      • 3 SMILEtrack:
      • 4 ByteTrack:

前言

常用于行人跟踪的多目标跟踪数据集包括:MOT 15/16/17/20、PersonPath22等…
为更好比较现有SOTA算法的检测性能,本博客将针对在各数据集上表现较优的算法模型进行介绍。(表中画粗数据表明对应算法为该数据集表现最优算法)

数据集算法模型MOTA年份代码
MOT15TraDeS66.52021https://github.com/JialianW/TraDeS
MOT16FairMOT74.92022https://github.com/ifzhang/FairMOT
MOT17SMILEtrack81.062022https://github.com/WWangYuHsiang/SMILEtrack
MOT20SMILEtrack78.22022https://github.com/WWangYuHsiang/SMILEtrack
PersonPath22ByteTrack75.42021https://github.com/ifzhang/ByteTrack

:MOTA(Multiple Object Tracking Accuracy)即多目标跟踪精度,用于衡量跟踪器在检测物体和保持轨迹时的性能


方法

1 TraDeS:

原文

模型结构:
采用JDT(Joint Detection and Tracking)范式,(目标检测 + 数据关联)
追踪器的整体结构,主要由三部分组成,分别是CenterNetCVAMFW
CenterNet:backbone(Φ) + 检测head
CVA:基于代价度量C的关联模块
MFW:基于运动指导的特征整理模块

算法流程:
1、连续两帧输入图像(t、t-1时刻)送入共享权值的CenterNet的Backbone进行基础特征提取(f(t)、f(t-1)),并输入CVA
2、CVA计算两帧图像中目标的偏移,构建运动跟踪信息,进行数据关联。
在这里插入图片描述
3、MFW使用运动偏移线索将前一帧信息传播到当前帧,辅助当前帧检测。
在这里插入图片描述
4、增强特征送入CenterNet的head进行目标检测,再和之前的轨迹进行关联,实现追踪。
在这里插入图片描述

1.3 算法性能:
在这里插入图片描述

1.4 算法总结:
1、提出了一种新型的基于JDT模式的在线联合检测与跟踪模型。
2、通过将上一帧跟踪的信息反哺给本帧检测,有效提升了算法在遮挡、光线阴暗、运动模糊等条件下对目标的检测能力,为算法实现准确跟踪奠定了基础。
3、TraDeS模型能够快速、高效地实现追踪,同时可以从2维拓展到3维和实例分割追踪上。


2 FairMOT:

原文

2.1 模型结构:
基于JDE(Joint Detection and Embedding)范式,由两个齐次的同质分支组成,分别用于检测对象和提取重识别特征
在这里插入图片描述
追踪器的整体结构,主要由三部分组成,分别是主干网络CenterNetre-ID分支
主干网络:ResNet-34 + 深度层聚合(DLA+),实现基础特征提取
CenterNet:检测head,定位图像中目标,生成目标度分数
re-ID分支:生成能够区分对象的特性。

2.2 算法流程:
1、单帧图像送入主干网络得到基础特征
在这里插入图片描述
2、特征进入CenterNet检测head,对输出热图根据热图分数执行NMS,以提取峰值关键点并保留热图分数大于阈值的关键点的位置。
3、对保留关键点计算估计中心偏移量与估计检测框尺寸,得到目标预测框。
在这里插入图片描述
4、re-ID分支通过128维卷积对特征进行处理,得到ReID特征。
5、在追踪阶段,首先利用卡尔曼滤波估计轨迹位置并计算马氏距离。将结果与根据re-ID特征计算的余弦距离融合后利用匈牙利算法进行匹配。
6、对匹配失败目标进一步使用BOX_IOU进行二次匹配,再次失败目标初始化为新轨迹。
7、更新并保存轨迹
:初始轨迹根据第一帧信息计算得出

2.3 算法性能:
在这里插入图片描述

2.4 算法总结:
1、使用齐次分支结构,解决了目标检测和Re-ID存在的“不公平”关系。
2、证明了基于锚框的检测网络对后续有效学习重识别特征具有局限性。
3、证明了re-ID为有效区分同一类的不同实例,应更多地关注低级外观特征。
4、推理速度快,能够实现视频速率推断。


3 SMILEtrack:

原文
在这里插入图片描述

3.1 模型结构:
SMILEtrack采用TBD(Tracking By Detection)范式+SDE(Separate Detection and Embedding)范式,(目标检测)+(目标关联)
追踪器的整体结构,主要由三部分组成,分别是YOLOXSLM(ISA)SMC
YOLOX:图像中目标定位检测模块
SLM:目标相似度计算
ISA (Image Slicing Attention Block):图像切片注意力模块
SMC(Similarity Matching Cascade):对检测到的目标基于进行数据关联

3.2 算法流程:
1、连续两帧检测图像送入YOLOX,检测并裁剪得到图像中具体目标。
在这里插入图片描述
2、两帧图像中目标进入SLM模块,通过其内部共享权重的ISA及全连接聚合后,得到目标外貌特征,并计算其对应余弦相似度得分。
在这里插入图片描述
3、对待跟踪目标(t-1)预测本帧运动轨迹(卡尔曼滤波)。
4、SMC模块按照检测框检测分数高低,通过计算目标运动相似度加粗样式矩阵、外貌相似度矩阵依次进行匹配实现跟踪。
5、对于检测分数大于阈值却匹配失败的目标,将其作为新的跟踪对象。

3.3 算法性能:
在这里插入图片描述

3.4 算法总结:
1、使用外貌加运动相似度相结合的机制,对目标关联部分提出了改进,有效提升了算法跟踪精度,在MOT17上达到了SOTA。
2、由于基于TBD范式,无法实现端到端检测。
3、运行速度比联合检测和嵌入( JDE )方法慢。


4 ByteTrack:

原文
在这里插入图片描述

4.1 模型结构:
基于TBD范式。目标检测 + 数据关联

4.2 算法流程:
1、连续两帧图像输入YOLOX,对图像中存在的目标进行检测。
2、按照得分将预测框分为高分结果与低分结果两类,分开处理。进行三级匹配关联。
BYTE 数据关联方法具体的流程:
(1)使用高分框和之前的跟踪轨迹进行匹配
(2)使用低分框和第一次匹配失败跟踪轨迹进行匹配
(3)对于没有匹配上跟踪轨迹,得分又足够高的检测框,对其新建一个跟踪轨迹。对于没有匹配上检测框的跟踪轨迹保留30帧,以便后续再进行匹配。
:匹配过程仍沿用SORT方法,使用卡尔曼滤波预测出当前帧的运动轨迹,并计算预测框和实际框间的 IOU相似度得分,通过匈牙利算法完成匹配跟踪。

4.3 算法效果:
在这里插入图片描述

4.4 算法总结:
1、提出了一种简单高效的数据关联方法 BYTE,利用低分检测框包含的目标特性,大幅提升了算法跟踪性能。
2、由于ByteTrack 仅采用运动特征,没有采用外表特征进行匹配,故跟踪的效果十分依赖于检测效果。
3、BYTE算法可与任何目标检测算法连接使用,相比JDE和FairMOT,在工程应用上更为简洁。
4、在MOT17上,MOTA为76.6,检测速度能够达到30FPS,能够有效降低漏检并提高轨迹的连贯性。

------tbc-------
有用请点个👍哦~~😀

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

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

相关文章

hive删除数据进行恢复

在实际开发或生产中,hive表如果被误删,如被truncate或是分区表的分区被误删了,只要在回收站的清空周期内,是可以恢复数据的,步骤如下: (1) 先找到被删除数据的存放目录,…

MQ公共特性介绍 (ActiveMQ, RabbitMQ, RocketMQ, Kafka对比)

本章介绍 本文主要介绍所有MQ框架都具备的公共特点,同时对比了一些目前比较主流MQ框架的优缺点,给大家做技术选型作参考。 文章目录 本章介绍MQ介绍适用场景异步通信案例一案例二 系统解耦削峰填谷广播通信总结 缺点MQ对比APQP历史AMQP是什么 MQ介绍 M…

Python数据分析实战-dataframe筛选某字段包含(模糊匹配)某些值的记录(附源码和实现效果)

实现功能 Python利用df[].str.contains()对dataframe筛选某字段包含(模糊匹配)某些值的记录 实现代码 import pandas as pddf {地址:[北京,上海,长沙,北京省会,广州市区],table:[user,student,course,sc,book]} df pd.DataFrame(df) print(df) print…

【小白必看】使用Python批量下载英雄联盟皮肤图片的技术实现

文章目录 前言运行效果截图导入必要的模块和库定义常量和变量获取所有英雄的名称遍历每个英雄遍历每个英雄的皮肤完整代码结束语 前言 英雄联盟是一款备受喜爱的团队对战游戏,游戏中每位英雄都有各种精美的皮肤供玩家选择。本文将介绍一个使用Python编写的英雄联盟皮…

计数型信号量

回顾上节所讲: Q: 什么是信号量? A: 信号量(Semaphore),是在多任务环境下使用的一种机制,是可以用来保证两个或多个关键代码段不被并发调用。 信号量这个名字,我们可以把它拆分来看,…

本地Git仓库和GitHub仓库SSH传输

SSH创建命令解释 ssh-keygen 用于创建密钥的程序 -m PEM 将密钥的格式设为 PEM -t rsa 要创建的密钥类型,本例中为 RSA 格式 -b 4096 密钥的位数,本例中为 4096 -C “azureusermyserver” 追加到公钥文件末尾以便于识别的注释。 通常以电子邮件地址…

【Android常见问题(五)】- Flutter项目性能优化

文章目录 知识回顾前言源码分析1. 渲染过程2. 分析工具3. 优化方法合理使用const关键词合理使用组件管理着色器编译垃圾 知识回顾 前言 项目迭代开发一定程度后,性能优化是重中之重,其中包括了包体积,UI 渲染、交互等多个方面。 通过 Flutt…

ssm停车场信息管理系统java车辆车位收费jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当做编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 ssm停车场信息管理系统 系统有2权限:管理…

浏览器端代理proxy 解决跨域

一.环境:使用expresshttp-proxy-middleware 直接上代码 // include dependencies const express require( express);//node内置的path模块导入 const path require("path")const { createProxyMiddleware } require( http-proxy-middleware); // 需要代理后端服…

Linux6.12 Docker 数据管理和镜像的创建

文章目录 计算机系统5G云计算第四章 LINUX Docker 数据管理和镜像的创建一、Docker 的数据管理1.数据卷2.数据卷容器 二、容器互联(使用centos镜像)三、Docker 镜像的创建1.基于现有镜像创建1)首先启动一个镜像,在容器里做修改2&a…

通达信指标回测系统的高级玩法:优化参数

#1.本期主要的学习内容: A.找到最优的选股信号,即最佳参数的寻找方法。 B.学会使用通达信内置的(程序交易评测系统)指标回测系统。 #2.程序交易评测系统的打开方法 选择公式——程序交易评测系统 快捷键:CTRLS 键…

了解Unity编辑器之组件篇Event(七)

Event:用于在对象之间进行通信和交互的机制。它可以帮助你实现触发和响应特定动作或状态的逻辑一、Event System:用于处理 UI 事件的系统组件 First Selected 属性:定义了在场景加载或 UI 激活时,哪个 UI 元素将成为首选的选中元素…

动态内存管理学习分享

动态内存管理学习分享 1. 为什么存在动态内存分配2. 动态内存函数的介绍2.1 [malloc](https://legacy.cplusplus.com/reference/cstdlib/malloc/?kwmalloc)和[free](https://legacy.cplusplus.com/reference/cstdlib/free/?kwfree)2.1.1 实例 2.2 [calloc](https://legacy.cp…

TikTok标签观看量破347亿次!芭比妆容蕴藏巨大商机!

据外媒报道,随着真人版电影《芭比》的上映,英国在线市场上与芭比美容产品的搜索量急剧上升。芭比娃娃成为许多人共有的童年记忆,也成为了独树一帜的文化标志。 TikTok标签观看量破347亿次!芭比妆容蕴藏巨大商机! 英国…

麒麟信安携手兆芯、信创桥发布信创联合解决方案,合力推动行业信创加速落地

近年来,加快构建自主创新基础软硬件生态已成为保障我国信息安全的重要一环,优先选择基于自主安全技术路线的国产芯片、操作系统等基础软硬件及关键业务应用软件已成为行业共识。但由于当前wintel体系下的部分复杂应用暂时难以迁移至自主平台,…

Java BIO、NIO、AIO

操作系统中的 I/O 以上是 Java 对操作系统的各种 IO 模型的封装,【文件的输入、输出】在文件处理时,其实依赖操作系统层面的 IO 操作实现的。【把磁盘的数据读到内存种】操作系统中的 IO 有 5 种: 阻塞、 非阻塞、【轮询】 异步、 IO复…

Linux-Shell

1.什么是Bash shell(壳) Bash Shell是一个命令解释器,它在操作系统的最外层,负责用户程序与内核进行交互操作的一种接口,将用户输入的命令翻译给操作系统,并将处理后的结果输出至屏幕。 通过xshell连接,就是打开了一…

精益生产管理工具有哪些?3大必备的精益管理软件!

​企业往往需要管理成千上万的数据,并保证整个管理过程的效率和质量,因此企业往往需要用到一些高效的管理软件,以应对管理过程中的各种问题。今天针对这个问题,与大家分享3大必备的精益管理软件,相信你在工作中一定能用…

为什么新版内核将进程pid管理从bitmap替换成了radix-tree?

第一次写进程创建的时候我使用的内核版本还是 3.10 的版本。在这个版本里已分配的进程 pid 号是用 bitmap 来存储的。但在 5.4 和 6.1 版本里,发现进程 pid 号管理实现已经从 bitmap 替换成了基数树(radix-tree)。后来翻了下版本更新历史&…

springboot项目新增子module

1. 拉取项目 2. file-new-module 3. 选择版本 4. 1-2-3-4 5. 注释请求统一前缀 (SwaggerConfig.java)