【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;
5. X,Y是随机变量,A,B是常数矩阵,如何证明cov(AX,BY)=Acov(X,Y)B'?
完
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/