图像多目标跟踪

目标跟踪(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]称为转移矩阵如下所示,它将 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)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu18.04版本安装ROS及出现错误的处理方法

前面的文章是在已安装的ROS基础上做的一些应用,这里我们从零开始安装ROS机器人操作系统。 机器人操作系统(Robot Operating System,ROS)是一个开发机器人软件的框架,里面包含了一系列的工具,库和惯例,目的在于简化在大量不同种类机…

系统架构设计专业技能 · 软件工程(一)【系统架构设计师】

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

修改第三方组件默认样式

深度选择器 修改el-input的样式&#xff1a; <el-input class"input-area"></el-input>查看DOM结构&#xff1a; 原本使用 /deep/ 但是可能不兼容 使用 :deep .input-area {:deep(.el-input__inner){background-color: blue;} }将 input 框背景色改为…

基于STM32微控制器的物联网(IoT)节点设计与实现

基于STM32微控制器的物联网(IoT)节点的设计和实现。我们讨论物联网节点的基本概念和功能,并详细介绍了STM32微控制器的特点和优势。然后,我们将探讨如何使用STM32开发环境和相关的硬件模块来设计和实现一个完整的物联网节点。最后,我们将提供一个示例代码,展示如何在STM3…

JAVA(一)

我的第一个JAVA程序 以下我们通过一个简单的实例来展示Java编程,创建文件HelloWorld.java&#xff08;文件名需与类名一致&#xff09;,代码如下 实例 public class HelloWorld{public static void main(String[] args){System.out.println(Hello World) } } 注:Srting ar…

ARP协议原理与应用

ARP协议原理与应用 一、ARP协议概述1.1、场景描述1.2、ARP协议概述 二、ARP协议工作原理2.1、ARP工作流程2.2、ARP工作原理2.3、ARP缓存表 三、ARP协议分类3.1、免费ARP&#xff08;Gratuitous ARP &#xff09;3.2、代理ARP&#xff08;Proxy ARP &#xff09;3.3、RARP与IARP…

9.2.2Socket(TCP)

一.过程: 1.建立连接(不是握手),虽然内核中的连接有很多,但是在应用程序中,要一个一个处理. 2. 获取任务:使用ServerSocket.accept()方法,作用是把内核中的连接获取到应用程序中,这个过程类似于生产者消费者模型. 3. 使用缓冲的时候,注意全缓冲和行缓冲. 4.注意关闭文件资源…

使用 Postman 批量发送请求的最佳实践

目录 背景 批量发送&#xff1f; 起因 思考 Postman 批量发送接口 创建集合和接口 批量发送接口 资料获取方法 背景 最近写了几个接口&#xff1a; 获取 books 的接口获取 likes 的接口获取 collections 的接口 但是我还是不放心&#xff0c;因为这些接口到底稳不稳…

案例13 Spring MVC参数传递案例

基于Spring MVC实现HttpServletRequest、基本数据类型、Java Bean、数组、List、Map、JSON方式的参数传递。 1. 创建项目 选择Maven快速构建web项目&#xff0c;项目名称为case13-springmvc02。 2. 配置Maven依赖 <?xml version"1.0" encoding"UTF-8&quo…

WPF上位机9——Lambda和Linq

Lambda Linq 操作集合 使用类sql形式查询 Linq To SQL

分类预测 | MATLAB实现SMA-CNN-BiLSTM-Attention多输入分类预测

分类预测 | MATLAB实现SMA-CNN-BiLSTM-Attention多输入分类预测 目录 分类预测 | MATLAB实现SMA-CNN-BiLSTM-Attention多输入分类预测分类效果基本介绍模型描述程序设计参考资料 分类效果 基本介绍 1.MATLAB实现SMA-CNN-BiLSTM-Attention多输入分类预测&#xff0c;CNN-BiLSTM结…

unity新输入系统的简单使用(New InputSystem)

1、在包管理器 unity注册表中下载安装InputSystem 2、给玩家添加组件PlayerInput&#xff0c;点击CreatAction,创建一个InputAct InputAct,这是玩家的输入文件&#xff0c;在里面可以设置玩家输入 3、使用 例如玩家控制角色移动 在InputAct中&#xff0c;默认已经设置好了移…