从贝叶斯到粒子滤波——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 ...
随机推荐
- css之水平居中设置
行内元素: div,p{text-align:center;} 定宽块状元素: 第一宽度固定,第二margin-left和margin-right均是auto.div{border:1px ...
- 网页端实现input数字输入框
实现input输入框只能输入数字的效果: <input type="text" name="" id="phoneNum" value ...
- C# PPT Operator
来自:http://blog.csdn.net/lxzh12345/article/details/47047491 最近在写一个工具,设计到将界面内容到处到PPT中,且导出的内容能够编辑.网上搜了很 ...
- Windows TCP连接数限制解决
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "M ...
- iOS程序破解——ARM汇编基础
原文在此:http://www.cnblogs.com/mddblog/p/4951650.html 一.Thumb指令与ARM指令 Thumb指令为16位,因此存储代码的密度高,节省存储空间.但是功 ...
- 进新公司用cornerstone-checkout后遇到的奇葩bug,及解决方法
从cornerstone中checkout下新的工程,运行报错. 1.开始错误原因是找不到相对应的某个.m文件的路径 解决方案:将缺少的.m文件重新从项目文件夹中导入 2.后来显示 造成的原因是在下面 ...
- C#命名规则和编码规范
用Pascal规则来命名属性.方法.事件和类名. public class HelloWorld { public void SayHello(string name) { } } Pascal规则是 ...
- HTML5【语法要点】
一.头部设置 <!--页面窗口自动调整到设备宽度,并禁止用户及缩放页面--> <meta name="viewport" content="width= ...
- PHP实现堆排序
经验 工作了,面试我工作这家公司时被技术面打击得不行,因为自己的数据结构等基础学得实在太差,虽然原来是想做设计师的说...不过看在PHP写得还凑合的份上能来实习了,但还是决心恶补一下基础. 其实自己之 ...
- CentOS系统 yum 安装 iftop实时流量监控工具
一. 不多说其他的无用话题.直接看步骤: 1.要安装某个工具,首先得知道这个工具需要依赖包. eg:iftop 就依赖 以下这几个依赖包(不清楚工具依赖什么包“Google.百度”). flex ...