SORT目标追踪
文章目录
- SORT目标追踪
- 前言
- 一、卡尔曼滤波器
- 1.迭代算法
- 2.数据融合
- 3.协方差矩阵
- 4.状态空间表达
- 5.卡尔曼滤波详细推导
前言
SORT(Simple Online and Realtime Tracking)算法是一种简单的在线实时多目标跟踪算法,主要利用卡尔曼滤波来传播目标物体到未来帧中,再通过IOU作为度量指标来建立关系
提示:以下是本篇文章正文内容,下面案例可供参考
一、卡尔曼滤波器
Kalman Filter的Filter并不能很好的体现出它的特性。
卡尔曼滤波器一言以蔽之,就是Optimal Recursive Data Processing Algorithm,最优化递归数字处理算法。
它更像一种观测器,而不是一种滤波器。
1.迭代算法
真实的世界中充满了不确定性,当描述一个系统时,不确定性主要来自三个方面:
① 不存在完美的数学模型
② 系统的扰动不可控,也很难建模 (系统噪声)
③测量传感器存在误差 (测量噪声)
假设有一把尺子,取测量一个硬币的直径,第一次测得50.1mm,第二次测得50.4mm,第三次测得49.8mm,求真实数据值,最直观的就是求平均值
估计一个真实数据,大致的方法就是取平均值
:第k次的估计值。Hat表示先验估计
:第K次的测量值
分析这个公式,随着K增大, 1/K减小,Xk趋向于Xk-1。也就是随着K增加,测量结果不再重要了。
当k小时,1/k 大,Zk的作用较大,也就是测量值的作用比较大。
也就是当前的估计值 = 上一时刻的估计值 + 系数 * (当前时刻测量值 - 上一次的估计值)
此时的系数即为Kalman Gain,卡尔曼增益/因数
这样迭代求估计值的过程为:
①计算Kalman Gain
②计算先验估计值
③更新估计误差
用一把精度为(3mm, 0.25)的尺子去测量一个5cm卡片的长度,测得的长度分别为47mm,52mm,53mm,51mm,48mm,49mm,49mm,48mm,49mm,51mm,50mm,求卡片的真实长度
①起始估计值设为40mm,估计误差为8mm
②依次计算Kalman增益、先验估计值、更新估计误差
也可以从上面的计算过程可以看出,卡尔曼滤波其实就是选择了最佳加权系数的加权平均
2.数据融合
有两把把尺子
通过这两把尺子的测量值,估算真实值
上文介绍的迭代算法,可以得到
根据最小方差无偏估计,我们要求出一个k使得方差最小
令 ,解得:
3.协方差矩阵
协方差矩阵就是将方差与协方差在一个矩阵中表现出来,表示变量间的联动关系
协方差表示两个变量的变化方向,大于0表示正相关
一般协方差矩阵表示为
接下来介绍一个求解协方差矩阵的方法,方便编程计算协方差矩阵
引入过渡矩阵a
4.状态空间表达
在这里引入弹簧阻尼系统来介绍状态空间表达式
引入状态变量:
把F看作u作为系统的一个输入:
离散化之后,可以总结为:
过程噪音
那么便引出了核心问题:如何在一个不那么准确的估计值和一个不那么准确的测量值之间,估算出一个较为准确的,这也就是卡尔曼滤波要解决的事情
5.卡尔曼滤波详细推导
状态空间方程:
但是和是无法建模的,不可知的。因此只能列出下面两个公式
表示的估计值,表示的先验估计值,只通过状态空间方程得到,没有经过任何处理
这样,我们得到一个算出来的结果和一个测出来的结果,这两个数值都是不准确的,那么怎么得到一个较为精确的数值呢。自然想到我们上面介绍的数据融合。
教科书中一般写成如下公式:
这样写应该是为了防止矩阵不可逆吧。
那么我们的目标就是寻找,使得更加接近于(真实值)
是过程噪声,我们假设真实世界的噪声是符合正态分布的,满足正态分布,的协方差矩阵:
的期望最小,等价于方差最小,等价于P的迹最小