从贝叶斯到粒子滤波——Round 2
上一篇博文已经讲了贝叶斯滤波的原理以及公式的推导:http://www.cnblogs.com/JunhaoWu/p/bayes_filter.html
本篇文章将从贝叶斯滤波引入到粒子滤波,讲诉粒子滤波的原理。
前面我们已经提到,将跟踪目标的运动看作是一个动态系统。系统的状态以目标的状态来表示。这里,不妨将跟踪目标的中心位置作为系统状态 xt=(it,jt)。在连续变化的图像序列里,状态xt随时间不断变换。我们的目的是估计t时刻系统的状态,在这个例子中为目标的中心位置。
状态估计问题(目标跟踪,信号滤波)就是根据之前一系列已有数据y1:t(后验只是)递推计算出当前状态xt的可信度。这个可信度就是概率公式p(xt|y1:t)。
p(xt|y1:t)可以使用贝叶斯公式计算得出,即:
  
,
上面的式子中,我们还需要对p(yt|xt)和p(yt|y1:t-1)进行建模。例如,p(yt|xt)可以被看作是候选目标yt与跟踪目标的相似度(即实际值xt与观测值yt的相似度),用一系列的模板来重构yt,然后将其重构误差作为候选目标跟跟踪目标的相似度。
然而,这是贝叶斯滤波要解决的问题,我们现在想使用的是粒子滤波。
我们知道p(xt|y1:t)可以描述的是状态xt的分布情况(取什么值,还有取得这个值的概率大小)。同样的,样本也有描述概率分布的能力。若将xt看作是一个随机变量,如果能取得足够多的样本值,那么这些样本完全可以描述xt的分布情况。无非就是取什么值,还有取得这个值的概率大小嘛。样本中,落在该值上的样本越多,那么取得这个值得概率就越大哩,也就是说用频率来表示概率了。
粒子滤波的思想就是如上所述的使用样本去模拟状态xt的概率分布。啪啪啪,我们根据某个概率分布函数撒一些粒子xti,然后计算这些粒子的权值,该权值表示该粒子是我们想要的状态xt的可能性,即p(xt|y1:t)。粒子撒的越多,模拟结果越精确(毕竟样本越多越能说明真是情况嘛)。
下面以目标跟踪为例简述一下粒子滤波的算法流程:
1. 初始化阶段:目标的特征描述,即如何表示跟踪目标(灰度值,颜色特征等等);初始化粒子,可以使用高斯分布或者均匀分布来进行初始化(在Matlab中分别是randn函数和rand函数)。
2. 对每一个粒子(每个粒子也可以看做是一个候选目标)
1) 粒子传播xt-1i --> xti
2) 计算粒子的观测值 xti --> yti
3) 提取候选目标yti的特征,度量其与跟踪目标的相似度,该相似度作为粒子xti的权值
3. 粒子重采样
4. 根据粒子及其权值估计系统状态xt
说明:
粒子传播:xt-1表示的是t-1时刻的粒子,这些粒子近似表示了系统状态xt-1的分布函数。而我们现在要估计的是t时刻的状态xt,可以根据状态方程对t-1时刻的粒子进行传播,得到t时刻的粒子xt,用来近似表示t时刻的状态分布。当然,也可以选用其它的方式进行粒子传播,主要思想是使得传播后的粒子更好地近似表示状态xt的概率分布。
计算粒子的观测值:前面我们使用目标的中心表示该目标在t时刻的状态xt。根据不同的跟踪目标,我们需要根据xt得到不同的观测值。例如,跟踪目标是一个3x3的矩阵,那么我们需要根据xt,取得其局部领域作为观测值yt。
特征提取:我们虽然得到了粒子的观测值yt。但是,我们需要提取更多关于目标的信息,例如灰度值,颜色特征等等。这些信息的目的都是为了更好地描述跟踪目标,为得到更好的跟踪效果而服务。提取了特征之后,我们就可以比较候选目标和跟踪目标的相似度了。而相似度的衡量标准也有很多,这里就不详细说明了。总而言之,相似度越大的候选目标越有可能是我们想要的跟踪结果。因此,我们可以用相似度作为粒子的权值。毕竟相似度越大的粒子,状态xt取得该粒子的可能性也越大嘛。
粒子重采样:在跟踪过程中,有一些粒子可能偏离目标太远。这些粒子是我们想要的系统状态xt的可能性非常小,因此取得的权值非常小。只是根据粒子传播来改变粒子的状态的话,偏离的粒子永远是偏离的,很难再回到目标周围。这样的话,偏离的粒子可能越积越多。这就是所谓的粒子退化现象。退化了得粒子(权值小)作用就不大了,甚至说根本没用啊!浪费了各种资源,对状态估计又不做贡献。因此我们需要对粒子进行重采样。最简单的方式是剔除掉权值小的粒子(也就是退化了的粒子),然后将权值大的再复制几个呗。多简单粗暴啊,哈哈哈!
以上便是粒子滤波的目标跟踪流程了!如果还有什么问题,或者我写的不好的地方,欢迎各位看官各种抨击。
从贝叶斯到粒子滤波——Round 2的更多相关文章
- 从贝叶斯到粒子滤波——Round 1
		
粒子滤波确实是一个挺复杂的东西,从接触粒子滤波到现在半个多月,博主哦勒哇看了N多篇文章,查略了嗨多资料,很多内容都是看了又看,细细斟酌.今日,便在这里验证一下自己的修炼成果,请各位英雄好汉多多指教. ...
 - (一):细说贝叶斯滤波:Bayes filters
		
认知计算,还要从贝叶斯滤波的基本思想讲起,本文主要是对<Probabilistic Robotics>中贝叶斯滤波器部分的详细讲解. 这一部分,我们先回顾贝叶斯公式的数学基础,然后再来介绍 ...
 - python实现随机森林、逻辑回归和朴素贝叶斯的新闻文本分类
		
实现本文的文本数据可以在THUCTC下载也可以自己手动爬虫生成, 本文主要参考:https://blog.csdn.net/hao5335156/article/details/82716923 nb ...
 - PGM学习之五 贝叶斯网络
		
本文的主题是“贝叶斯网络”(Bayesian Network) 贝叶斯网络是一个典型的图模型,它对感兴趣变量(variables of interest)及变量之间的关系(relationships) ...
 - Machine Learning in Action(3) 朴素贝叶斯算法
		
贝叶斯决策一直很有争议,今年是贝叶斯250周年,历经沉浮,今天它的应用又开始逐渐活跃,有兴趣的可以看看斯坦福Brad Efron大师对其的反思,两篇文章:“Bayes'Theorem in the 2 ...
 - 朴素贝叶斯(Naive Bayesian)
		
简介 Naive Bayesian算法 也叫朴素贝叶斯算法(或者称为傻瓜式贝叶斯分类) 朴素(傻瓜):特征条件独立假设 贝叶斯:基于贝叶斯定理 这个算法确实十分朴素(傻瓜),属于监督学习,它是一个常用 ...
 - SLAM的数学基础(4):先验概率、后验概率、贝叶斯准则
		
假设有事件A和事件B,可以同时发生但不是完全同时发生,如以下韦恩图所示: 其中,A∩B表示A和B的并集,即A和B同时发生的概率. 如此,我们很容易得出,在事件B发生的情况下,事件A发生的概率为: 这个 ...
 - 机器学习实战笔记(Python实现)-03-朴素贝叶斯
		
--------------------------------------------------------------------------------------- 本系列文章为<机器 ...
 - 朴素贝叶斯算法下的情感分析——C#编程实现
		
这篇文章做了什么 朴素贝叶斯算法是机器学习中非常重要的分类算法,用途十分广泛,如垃圾邮件处理等.而情感分析(Sentiment Analysis)是自然语言处理(Natural Language Pr ...
 
随机推荐
- window下 Sublime Text 3 安装
			
1.下载 官网 http://www.sublimetext.com/ 安装时,注意勾选Add to explorer context menu,这样Sublime Text可以被添加到右键中,在右键 ...
 - jQuery实现页面内锚点平滑跳转
			
平时我们做导航滚动到内容都是通过锚点来做,刷的一下就直接跳到内容了,没有一丝的滚动效果,而且 url 链接最后会有“小尾巴”,就像#keleyi,今天我就介绍一款 jquery 做的滚动的特效,既可以 ...
 - 解决IE兼容模式问题
			
IE浏览器从IE8开始添加了兼容模式,开启后会以低版本的IE进行渲染.在浏览网页时候会出现网页显示问题,于是可以在html中加入以下代码来使IE使用固定的渲染模式: <metahttp-equi ...
 - Egret白鹭H5小游戏开发入门(二)
			
前言: 昨天的文章中简单的介绍了Egret白鹭引擎从安装到基本的使用配置等问题,今天着重介绍H5小游戏开发的起步阶段,如Wing面板的使用,素材的处理,类的说明,开始布局等等. 整体概况: 根据上一篇 ...
 - Google C++单元测试框架---Gtest框架简介(译文)
			
一.设置一个新的测试项目 在用google test写测试项目之前,需要先编译gtest到library库并将测试与其链接.我们为一些流行的构建系统提供了构建文件: msvc/ for Visual ...
 - reason: '[<__NSDictionary0 0x7fda88f00c90> setValue:forUndefinedKey:]: this class is not key value c
			
reason: '[<__NSDictionary0 0x7fda88f00c90> setValue:forUndefinedKey:]: this class is not key v ...
 - GPU大百科全书索引(有助于理解openGL工作流程)
			
GPU大百科全书索引 0.GPU大百科全书 前传 看图形与装修的关系 1.GPU大百科全书 第一章:美女 方程与几何 2.GPU大百科全书 第二章 凝固生命的光栅化 3.GPU大百科全书 第三章:像素 ...
 - T-SQL 将存储过程结果插入到表中
			
解决方案1: CREATE TABLE #tmpBus ( COL1 INT, COL2 INT ) INSERT INTO #tmpBus Exec SpGetRecords 'Pa ...
 - 从零自学Hadoop(01):认识Hadoop
			
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 阅读目录 序 Hadoop 项目起源 优点 核心 ...
 - linux命令详解:md5sum命令
			
前言 在网络传输.设备之间转存.复制大文件等时,可能会出现传输前后数据不一致的情况.这种情况在网络这种相对更不稳定的环境中,容易出现.那么校验文件的完整性,也是势在必行的. 使用说明 md5sum命令 ...