多目标跟踪算法

news2024/11/24 18:27:04

文章目录

  • 一、传统方法
    • 1. 基于卡尔曼滤波器的方法
      • 1.1 Kalman Filter(卡尔曼滤波器)
    • 2. 基于数据关联的方法
      • 2.1 匈牙利算法
  • 二、深度学习方法
    • 1. 基于检测的多目标跟踪
      • 1.1 SORT算法
      • 1.2 DeepSort
      • 1.3 BoT-SORT
    • 2. 基于特征关联和增强的方法
      • 2.1 ByteTrack
    • 3. 基于Transformer的方法
      • 3.1 TransTrack
      • 3.2 DETR(DEtection TRansformer)
  • 三、多目标跟踪的评估指标
    • 1. 基础指标
    • 2. 综合指标
    • 3. 其他指标

多目标跟踪(Multi-Object Tracking, MOT)是计算机视觉领域的一个重要任务,旨在同时跟踪视频序列中的多个目标。多目标跟踪算法经历了从传统方法到深度学习方法的转变。

一、传统方法

1. 基于卡尔曼滤波器的方法

1.1 Kalman Filter(卡尔曼滤波器)

当在连续的帧中检测到目标后,需要对这些目标进行跟踪。卡尔曼滤波器在此起到关键作用,它通过预测和更新步骤,根据前一帧的状态预测下一帧的状态,并利用当前帧的测量值来更新预测。卡尔曼滤波器可以用于估计目标的运动轨迹。这可以提高跟踪的准确性,尤其是在目标运动快或目标被遮挡的情况下。

2. 基于数据关联的方法

2.1 匈牙利算法

在多目标跟踪(Multi-object tracking,MOT)中,色利算法主要被用于数据关联。即在连续的帧之间确定每个目标的ID。

二、深度学习方法

1. 基于检测的多目标跟踪

1.1 SORT算法

·标题:简单的在线和实时跟踪(SIMPLE ONLINE AND REALTIME TRACKING )
·目的:开发一种实时多物体跟踪方法,适用于在线应用。
·方法:通过组合卡尔曼滤波器和匈牙利算法等熟悉技术,实现了一个实时跟踪系统。
·重点:检测质量被确定为影响跟踪性能的关键因素。通过改变CNN检测器,可以提高跟踪性能。
·结论:该算法的更新速度为260Hz,比其他最先进的跟踪器快20倍以上,同时实现了与最先进的在线跟踪器相当的准确性。

在这里插入图片描述

算法流程图


1.2 DeepSort

整合了外观信息以提高SORT的性能。由于这一扩展,能够在更长的遮挡期间跟踪物体,有效地减少了身份切换的次数。
·秉持原始SORT框架的精神,将大部分计算复杂性置于离线预训练阶段,在该阶段在大规模的行人RelD数据集上学习了一个深度关联度量(多维向量)。
在线应用过程中,使用视觉外观空间中的最近邻查询来建立测量与跟踪的关联。实验评估表明,减少了ID切换的次数45%。

在这里插入图片描述

算法流程图


1.3 BoT-SORT

结合了运动和外观信息、相机运动补偿和更准确的卡尔曼滤波状态向量。
论文提出的方法的三个改进点是:
1.Kalman滤波器:
使用离散Kalman滤波器来建模图像平面中物体的运动,采用常速度模型,使用更准确的状态向量。
2.相机运动补偿:
通过相机运动补偿来纠正相机运动对目标跟踪的影响,提高跟踪的准确性。
3.loU和RelD的余弦距离融合:
提出了一种新的简单但有效的方法,用于loU和RelD的余弦距离融合,以更稳健地关联检测和轨迹。
通过将这些改进集成到ByteTrack中,提出了两个新的最先进的跟踪器,BoT-SORT和BoT-SORT-RelD。

2. 基于特征关联和增强的方法

2.1 ByteTrack

是一种基于Tracking-by-Detection范式的多目标跟踪算法。通过改进目标关联方法(如咬字关联)和卡尔曼滤波器,提高跟踪的精度和实时性.
ByteTrack解决了多目标跟踪中的一个重要问题,即低分检测框的处理。·传统的跟踪方法通常只关联高分检测框,而低分检测框通常被忽略,这会导致一些真实的目标被漏检或者跟踪轨迹被碎片化。
E ByteTrack通过关联几乎每个检测框,包括低分检测框,利用它们与轨迹片段的相似性来恢复真实目标并过滤掉背景检测,从而提高了检测器的性能。

3. 基于Transformer的方法

3.1 TransTrack

使用Transformer模型提取目标的时空特征,通过自注意力机制捕获长程依赖关系,提高跟踪性能。

3.2 DETR(DEtection TRansformer)

结合Transformer和匈牙利算法,实现端到端的目标检测和跟踪。

三、多目标跟踪的评估指标

多目标跟踪的评估指标从多个方面评估跟踪算法的性能,包括检测准确性、身份保持稳定性、跟踪连续性和位置误差等。

1. 基础指标

1.1 真正例(True Positive, TP)
定义:被模型预测为正的正样本,即被检测出来的目标。
作用:衡量模型检测到的目标数量。
1.2 假正例(False Positive, FP)
定义:被模型预测为正的负样本,即误报。
作用:衡量模型错误检测到的目标数量。
1.3 假负例(False Negative, FN)
定义:被模型预测为负的正样本,即漏报。
作用:衡量模型未检测到的目标数量。
1.4 真负例(True Negative, TN)
定义:被模型预测为负的负样本。
作用:在目标检测中,TN通常不作为主要评估指标,因为背景区域的负样本数量非常大

2. 综合指标

多目标跟踪精度(Multiple Object Tracking Accuracy, MOTA)
作用:综合评估漏报、误报和ID切换的错误率。
特点:MOTA的最大值为1,最小值可以为负无穷,因为它考虑了ID切换(ID Switches)的惩罚
2.1 身份F1分数(Identification F1 Score, IDF1)
作用:综合评估身份匹配的精度和召回率。
2.2 身份切换次数(ID Switches, IDSW)
定义:前一帧和后一帧中对于相同GT轨迹的预测轨迹ID发生切换的次数。
作用:衡量身份保持的稳定性。
2.3 高阶跟踪精度(Higher Order Tracking Accuracy, HOTA)
作用:综合评估检测、身份匹配和跟踪位置的准确性。

3. 其他指标

3.1 大多数跟踪轨迹(Mostly Tracked Trajectories, MT)
定义:成功跟踪的帧数占总帧数的80%以上的GT轨迹数量。
作用:衡量长时间跟踪的成功率。
3.2 FPS:Frames Per Second,每秒处理的帧数。

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

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

相关文章

网络(TCP)

目录 TCP socket API 详解 bind(): 我们的程序中对myaddr参数是这样初始化的: listen(): accept(): 理解accecpt的返回值: 饭店拉客例子 connect tcp服务器和udp类似的部分代码 把套接字设置为监听状态(listen) 测试 查看端口号和IP地址&…

阿里云 DevOps 资源安全扫描实践

随着企业上云进程的加速,云资源的使用量日益增长,云环境中资源的安全性和稳定性成为了企业业务运营的关键要素 面对多样化的云资源和复杂的应用场景,传统的安全管理手段已无法完全满足企业日益严苛的安全需求。为了确保云上资源的安全性&…

WebGL进阶(十一)层次模型

理论基础&#xff1a; 效果&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"vie…

vscode下面python调试报错ImportError: cannot import name ‘Literal‘ from ‘typing‘

1 问题描述 我在vscode下面编写python程序&#xff0c;这个程序是在一个英伟达anoconda环境下的项目。之前能运行能调试&#xff0c;最近发现只能运行ctlf5&#xff0c;但是使用f5进行调试时&#xff0c;报错“File “c:\Users\86137.vscode\extensions\ms-python.debugpy-202…

(免费送源码)计算机毕业设计原创定制:Java+JSP+HTML+JQUERY+AJAX+MySQL springboot计算机类专业考研学习网站管理系统

摘 要 大数据时代下&#xff0c;数据呈爆炸式地增长。为了迎合信息化时代的潮流和信息化安全的要求&#xff0c;利用互联网服务于其他行业&#xff0c;促进生产&#xff0c;已经是成为一种势不可挡的趋势。在大学生在线计算机类专业考研学习网站管理的要求下&#xff0c;开发一…

Android 常用命令和工具解析之GPU相关

目录 1、GPU基本信息 1.1 获取GPU基本信息 1.2 伪造GPU基本信息 2、GPU内存信息 3、经典案例 案例1&#xff1a;GPU伪造信息方案 案例2&#xff1a;GPU内存统计算法 GPU 指的是 Graphics Processing Unit&#xff0c;即图形处理单元。GPU 是一种专门用于处理图形和图像相…

day03(单片机高级)RTOS

目录 RTOS(实时操作系统) 裸机开发模式 轮询方式 前后台&#xff08;中断方式&#xff09; 改进&#xff08;前后台&#xff08;中断&#xff09;&#xff09;定时器 裸机进一步优化 裸机的其他问题 RTOS的概念 什么是RTOS 为什么要使用 RTOS RTOS的应用场景 RTOS的…

cookie反爬----普通服务器,阿里系

目录 一.常见COOKIE反爬 普通&#xff1a; 1. 简介 2. 加密原理 二.实战案例 1. 服务器响应cookie信息 1. 逆向目标 2. 逆向分析 2. 阿里系cookie逆向 1. 逆向目标 2. 逆向分析 实战&#xff1a; 无限debugger原理 1. Function("debugger").call() 2. …

C++中的erase()函数用法总结

在 C 中&#xff0c;erase() 是 std::string 和 std::vector 等容器中的成员函数&#xff0c;用于删除容器中的元素。erase可以删去容器中指定位置的元素&#xff0c;容器的size&#xff08;大小&#xff09;会改变&#xff0c;但是容器的容量不变。 常用用法&#xff1a; 1.…

全面解析:HTML页面的加载全过程(四)--浏览器渲染之样式计算

主线程遍历得到的 DOM 树&#xff0c;依次为树中的每个节点计算出它最终的样式&#xff0c;称之为 Computed Style。 通过前面生成的DOM 树和 CSSOM 树&#xff0c;遍历 DOM 树&#xff0c;为每一个 DOM 节点&#xff0c;计算它的所有 CSS 属性&#xff0c;最后会得到一棵带有…

Linux|内存级文件原理

目录 进程与文件 Linux下的文件系统 文件操作&#xff0c;及文件流 C语言函数 文件流 文件描述符 系统调用操作 系统调用参数 重定向与文件描述符 输出重定向 输入重定向 文件内容属性 Linux下一切皆文件 进程与文件 当我们对文件进行操作时&#xff0c;文件必须…

40分钟学 Go 语言高并发:Context包与并发控制

Context包与并发控制 学习目标 知识点掌握程度应用场景context原理深入理解实现机制并发控制和请求链路追踪超时控制掌握超时设置和处理API请求超时、任务限时控制取消信号传播理解取消机制和传播链优雅退出、资源释放context最佳实践掌握使用规范和技巧工程实践中的常见场景…

【SpringMVC - 1】基本介绍+快速入门+图文解析SpringMVC执行流程

目录 1.Spring MVC的基本介绍 2.大致分析SpringMVC工作流程 3.SpringMVC的快速入门 首先大家先自行配置一个Tomcat 文件的配置 配置 WEB-INF/web.xml 创建web/login.jsp 创建com.ygd.web.UserServlet控制类 创建src下的applicationContext.xml文件 重点的注意事项和说明…

neo4j图数据库community-5.50创建多个数据库————————————————

1.找到neo4J中的conf文件&#xff0c;我的路径是&#xff1a;D:\Program Files\neo4j-community-5.5.0-windows\neo4j-community-5.5.0\conf 这里找自己的安装路径&#xff0c; 2.用管理员模式打开conf文件&#xff0c;右键管理员&#xff0c;记事本或者not 3.选中的一行新建一…

如何最简单、通俗地理解Python的迭代器?

我们知道迭代器&#xff08;iterator&#xff09;可以用for循环去取数&#xff0c;这和列表取数有什么区别呢&#xff1f; 想理解Python迭起器的差异&#xff0c;有个很简单的例子 打个比方&#xff0c;你去玩街头投篮机&#xff0c;可以投5个球&#xff0c;这里有两种方式&a…

JavaEE 【知识改变命运】02 多线程(1)

文章目录 线程是什么&#xff1f;1.1概念1.1.1 线程是什么&#xff1f;1.1.2 为什么要有线程1.1.3 进程和线程的区别1.1.4 思考&#xff1a;执行一个任务&#xff0c;是不是创建的线程或者越多是不是越好&#xff1f;&#xff08;比如吃包子比赛&#xff09;1.1.5 ) Java 的线程…

Linux内核USB2.0驱动框架分析--USB包

一&#xff0c; 包的组成 每个包都由SOP&#xff08;包起始域&#xff09;、SYNC&#xff08;同步域&#xff09;、Packet Content&#xff08;包内容&#xff09;、EOP&#xff08;包结束域&#xff09;四部分组成&#xff0c;其中SOP、SYNC、EOP为所有包共有的域&#xff0c…

云轴科技ZStack亮相2024 IDC中国生态峰会,共塑AI时代IT生态新格局

11月21日&#xff0c;2024 IDC中国生态峰会在北京举办&#xff0c;吸引了超过300位生态伙伴齐聚一堂&#xff0c;聚焦行业内最前沿的热点话题。本届峰会以“创见先机&#xff0c;智领风云”为主题&#xff0c;深入探讨宏观经济趋势、技术革新以及如何融合AI与数据技术&#xff…

C0029.在Clion中解决Debug时,提示Process finished with exit code -1的错误

1.错误提示 Process finished with exit code -12.解决办法 如上在使用Debug进行代码调试时&#xff0c;直接出现如上报错&#xff0c;解决办法就是直接点击运行程序&#xff0c;即可查出报错编号&#xff0c;然后根据报错编号来查找问题&#xff1b; 然后在网上就可以根据该…

07-Making a Bar Chart with D3.js and SVG

课程链接 Curran的课程&#xff0c;通过 D3.js 的 scaleLinear, max, scaleBand, axisLeft, axisBottom&#xff0c;根据 .csv 文件生成一个横向柱状图。 【注】如果想造csv数据&#xff0c;可以使用通义千问&#xff0c;关于LinearScale与BandScale不懂的地方也可以在通义千…