【ML算法基础】卡尔曼滤波Kalman Filter的理解和实现

概率密度函数f(x,y),分布函数F(x,y);联合概率密度函数;

 边缘分布;边缘密度函数;条件密度函数;

 

 

两个阶段三个数值:

预测值 >>>>> 测量值 >>>>> 最优估计值;循环;

 

运动模型;

随机高斯分布;

协方差矩阵;对称;

预测矩阵;

cov(AX,BY)=Acov(X,Y)B'

预测值的更新;

协方差矩阵的更新;

外界影响;控制矩阵;控制向量;

外部不确定性;噪音(高斯);协方差;

估计值:

协方差:表示不确定性;

In other words, the new best estimate is a prediction made from previous best estimate, plus a correction for known external influences.

And the new uncertainty is predicted from the old uncertainty, with some additional uncertainty from the environment.

测量值:

通过测量值来修正估计值;

联合高斯分布:联合概率密度函数;

卡尔曼增益;

测量转换矩阵Hk;

状态转换矩阵Fk;

 

 

理解完原理之后,重点是如何构建模型,如何设置变量数值,包括xk,Fk,Pk,Qk,Rk,以及Bk,Uk;Fk(状态转换矩阵)和Hk(测量转换矩阵)可以通过运动模型的关系得到;Pk(协方差矩阵),Qk(系统/过程噪声),Rk(测量噪声)根据经验得到;Bk,Uk一般没有,除非模型中包含控制量;状态量和测试量;

比如deepsort中kalman滤波部分,跟踪场景定义在八维状态空间(u, v, γ, h,˙x,˙y,˙γ,˙h)上,其中,(u, v)是检测框中心点坐标、γ是长宽比、h为检测框高度,以及它们在图像坐标中的各自速度。然后使用匀速运动模型和线性观测模型卡尔曼滤波预测更新,其观测变量为 (u, v, γ, h)。

FilterPy 是python提供的贝叶斯滤波器,主要是Kalman滤波器。需要之前安装Numpy和SCipy。显示的时候也会用到matplotlib。

KF可以对任何线性系统建模。 对于非线性系统,我们使用扩展卡尔曼滤波器EKF,其通过简单地线性化关于它们的平均值的预测和测量来工作。

 

 

参考

1. How a Kalman filter works, in pictures

2. Computer Vision for Tracking

3. github_ikalman;

4. Kalman滤波通俗理解+实际应用;

5. X,Y是随机变量,A,B是常数矩阵,如何证明cov(AX,BY)=Acov(X,Y)B'?

 

posted on 2022-09-16 16:04  鹅要长大  阅读(275)  评论(0编辑  收藏  举报

导航