当前位置: 首页 > news >正文

目标跟踪那些事

目标跟踪那些事

跟踪与检测的区别

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

  • 目标检测(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)

相关文章:

目标跟踪那些事

目标跟踪那些事 跟踪与检测的区别 目标跟踪和目标检测是计算机视觉中的两个重要概念,但它们的目的和方法是不同的。 目标检测(object Detection):是指在图像或视频帧中识别并定位一个或多个感兴趣的目标对象的过程 。 目标跟踪(object Tracking)&…...

【Git】 如何将一个分支的某个提交合并到另一个分支

【Git】 如何将一个分支的某个提交合并到另一个分支 在使用 Git 进行版本控制时,常常会遇到这样的需求:将某个分支的特定提交合并到另一个分支中。这种情况下,我们可以使用 cherry-pick 命令来实现。本文将详细介绍 cherry-pick 命令的使用方…...

【嵌入式之RTOS】什么是消息队列

目录 一、FreeRTOS消息队列的基本概念 二、FreeRTOS消息队列的工作原理 三、FreeRTOS消息队列的特点 四、FreeRTOS消息队列的应用 五、示例 消息队列是一种用于任务间通信的机制,它允许一个任务(生产者)向消息队列发送消息,而…...

9-springCloud集成nacos config

本文介绍spring cloud集成nacos config的过程。 0、环境 jdk 1.8maven 3.8.1Idea 2021.1nacos 2.0.3 1、项目结构 根项目nacos-config-sample下有两个module,这两个module分别是两个springboot项目,都从nacos中获取连接mysql的连接参数。我们开工。 …...

市场主流 AI 视频生成技术的迭代路径

AI视频生成技术的迭代路径经历了从GANVAE、Transformer、Diffusion Model到Sora采用的DiT架构(TransformerDiffusion)等多个阶段,每个阶段的技术升级都在视频处理质量上带来了飞跃性的提升。这些技术进步不仅推动了AI视频生成领域的快速发展&…...

移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——1.c++入门(2)

1. 函数重载 C⽀持在同⼀作⽤域中出现同名函数&#xff0c;但是要求这些同名函数的形参不同&#xff0c;可以是参数个数不同或者 类型不同。这样C函数调⽤就表现出了多态⾏为&#xff0c;使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同 名函数的。 #include<iostream> u…...

【Python系列】深入理解 Python 中的 `nonlocal` 关键字

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Flask目录结构路由重定向简单实例讲解——轻量级的 Python Web 框架

假设一个flask目录结构如下&#xff1a; my_flask_app/ │ ├── app.py ├── routes/ │ ├── __init__.py │ ├── ZhejiangProvince/ │ │ ├── __init__.py │ │ ├── la.py │ │ └── el.py │ ├── GuangdongProvince/ │ │ ├…...

破解PyCharm插件更新难题:让IDE焕发新生

破解PyCharm插件更新难题&#xff1a;让IDE焕发新生 PyCharm作为业界领先的集成开发环境&#xff08;IDE&#xff09;&#xff0c;其丰富的插件生态是其强大功能的重要来源。然而&#xff0c;插件无法更新的问题可能会困扰许多用户&#xff0c;影响开发体验。本文将详细介绍如…...

cmake常用命令学习

1.include https://blog.csdn.net/qq_38410730/article/details/102677143 CmakeLists.txt才是cmake的正统文件&#xff0c;而.cmake文件是一个模块文件&#xff0c;可以被include到CMakeLists.txt中。 include指令一般用于语句的复用&#xff0c;也就是说&#xff0c;如果有…...

K8S可视化管理平台KubeSphere

什么是 KubeSphere &#xff1f; KubeSphere 是一款开源项目&#xff0c;在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器管理平台&#xff0c;提供简单易用的操作界面以及向导式操作方式&#xff0c;在降低用户使用容器调度平台学习成本的同时&#xff…...

Bugku-CTF-聪明的php

pass a parameter and maybe the flag files filename is random :> 传递一个参数&#xff0c;可能标记文件的文件名是随机的: 于是传一下参&#xff0c;在原网页后面加上/?a1,发现网页出现了变化 3.传入参数&#xff0c;一般情况下是文件包含&#xff0c;或者命令执行&…...

【MySQL进阶】MySQL主从复制

目录 MySQL主从复制 概念 主从形式 一主多从 多主一从 双主复制 主从级联复制 主从复制原理 三个线程 两个日志文件 主从复制的主要工作模式 异步复制 半同步复制 全同步复制 MySQL主从复制 概念 MySQL主从复制是一种数据分布机制&#xff0c;允许从一个数据库服…...

本地部署文生图模型 Flux

本地部署文生图模型 Flux 0. 引言1. 本地部署1-1. 创建虚拟环境1-2. 安装依赖模块1-3. 创建 Web UI1-4. 启动 Web UI1-5. 访问 Web UI 0. 引言 2024年8月1日&#xff0c;blackforestlabs.ai发布了 FLUX.1 模型套件。 FLUX.1 文本到图像模型套件&#xff0c;该套件定义了文本到…...

谷粒商城实战笔记-127-全文检索-ElasticSearch-整合-测试复杂检索

文章目录 一&#xff0c;使用Elasticsearch的Java RESTHighLevel Client完成复杂的查询请求1. 创建检索请求 (SearchRequest)2. 构造检索条件 (SearchSourceBuilder)3. 执行检索 (SearchResponse)4. 处理解析结果5. 获取聚合信息 二&#xff0c;AI时代的效率提升 一&#xff0c…...

解锁PyCharm:破解依赖库导入之谜

解锁PyCharm&#xff1a;破解依赖库导入之谜 PyCharm作为Python开发者的强大IDE&#xff0c;提供了丰富的功能来简化开发流程。然而&#xff0c;在使用过程中&#xff0c;开发者可能会遇到导入依赖库时出现的错误。本文将深入探讨PyCharm中导入依赖库报错的问题&#xff0c;并…...

JSON-Viewer插件:json格式查看器

npm install vue-json-viewer 2&#xff0c;main.js 引入 import JsonViewer from vue-json-viewer Vue.use(JsonViewer) 3&#xff0c;组件里写入这个组件 <json-viewer:value"textSecond":expand-depth"5"copyableboxedsort></json-viewer…...

HDFS块信息异常,spark无法读取数据

背景&#xff1a;flume数据落盘到hdfs上时&#xff0c;正在写入的文件一般是以.log.tmp结尾的文件&#xff0c;当flume将文件关闭以后将变为&#xff1a;.log 结尾的文件。由于我们使用阿里云的服务器&#xff0c;经常会有个别节点挂掉(进程在&#xff0c;无法通信&#xff0c;…...

TCP协议概述

TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。它由IETF的RFC 793定义&#xff0c;并在各种通信系统中广泛应用&#xff0c;为不同但互连的计算机通信网络的主计算机中的成对进程之…...

SpringSecurity-3(认证和授权+SpringSecurity入门案例+自定义认证+数据库认证)

SpringSecurity使用数据库数据完成认证 5 SpringSecurity使用数据库数据完成认证5.1 认证流程分析5.1.1 UsernamePasswordAuthenticationFilter5.1.2 AuthenticationManager5.1.3 AbstractUserDetailsAuthenticationProvider5.1.4 AbstractUserDetailsAuthenticationProvider中…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...