目标跟踪那些事
目标跟踪那些事
跟踪与检测的区别
目标跟踪和目标检测是计算机视觉中的两个重要概念,但它们的目的和方法是不同的。
-
目标检测(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中…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
TCP/IP 网络编程 | 服务端 客户端的封装
设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…...
