图像多目标跟踪
目标跟踪(Object Tracking)是自动驾驶中常见的任务,根据跟踪目标数量的不同,目标跟踪可分为:
- 单目标跟踪(Single Object Tracking,SOT)
- 多目标跟踪(Multi-Objects Tracking,MOT)
目标跟踪所要做的是根据传感器量测序列确定真实目标的数量以及每个目标的对应状态(位置、速度、航向等)
多目标跟踪常用的两个算法为:卡尔曼滤波和匈牙利匹配
匈牙利匹配算法用于匹配前后帧目标,因为目标检测器的不稳定(垃圾)往往容易丢失目标或目标框的位置偏移,影响匈牙利匹配的结果。
卡尔曼滤波可以基于t时刻的历史状态信息(目标框的位置x,y,w,h)预计t+1时刻的状态信息,出现丢失目标的时候,比匹配丢失前一帧目标位置,目标的运动轨迹要平滑的多,也不会存在匹配不到目标的情况。
也可以根据观测量(例如:位置、检测目标给的信息)和在历史观测信息上基于状态转换矩阵(例:变化速度)估计出来的预测量。观测量和预测量都是服从正态分布,利用高斯计算公式将他们叠加起来,计算一个比较好的结果。
卡尔曼滤波算法
在多目标跟踪中,使用的是最基础的 Kalman filter 算法,卡尔曼的过程如下所示,主要是预测和更新的过程:
预测过程方程:N(均值,方差)
这个过程类似根据小车左侧位置,估计下一时刻的右侧的位置和方差,不过在目标跟踪中是预测的目标框的位置
公式①预测t时刻的x,也就是高斯分布的均值变化
x:track在t−1时刻的均值(t时刻的目标检测框), F:状态转移矩阵(线性变化)
在上图中
cx,cy: 边界框的中心点
w, h: 边界框的宽和高
vx, vy, vw, vh: 变化速度
dt:前后帧之间的差cx'=cx+dtvx
公式②预测t时刻的P,高斯分布的方差(误差)变化,
我们获取的观测值(目标检测框)和预测值(通过状态转移矩阵推测出来的),都会存在一定的误差。
P:track在t−1时刻的协方差,Q:系统噪声矩阵
Q:初始值比较小 F:初始为对角线为1的矩阵
这个方差P(随机举例如下图)就是我们在估计中的不确定矩阵,而这个矩阵需要我们自己进行微调,越大的值代表误差越大,这个方差在迭代更新过程中会逐渐减小。
更新过程
基于 t 时刻的检测结果(测量值)和根据跟踪轨迹预测目标在 t 时刻的状态(预测值),得到一个在 t 时刻更精确的结果(状态),通过高斯公式计算类似于下图中绿色的部分。
在目标跟踪过程中就是将两个框叠加在一起!!!!
更新公式如下所示:
公式③中 z 为 detection 的均值向量,不包含速度变化值,即 z=[x, y, a, h],H 称为转移矩阵如下所示,它将 track 的均值向量 x’ 映射到检测空间,该公式计算 detection 和 track 的均值误差 y
公式 ④中,R 为检测器的 噪声矩阵(随机举例如下图),它是一个 4x4 的对角矩阵,对角线上的值分别为中心点两个坐标以及宽高的噪声,以任意值初始化,一般设置宽高的噪声大于中心点的噪声。该公式先将协方差矩阵 P’ 映射到检测空间,然后再加上噪声矩阵 R。
(上面的矩阵的值代表,对于cx和cy的误差没有那么大,而长和宽的预测的误差比较大)
公式 ⑤中,计算 卡尔曼增益 K, 卡尔曼增益用于估计误差的重要程度;
公式 ⑥ 和公式 ⑦中,计算更新后的均值向量 x 和协方差矩阵 P
匈牙利匹配:
在目标跟踪中,不同时刻的物体位置会发生变化,但我们需要让它保持同一个目标。
建立一个二分图,有当前帧t=1 和前一帧t=0 的节点,通过计算优化两帧各个目标的互相的距,构建的混合线性整型,使用匈牙利或者求解器进行计算,得到两帧目标之间的匹配关系。
公式如下:
优化代价f可以是两个框体的欧式距离矩阵
可以是两物体之间iou距离矩阵(在iou距离时,不是求最小而是求最大,可以使用1-iou转换为最最小值)
也可以是两个框体中图像特征中的相似度距离矩阵
有的算法中使用iou和特征相似度结合构建新的约束矩阵。
这篇文章挺好可以看一下:
图说卡尔曼滤波,一份通俗易懂的教程 - 知乎 (zhihu.com)
相关文章:

图像多目标跟踪
目标跟踪(Object Tracking)是自动驾驶中常见的任务,根据跟踪目标数量的不同,目标跟踪可分为: 单目标跟踪(Single Object Tracking,SOT)多目标跟踪(Multi-Objects Tracki…...

42 | 航空公司客户价值分析
民航的竞争除了三大航空公司之间的竞争之外,还将加入新崛起的各类小型航空公司、民营航空公司,甚至国外航空巨头。航空产品生产过剩,产品同质化特征愈加明显,于是航空公司从价格、服务间的竞争逐渐转向对客户的竞争。 目前航空公司已积累了大量的会员档案信息和其乘坐航班…...

第三章 图论 No.11二分图,匈牙利算法与点覆盖
文章目录 二分染色:257. 关押罪犯增广路径372. 棋盘覆盖 最小点覆盖376. 机器任务 最大独立集378. 骑士放置 最小路径点覆盖 二分染色:257. 关押罪犯 257. 关押罪犯 - AcWing题库 最大最小问题,一眼二分 答案的范围在 [ 1 , 1 e 9 ] [1, 1…...

Die2Die(D2D)和chip2chip(C2C)之间的高速互联接口
随着chiplet的兴起,Die2Die的高速互联越来越重要,相比于传统的C2C(chip2chip)的互联,D2D的片间距离很近(10mm量级),且这些小的chip(裸片)最终形成一个封装【多芯片模块(MCM)】。所以D2D的互联信道短&#x…...
JAVA设计模式汇总
文章目录 一、设计模式分为三大类二、设计模式的六大原则三、汇总 一、设计模式分为三大类 创建型模式共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式…...
【实战讲解】数据血缘落地实施
在复杂的社会分工协作体系中,我们需要明确个人定位,才能更好的发挥价值,数据也是一样,于是,数据血缘应运而生。 今天这篇文章会全方位的讲解数据血缘,并且给出具体的落地实施方案。 一、数据血缘是什么…...

Java课题笔记~ ServletContext
单个Servlet的配置对象 web.xml <servlet><servlet-name>FirstServlet</servlet-name><servlet-class>com.ambow.test.FirstServlet</servlet-class><init-param><param-name>charset</param-name><param-value>utf-8&…...

设备取电芯片LDR6328Q
2021年5月,USB-IF 协会发布了全新的USB PD3.1规范,该规范将快充功率上限从100 W提升至240W(支持Extended Power Range,简称EPR)。充电功率的提升也让USB PD的应用从手机、笔记本电脑,扩展到便携式设备、物联…...
Redis 事务、持久化、复制原理分析
Redis 事务、持久化、复制原理分析 一、Redis 简介1.1 Redis1.2 Redis 事务 二、Redis 事务机制2.1 事务基本概念2.2 Redis 事务操作2.2.1 开启事务2.2.2 批量执行命令2.2.3 事务提交与回滚 三、Redis 持久化机制3.1 持久化机制基本概念3.2 Redis 持久化方案3.2.1 RDB 持久化3.…...

初识鸿蒙跨平台开发框架ArkUI-X
HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景&#…...

uniapp开发小程序-分包(微信错误码:800051)
在使用uniapp开发小程序时,上传的时候因为文件过大,显示上传失败。 以下是开发过程中遇到的问题及解决方法: 1. 问题一:因为文件过大,显示上传失败 ①尝试过把本地使用的图片压缩到最小; ②把图片转换为网…...

n-皇后问题
希望这篇题解对你有用,麻烦动动手指点个赞或关注,感谢您的关注 不清楚蓝桥杯考什么的点点下方👇 考点秘籍 想背纯享模版的伙伴们点点下方👇 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不能错过的模板大全…...
JS如何向数组中添加数组
常见的办法有 1、push()方法 var arr [a, b, c,d]; arr.push(e); console.log(arr); // [a, b, c, d,e] 2、concat()方法 var arr1 [a, b, c]; var arr2 [d, e, f]; var arr3 arr1.concat(arr2); console.log(arr3); // [a, b, c, d, e, f] 3、可以使用ES6中的spread操作符…...

串口通信收发项目级一
void 定时器中断函数入口(void) { if(判断是否为定时器中断) { static uint16_t num定义静态变量; static uint8_t index定义静态变量; unsigned char buff_busy定义局部变量; if(串口中断接收数据数量>静态变量) { 静态变量串口中断接收数据数量; } else if(静态变量串口中…...

设计模式之七:适配器模式与外观模式
面向对象适配器将一个接口转换成另一个接口,以符合客户的期望。 // 用火鸡来冒充一下鸭子class Duck { public:virtual void quack() 0;virtual void fly() 0; };class Turkey { public:virtual void gobble() 0;virtual void fly() 0; };class TurkeyAdapter :…...
FFmpeg接收UDP码流
一、FFmpeg参数初始化: //在打开码流前指定各种参数比如:探测时间/超时时间/最大延时等//设置缓存大小,1080p可将值调大av_dict_set(&options, "buffer_size", "8192000", 0);//以tcp方式打开,如果以udp方式打开将tcp替换为udpav_dict_set(…...

【Pytroch】基于支持向量机算法的数据分类预测(Excel可直接替换数据)
【Pytroch】基于支持向量机算法的数据分类预测(Excel可直接替换数据) 1.模型原理2.数学公式3.文件结构4.Excel数据5.下载地址6.完整代码7.运行结果 1.模型原理 支持向量机(Support Vector Machine,SVM)是一种强大的监…...
【Git】git初始化项目时 | git默认创建main分之 | 如何将git默认分支从main改为master
git 更改 branch 在 Git 中,如果你在第一次提交后想要将默认分支名从 main 修改为 master,你可以按照以下步骤进行操作: 创建 master 分支: 首先,你需要在当前的 main 分支基础上创建一个新的 master 分支。使用以下命…...
Vue3中配置environment
environment顾名思义就是环境,对于项目来说,无非就是: 开发环境:development生产环境:production 某些逻辑,配置等在两个不同的环境中要呈现出不同的状态,所以environment是一个必要的事情。 …...
前端基础积累_新技术_Vue_React_H5_奇怪的BUG_面试_招聘
前端之路 序 前几天在博客园收到了一封来自出版社的消息,说看到原来很久之前写的 < VueJS 源码分析的文章 > 希望能够联系他们出版社去写书。这样的事情虽然在博客园是会经常发生的,但是这也让我意识到了,多多写高质量的文章能够给 co…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...