目标跟踪那些事
目标跟踪那些事
跟踪与检测的区别
目标跟踪和目标检测是计算机视觉中的两个重要概念,但它们的目的和方法是不同的。
-
目标检测(object Detection):是指在图像或视频帧中识别并定位一个或多个感兴趣的目标对象的过程 。
-
目标跟踪(object Tracking):是指在视频帧序列中连续地监测和定位一个或多个目标对象的位置的过程。
区别:跟踪与检测的区别
- 输入数据不同:目标检测通常处理单一的图像,而目标跟踪处理的是视频序列。
Input:视频序列
Output: The trajectory and a unique ID for each target.
- 目标和任务不同:目标检测关注于在单个图像或视频帧中确定和定位对象,而目标跟踪关注于在视频序列中跟踪对象的动态变化。

目标跟踪应用场景
常见的应用场景包括了:
- 自动驾驶
- 车流人流的统计
- 越界识别与监控

-
实时决策:在许多应用中,如无人驾驶车辆或安全监控,实时的目标跟踪能够提供必要的信息来做出快速决策。
-
自动化流程:目标跟踪可以自动化许多任务,如视频分析或医学诊断,从而减少人工干预。
-
提高准确性:与人工跟踪相比,自动自标跟踪通常更加准确和一致。
-
增强体验:在娱乐和游戏行业,目标跟踪提供了更沉浸式的体验,使用户感觉更真实。
目标跟踪的困难
困难一:Inter-Object Occlusion 物体之间的遮挡。

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

目标跟踪的步骤
当前主流的目标跟踪:Tracking-by-detection的主要步骤
- 通过检测器做目标的定位
- 进行特征的提取
- 做数据的关联(匈牙利算法)
- 轨迹的管理与状态的更新(卡尔曼滤波)

主流的目标跟踪算法
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
包括两种常见的方式:
- Model-free-tracking (MFT):需要手动的初始化给出第一帧中目标对象的位置,在此基础上进行目标的跟踪。

- 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
多目标跟踪评估指标

对于这些多目标跟踪的评估指标总体上可以分为以下的四类:
- Accuracy(准确度)
- id switches(IDsw)
- Multiple Object Tracking Accuracy (MOTA)
- Precision(精度)
- Multiple Object Tracking Precision (MOTP)
- Tracking Distance Error(TDE)
- Completeness(完整度)
- Mostly Tracked (MT),
- Partly Tracked (PT),
- Mostly Lost (ML)
- Fragmentation(FM)
- 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=1−∑tGTt∑t(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=∑tct∑t,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⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者 类型不同。这样C函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同 名函数的。 #include<iostream> u…...
【Python系列】深入理解 Python 中的 `nonlocal` 关键字
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
Flask目录结构路由重定向简单实例讲解——轻量级的 Python Web 框架
假设一个flask目录结构如下: my_flask_app/ │ ├── app.py ├── routes/ │ ├── __init__.py │ ├── ZhejiangProvince/ │ │ ├── __init__.py │ │ ├── la.py │ │ └── el.py │ ├── GuangdongProvince/ │ │ ├…...
破解PyCharm插件更新难题:让IDE焕发新生
破解PyCharm插件更新难题:让IDE焕发新生 PyCharm作为业界领先的集成开发环境(IDE),其丰富的插件生态是其强大功能的重要来源。然而,插件无法更新的问题可能会困扰许多用户,影响开发体验。本文将详细介绍如…...
cmake常用命令学习
1.include https://blog.csdn.net/qq_38410730/article/details/102677143 CmakeLists.txt才是cmake的正统文件,而.cmake文件是一个模块文件,可以被include到CMakeLists.txt中。 include指令一般用于语句的复用,也就是说,如果有…...
K8S可视化管理平台KubeSphere
什么是 KubeSphere ? KubeSphere 是一款开源项目,在目前主流容器调度平台 Kubernetes 之上构建的企业级分布式多租户容器管理平台,提供简单易用的操作界面以及向导式操作方式,在降低用户使用容器调度平台学习成本的同时ÿ…...
Bugku-CTF-聪明的php
pass a parameter and maybe the flag files filename is random :> 传递一个参数,可能标记文件的文件名是随机的: 于是传一下参,在原网页后面加上/?a1,发现网页出现了变化 3.传入参数,一般情况下是文件包含,或者命令执行&…...
【MySQL进阶】MySQL主从复制
目录 MySQL主从复制 概念 主从形式 一主多从 多主一从 双主复制 主从级联复制 主从复制原理 三个线程 两个日志文件 主从复制的主要工作模式 异步复制 半同步复制 全同步复制 MySQL主从复制 概念 MySQL主从复制是一种数据分布机制,允许从一个数据库服…...
本地部署文生图模型 Flux
本地部署文生图模型 Flux 0. 引言1. 本地部署1-1. 创建虚拟环境1-2. 安装依赖模块1-3. 创建 Web UI1-4. 启动 Web UI1-5. 访问 Web UI 0. 引言 2024年8月1日,blackforestlabs.ai发布了 FLUX.1 模型套件。 FLUX.1 文本到图像模型套件,该套件定义了文本到…...
谷粒商城实战笔记-127-全文检索-ElasticSearch-整合-测试复杂检索
文章目录 一,使用Elasticsearch的Java RESTHighLevel Client完成复杂的查询请求1. 创建检索请求 (SearchRequest)2. 构造检索条件 (SearchSourceBuilder)3. 执行检索 (SearchResponse)4. 处理解析结果5. 获取聚合信息 二,AI时代的效率提升 一,…...
解锁PyCharm:破解依赖库导入之谜
解锁PyCharm:破解依赖库导入之谜 PyCharm作为Python开发者的强大IDE,提供了丰富的功能来简化开发流程。然而,在使用过程中,开发者可能会遇到导入依赖库时出现的错误。本文将深入探讨PyCharm中导入依赖库报错的问题,并…...
JSON-Viewer插件:json格式查看器
npm install vue-json-viewer 2,main.js 引入 import JsonViewer from vue-json-viewer Vue.use(JsonViewer) 3,组件里写入这个组件 <json-viewer:value"textSecond":expand-depth"5"copyableboxedsort></json-viewer…...
HDFS块信息异常,spark无法读取数据
背景:flume数据落盘到hdfs上时,正在写入的文件一般是以.log.tmp结尾的文件,当flume将文件关闭以后将变为:.log 结尾的文件。由于我们使用阿里云的服务器,经常会有个别节点挂掉(进程在,无法通信,…...
TCP协议概述
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它由IETF的RFC 793定义,并在各种通信系统中广泛应用,为不同但互连的计算机通信网络的主计算机中的成对进程之…...
SpringSecurity-3(认证和授权+SpringSecurity入门案例+自定义认证+数据库认证)
SpringSecurity使用数据库数据完成认证 5 SpringSecurity使用数据库数据完成认证5.1 认证流程分析5.1.1 UsernamePasswordAuthenticationFilter5.1.2 AuthenticationManager5.1.3 AbstractUserDetailsAuthenticationProvider5.1.4 AbstractUserDetailsAuthenticationProvider中…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
阻止除自定义标签之外的所有标签 先输入一些标签测试,说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时(如通过点击或键盘导航&…...
FOPLP vs CoWoS
以下是 FOPLP(Fan-out panel-level packaging 扇出型面板级封装)与 CoWoS(Chip on Wafer on Substrate)两种先进封装技术的详细对比分析,涵盖技术原理、性能、成本、应用场景及市场趋势等维度: 一、技术原…...
