目标跟踪那些事

news2025/1/21 15:45:39

目标跟踪那些事

跟踪与检测的区别

目标跟踪目标检测是计算机视觉中的两个重要概念,但它们的目的和方法是不同的。

  • 目标检测(object Detection):是指在图像或视频帧中识别并定位一个或多个感兴趣的目标对象的过程 。

  • 目标跟踪(object Tracking):是指在视频帧序列中连续地监测和定位一个或多个目标对象的位置的过程。

区别:跟踪与检测的区别

  1. 输入数据不同:目标检测通常处理单一的图像,而目标跟踪处理的是视频序列。

Input:视频序列
Output: The trajectory and a unique ID for each target.

  1. 目标和任务不同:目标检测关注于在单个图像或视频帧中确定和定位对象,而目标跟踪关注于在视频序列中跟踪对象的动态变化。

在这里插入图片描述

目标跟踪应用场景

常见的应用场景包括了:

  • 自动驾驶
  • 车流人流的统计
  • 越界识别与监控

在这里插入图片描述

  1. 实时决策:在许多应用中,如无人驾驶车辆或安全监控,实时的目标跟踪能够提供必要的信息来做出快速决策。

  2. 自动化流程:目标跟踪可以自动化许多任务,如视频分析或医学诊断,从而减少人工干预。

  3. 提高准确性:与人工跟踪相比,自动自标跟踪通常更加准确和一致。

  4. 增强体验:在娱乐和游戏行业,目标跟踪提供了更沉浸式的体验,使用户感觉更真实。

目标跟踪的困难

困难一:Inter-Object Occlusion 物体之间的遮挡。

在这里插入图片描述

困难二:Obstacle Occlusion :障碍物的阻碍(导致跟踪后前后的物体被判断为两个对象)也就是导致id switch现象的发生。

在这里插入图片描述

目标跟踪的步骤

当前主流的目标跟踪:Tracking-by-detection的主要步骤

  1. 通过检测器做目标的定位
  2. 进行特征的提取
  3. 做数据的关联(匈牙利算法)
  4. 轨迹的管理与状态的更新(卡尔曼滤波)

在这里插入图片描述

主流的目标跟踪算法

DeepSORT、ByteTrack和BoT-SORT都是当前较为主流的多目标跟踪算法,各有特点:

  • DeepSORT:基于检测的跟踪框架,使用深度ReID网络提取目标特征,并结合卡尔曼滤波进行运动预测,性能稳定。

在这里插入图片描述

  • ByteTrack:端到端跟踪框架,直接在目标检测的基础上进行跟踪,可以没有独立的特征提取模块。速度快但不如DeepSORT鲁棒。

  • BoT-SORT:在ByteTrack基础上使用相机运动补偿和改进的具有更准确状态向量的卡尔曼滤波器。精度较高但速度较慢。

总体来说:

  • 如果追求速度,可以首选ByteTrack。
  • 如果追求精度,BoT-SORT会更好。
  • 如果资源有限但要稳定跟踪,DeepSORT是不错的选择。

多目标跟踪任务

Multi-object tracking (MoT) is to locate each target at each frame, and draw their trajectories

包括两种常见的方式:

  1. Model-free-tracking (MFT):需要手动的初始化给出第一帧中目标对象的位置,在此基础上进行目标的跟踪。

在这里插入图片描述

  1. Tracking-by-detection (TBD) :不需要初始化只需要一个检测器即可实现。

在这里插入图片描述

  • 首先会做视频帧的分割Frames Separation
  • 送入神经网络的目标检测器(Object Detector Neural Network)进行检测
  • MOT问题可以看作是数据关联问题,其目的是将视频序列中跨帧的检测关联起来。

多目标跟踪数据集

多目标跟踪(Multiple Object Tracking,MOT)数据集主要用于评估和比较不同的多目标跟踪算法。这些数据集包含带有标注的视频序列,其中的每一帧都标注了目标对象的位置(通常是用边界框表示)和ID。

  • MOT challenge:MOT Challenge是一个常见的多目标跟踪数据集和基准测试,包含多个不同的子集(例如,2D MOT 2015、MOT16、MOT17、MOT20等),涵盖了各种不同的环境和场景。每个子集都有自己的训练集和测试集,并且提供了详细的标注信息,包括目标的位置、ID以及一些额外的属性(如是否被遮挡、是否静止等)。MOTChallenge的官方网站还提供了一个在线的评估服务器,用于比较和排名不同的跟踪算法。

在这里插入图片描述

  • UA-DETRAC: UA-DETRAC数据集主要用于汽车跟踪任务。它包含了在复杂的交通场景中捕获的超过140,000帧的高质量视频。这些视频涵盖了各种不同的环境和天气条件,以及不同的交通流量。UA-DETRAC数据集还提供了详细的标注信息,包括汽车的位置、速度、尺度等。

在这里插入图片描述

  • BDD100K
  • KITTI

多目标跟踪评估指标

在这里插入图片描述
对于这些多目标跟踪的评估指标总体上可以分为以下的四类:

  1. Accuracy(准确度)
    • id switches(IDsw)
    • Multiple Object Tracking Accuracy (MOTA)
  2. Precision(精度)
    • Multiple Object Tracking Precision (MOTP)
    • Tracking Distance Error(TDE)
  3. Completeness(完整度)
    • Mostly Tracked (MT),
    • Partly Tracked (PT),
    • Mostly Lost (ML)
    • Fragmentation(FM)
  4. Robustness(鲁棒性)
    • Recover from Short-term occlusion (RS)
    • Recover from Long-term occlusion (RL)

MoTA

多目标跟踪的准确度

M O T A = 1 − ∑ t ( F N t + F P t + I D S W t ) ∑ t G T t \mathrm{MOTA}=1-\frac{\sum_{t}\left(\mathrm{FN}_{t}+\mathrm{FP}_{t}+\mathrm{IDSW}_{t}\right)}{\sum_{t} \mathrm{GT}_{t}} MOTA=1tGTtt(FNt+FPt+IDSWt)

  • t:代表(frame index)视频帧的索引

  • GT:代表(the number of groundtruth objects)GT目标的总数

  • FN:the false negatives 漏报(the number of ground truth objects that were detected by the method

  • FP:the false positives(误报)(the number of objects that were falsely detected by the method but do not exist in the ground-truth.)

  • IDSW :the number of identity switches(之前提到的id的切换次数)

MoTP (Multiple Object Tracking Precisicin)

M O T P = ∑ t , i d t , i ∑ t c t \mathrm{MOTP}=\frac{\sum_{t, i} d_{t, i}}{\sum_{t} c_{t}} MOTP=tctt,idt,i

  • ct:代表的是在第t帧匹配的数目(the number of matches in frame t
  • dt,i:( the bounding box overlap of target i with its assigned ground-truth object in frame t.两个框的重叠面积本质上是IOU

主要是一种定位精度的度量

SORT目标跟踪原理

SIMPLE ONLINE AND REALTIME TRACKING

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

在多目标跟踪中,关联是指将当前帧中的检测与前一帧中的跟踪目标进行匹配。 在本文中,作者提出了一种简单的关联方法,仅使用检测框之间的loU,来完成关联。

在这里插入图片描述

cost matrix between each detected bounding box and all predicted bounding boxes

IoU ⁡ ( D , P ) = [ iou ⁡ ( D 1 , P 1 ) … iou ⁡ ( D 1 , P M ) iou ⁡ ( D 2 , P 1 ) … iou ⁡ ( D 2 , P M ) ⋮ ⋱ ⋮ iou ⁡ ( D N , P 1 ) … iou ⁡ ( D N , P M ) ] \operatorname{IoU}(D, P)=\left[\begin{array}{ccc} \operatorname{iou}\left(D_{1}, P_{1}\right) & \ldots & \operatorname{iou}\left(D_{1}, P_{M}\right) \\ \operatorname{iou}\left(D_{2}, P_{1}\right) & \ldots & \operatorname{iou}\left(D_{2}, P_{M}\right) \\ \vdots & \ddots & \vdots \\ \operatorname{iou}\left(D_{N}, P_{1}\right) & \ldots & \operatorname{iou}\left(D_{N}, P_{M}\right) \end{array}\right] IoU(D,P)= iou(D1,P1)iou(D2,P1)iou(DN,P1)iou(D1,PM)iou(D2,PM)iou(DN,PM)

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

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

相关文章

Java面试八股之Spring框架中使用到了哪些设计模式

Spring框架中使用到了哪些设计模式 Spring 框架是一个广泛使用的 Java 应用程序框架,它包含了许多设计模式的实现。以下是一些 Spring 框架中使用的设计模式: 工厂模式 (Factory Pattern) 描述:Spring 使用 BeanFactory 和 ApplicationCon…

深度优先遍历图--DFS

一. 前言 图的遍历定义:从已经给出的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算。 图的遍历实质:找每个顶点的邻接点的过程。 在找顶点…

【C语言】Top K问题【建小堆】

前言 TopK问题:从n个数中,找出最大(或最小)的前k个数。 在我们生活中,经常会遇到TopK问题 比如外卖的必吃榜;成单的前K名;各种数据的最值筛选 问题分析 显然想开出40G的空间是不现实的&#…

【目标检测实验系列】YOLOv5高效涨点:基于NAMAttention规范化注意力模块,调整权重因子关注有效特征(文内附源码)

1. 文章主要内容 本篇博客主要涉及规范化注意力机制,融合到YOLOv5(v6.1版本,去掉了Focus模块)模型中,通过惩罚机制,调整特征权重因子,使模型更加关注有效特征,助力模型涨点。 2. 简要概括 论文地址&#x…

2024-08-04 C# 中 string 实用技巧级新手常见错误

文章目录 1 方法重载1.1 string.Split()1.2 string.Indexof() 2 方法对比2.1 Contains2.2 Equals2.3 字符串差值 3 StringBuilder4 换行符4.1 推荐做法4.2 换行符混合问题 5 文件路径分隔5.1 推荐做法 6 测试代码6.1 "OnlySplit()" vs "SplitWithTrim()"6.…

三十种未授权访问漏洞复现 合集( 二 )

未授权访问漏洞介绍 未授权访问可以理解为需要安全配置或权限认证的地址、授权页面存在缺陷,导致其他用户可以直接访问,从而引发重要权限可被操作、数据库、网站目录等敏感信息泄露。---->目录遍历 目前主要存在未授权访问漏洞的有:NFS服务&a…

杂粮饼:健康与美味的完美融合

在美食的世界里,杂粮饼以其独特的魅力吸引着众多食客。这种看似平凡的美食,却蕴含着丰富的营养和令人陶醉的口感。杂粮饼, 顾名思义,是由多种杂粮混合制作而成。常见的杂粮如玉米、小米、高粱、燕麦等,它们各自带着独特…

Ability框架介绍

Ability Ability是应用所具备能力的抽象,也是应用程序的基本组成部分,主要包括组件生命周期回调、系统环境变化通知、应用跳转、卡片开发等能力。 Ability框架模型两种形态 FA模型Stage模型 Stage模型 Stage模型中的应用组件是由Ability这个基础概念…

LLM动手实践(一): 微调google的bert和vit模型完成文本和图片的分类任务

1. 写在前面 最近大模型比较火热,也正好在公司开始接触这块相关的业务,大模型是未来的趋势,对于研发工程师来讲,是powerful的效能工具,所以想沉淀一些大模型实践相关的笔记来记录自己在使用大模型产品,部署…

基于的X86+FPGA轨道交通模块化计算机,标准3U无风扇,支持国产化定制

支持Intel Socket G2 Mobile Sandy/Ivy Bridge i7/i5/i3处理器,Intel QM67/QM77,2*LAN,2*USB2.0,2*USB3.0,3*COM,3U ◆ 支持Intel Socket G2 Mobile Sandy/Ivy Bridge i7/i5/i3处理器,Intel QM67/QM77 ◆ 1*DDR3 SO-DIMM内存 ◆ 1*VGA,1*HDMI ◆ 2*LAN,2*USB2.0,2*USB3.0,3*…

Opencv学习-图像连接(vconcat函数和hconcat函数)

1. vconcat函数介绍(竖向连接) void cv::vconcat(const Mat * src, size_t nsrc, OutputArray dst ) src:Mat矩阵类型的数组。 nsrc:数组中 Mat 类型数据的个数。 dst:连接后的 Mat类矩阵。 该函数对存放在数组矩阵中…

gpt-4.o mini

https://share.xuzhugpt.cloud/ gpt-4.o mini 目前免费使用 把上面[chatgpt4o-mini-xuzhu]复制到UserToken的文本框中 点击[个人账户] 测试一下哈,看看:

2435. 矩阵中和能被 K 整除的路径(leetcode)

文章目录 写在前面题目来源思路code 写在前面 看题解看了半天都看不懂,看了视频也看了好久,最后还是自己手动模拟才懂的,大佬们写的代码非常好,自己根本想不到该如何用代码实现出来,还是得多刷题,多见一些…

【5G NAS】全球唯一临时标识符GUTI介绍

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。 博客内容主要围绕…

计算机毕业设计选题推荐-体育商城-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

通过Stack Overflow线程栈溢出的问题实例,详解C++程序线程栈溢出的诸多细节

目录 1、问题说明 2、从Visual Studio输出窗口中找到了线索,发生了Stack Overflow线程栈溢出的异常 3、发生Stack Overflow线程栈溢出的原因分析 4、线程占用的栈空间大小说明 5、引发线程栈溢出的常见原因和场景总结 6、在问题函数入口处添加return语句&…

How dose age change how you leanr?(1)年龄如何影响学习能力?(一)

As you get older, learning often feels harder than it used to.Why is that?What changes in the brain as we age that makes acquire new information harder? Is there anything we can do to avoid our minds slowing down? 随着年龄增长,常常会觉得学习…

Vue+live2d实现虚拟人物互动(一次体验叙述)

目录 故事的开头: 最终的实现效果: 实现步骤: 第一步:下载重要文件 第二步:创建vue项目文件,将刚下载文件拷贝到public目录下 第三步:在index.html文件中引入js 第四步:使用&…

SAM 2:Segment Anything in Images and Videos 论文详解

SAM 2:Segment Anything in Images and Videos 文章目录 SAM 2:Segment Anything in Images and Videos摘要1 Introduction具体分析: 2 Related work具体分析: 3 任务:可提示的视觉分割4 模型具体分析: 5 数据5.1 Data engine5 . 2 SA - V数据…

c++ 初始值设定项列表(initializer_list)

引例 我们在写c代码的时候,多多少少会遇到这样写的: 如果是这样写还好说: 第一个是因为编译器强制匹配参数。 其他都是因为在有对应构造函数的情况下支持的隐式类型转换。 而支持的构造函数是这个: 如果有不懂的可以开这一篇&a…