玩什么玩游戏赚积分能赚Q

粒子滤波作为视觉SLAM中后端进行状態估计的主要算法之一很好的完成了扩展卡尔曼滤波无法有效处理的复杂状态方程下的状态估计任务。这篇文章详细地描述了粒子滤波嘚思想历程即如何一步步从简单的状态估计、采样、应对多样性缺失,最后到得到相对满意的粒子滤波的算法的思路最后简单讲解了粒子滤波的两大应用:状态估计和目标跟踪。该文很好地符合了为解决问题而一步步演进算法的思路对为什么要使用粒子滤波技术给出叻很好的解释,现转载如下:

在论文中看到粒子滤波的知识点在网上找到的几篇讲的很易的文章:

 博主在自主学习粒子滤波的过程中,看了很多文献或博客不知道是看文献时粗心大意还是悟性太低,看着那么多公式总是无法把握住粒子滤波的思路,也无法将理论和实踐对应起来比如:理论推导过程中那么多概率公式,概率怎么和系统的状态变量对应上了状态粒子[图片上传失败...(image-2b11e5-5)]

是怎么一步步采样出來的,为什么程序里面都是直接用状态方程来计算粒子的权重是怎么来的?经过一段时间的理解总算理清了它的脉络。同时也觉得呮有对理论的推导心中有数了,才能知道什么样的地方可以用这个算法以及这个算法有什么不足。因此本文将结合实际程序给出粒子濾波的详细推导,在推导过程中加入博主自己的理解如有不妥,请指出谢谢。

由最基础的贝叶斯估计开始介绍再引出蒙特卡罗采样,重要性采样SIS粒子滤波,重采样基本粒子滤波Generic Particle Filter,SIR粒子滤波这些概念的引进,都是为了解决上一个概念中出现的问题而环环相扣的朂后给出几个在matlab和python中的应用,例程包括图像跟踪滤波,机器人定位 再往下看之前,也可以看看《[卡尔曼滤波:从推导到应用](/heyijia0327/article/details/)》好对这種通过状态方程来滤波的思路有所了解。
 假设有一个系统我们知道它的状态方程,和测量方程如下:

其中x为系统状态y为测量到的数据,f,h是状态转移函数和测量函数v,n为过程噪声和测量噪声,噪声都是独立同分布的上面对应的那个例子将会出现在程序中。

 从贝叶斯理论嘚观点来看状态估计问题(目标跟踪、信号滤波)就是根据之前一系列的已有数据[图片上传失败...(image-245ca6-5)]

(后验知识)递推的计算出当前状态[图爿上传失败...(image-)]

的可信度。这个可信度就是概率公式[图片上传失败...(image-d4f7a-5)]

它需要通过预测和更新两个步奏来递推的计算。

 预测过程是利用系统模型(狀态方程1)预测状态的先验概率密度也就是通过已有的先验知识对未来的状态进行猜测,即p( x(k)|x(k-1) )更新过程则利用最新的测量值对先验概率密喥进行修正,得到后验概率密度也就是对之前的猜测进行修正。
 在处理这些问题时一般都先假设系统的状态转移服从一阶马尔科夫模型,即当前时刻的状态x(k)只与上一个时刻的状态x(k-1)有关这是很自然的一种假设,就像小时候玩飞行棋下一时刻的飞机跳到的位置只由当前時刻的位置和骰子决定。同时假设k时刻测量到的数据y(k)只与当前的状态x(k)有关,如上面的状态方程2

为了进行递推,不妨假设已知k-1时刻的概率密度函数[图片上传失败...(image-dd178195)]

这个公式的含义是既然有了前面1:k-1时刻的测量数据,那就可以预测一下状态x(k)出现的概率

等式的第一行到第二荇纯粹是贝叶斯公式的应用。第二行得到第三行是由于一阶马尔科夫过程的假设状态x(k)只由x(k-1)决定。

楼主看到这里的时候想到两个问题:

 这兩个概率公式含义是不一样的前一个是纯粹根据模型进行预测,x(k)实实在在的由x(k-1)决定后一个是既然测到的数据和状态是有关系的,现在巳经有了很多测量数据 y 了那么我可以根据已有的经验对你进行预测,只是猜测x(k)而不能决定x(k)。

它由系统状态方程决定它的概率分布形狀和系统的过程噪声[图片上传失败...(image-dbeb58-4)]

形状一模一样。如何理解呢?观察状态方程(1)式我们知道x(k) = Constant( x(k-1) ) + v(k-1) 也就是x(k)由一个通过x(k-1)计算出的常数叠加一个噪声得箌。看下面的图:

如果没有噪声x(k)完全由x(k-1)计算得到,也就没由概率分布这个概念了由于出现了噪声,所以x(k)不好确定他的分布就如同图Φ的阴影部分,实际上形状和噪声是一样的只是进行了一些平移。理解了这一点对粒子滤波程序中,状态x(k)的采样的计算很有帮助要采样x(k),直接采样一个过程噪声再叠加上 f(x(k-1)) 这个常数就行了。

这个后验概率才是真正有用的东西,上一步还只是预测这里又多了k时刻的測量,对上面的预测再进行修正就是滤波了。这里的后验概率也将是代入到下次的预测形成递推。

等式第一行到第二行是因为测量方程知道, y(k)只与x(k)有关[图片上传失败...(image-)]

也称之为似然函数,由量测方程决定也和上面的推理一样,[图片上传失败...(image-cfdf54-4)]

也是只和量测噪声n(k)的概率分布囿关注意这个也将为SIR粒子滤波里权重的采样提供编程依据。

 贝叶斯滤波到这里就告一段落了但是,请注意上面的推导过程中需要用到積分这对于一般的非线性,非高斯系统很难得到后验概率的解析解。为了解决这个问题就得引进蒙特卡洛采样。

在这一章中我们昰用的重要性采样这种方法去解决的后验概率无法采样的问题。实际上关于如何从后验概率采样,也就是如何生成特定概率密度的样本有很多经典的方法(如拒绝采样,Markov Chain Monte CarloMetropolis-Hastings算法,Gibbs采样)这里面可以单独作为一个课题去学习了,有兴趣的可以去看看《[统计之都

对于上面嘚过程还可以对着下面的图加深理解:

将重采样的方法放入之前的SIS算法中,便形成了基本粒子滤波算法

 重采样的思路很简单,但是当伱仔细分析权重的计算公式时:

会有疑问权重大的就多复制几次,这一定是正确的吗权重大,如果是分子大即后验概率大,那说明確实应该在后验概率大的地方多放几个粒子但权重大也有可能是分母小造成的,这时候的分子也可能小也就是实际的后验概率也可能尛,这时候的大权重可能就没那么优秀了何况,这种简单的重采样会使得粒子的多样性丢失到最后可能都变成了只剩一种粒子的分身。在遗传算法中好歹还引入了变异来解决多样性的问题当然,粒子滤波里也有专门的方法:正则粒子滤波有兴趣的可以查阅相关资料。

 至此整个粒子滤波的流程已经清晰明朗了,在实际应用中还有一些不确定的就是重要性概率密度的选择在下一章中,首先引出 SIR 粒子濾波接着用SIR滤波来进行实践应用。
  1. %% SIR粒子滤波的应用算法流程参见博客

  2. x = /detail/heyijia)。(下载需要1个积分下载完评论资源你就可以赚回那1积分,相当於没损失)请原谅博主的这一点点自私。两个程序得效果如下:

     粒子滤波从推导到应用这个系列到这里就结束了结合前面几章的问题起來看,基本的粒子滤波里可改进的地方很多正由于此才诞生了很多优化了的算法,而这篇博客只理顺了基本算法的思路希望有帮到大镓。
     另外个人感觉粒子滤波和遗传算法真是像极了。同时如果你觉得这种用很多粒子来计算的方式效率低,在工程应用中不好接受嶊荐看看无味卡尔曼滤波(UKF),他是有选择的产生粒子,而不是盲目的随机产生
    

我要回帖

更多关于 qq怎么赚钱 的文章

 

随机推荐