【算法】多特征融合粒子滤波

多特征融合粒子滤波

  • 多特征融合粒子滤波
    • 1.多特征
      • 1.1颜色特征
      • 1.2边缘特征
      • 1.3纹理特征
      • 1.4光流特征
      • 1.5小波特征
    • 2.融合
      • 2.1基于特征选择的融合方法
      • 2.2基于多特征信息加权的融合方法
      • 2.3特征信息自适应融合
    • 3.粒子滤波(重点)
      • 3.1多次提到的卡尔曼滤波( Kalman)是个啥?
      • 3.2蒙特卡洛(Monte Carlo)又是啥?
      • 3.3粒子滤波物体跟踪过程
        • (1) 初始化阶段-提取跟踪目标特征
        • (2) 搜索阶段-放狗
        • (3) 决策阶段
        • (4) 重采样阶段Resampling
      • 3.4概率统计中的一些知识
        • (1) 贝叶斯定理
        • (2) 先验概率与后验概率
        • (3) 似然函数与最大似然估计(maximum likelihood)
        • (4) 最大后验概率(maximum a posteriori, MAP)

我们从标题开始 《多特征融合粒子滤波》 这里包含了 多特征、融合和粒子滤波

1.多特征

常用的视觉特征有以下五种:

1.1颜色特征

颜色特征是跟踪算法中最为常用的视觉特征,对目标的角度旋转、尺寸改变和局部遮挡等干扰情况均具有很好的稳定性。

1.2边缘特征

边缘特征主要描述了目标的大致轮廓和内部突变情况,且受外部环境光照的影响较小,可以在一定程度上弥补颜色直方图无法表达目标空间信息的不足。

1.3纹理特征

纹理特征重点关注图像中目标区域内部的组织结构及排列规律,表征了颜色和边缘特征所不能描述的属性信息。纹理特征通常由一组辨别特征描述子表示,描述子在局部区域进行定义,具有关于比例缩放、角度旋转和光照变化的不变性。将这类描述子即纹理特征运用到某种目标跟踪框架中,可以得到相应的跟踪算法。

1.4光流特征

光流特征也是跟踪领域使用较多的视觉特征,光流信息的获取需要求解图像中所有像素的速度和方向,所以特征提取的时间代价相对较大,往往无法满足目标跟踪对实时性的要求。

1.5小波特征

小波表达的优势是可以在不同的尺度下、从不同的方向来表征目标像素的内在规律,非常适用于需要对由粗到精的差分运动进行分析和估计的场合。

2.融合

2.1基于特征选择的融合方法

其基本思想是选取当前时刻下最可靠的若干个特征来跟踪目标,一旦某些特征在跟踪期间失效,则立即选取另外的特征完成接下来的目标跟踪,以确保跟踪过程的可靠性。这类方法的难点在于,如何设计好的特征选择标准和特征切换策略。

2.2基于多特征信息加权的融合方法

但融合权值多设计为一组固定值,即每次都采用相同的权值对各种特征进行加权。显然,这类方法没有考虑同一特征在不同情形下的分辨能力,当某个特征信息发生较大变化而其权值保持不变时,融合后的观测模型将很难符合实际情况,极易产生跟踪漂移甚至目标丢失等错误。

2.3特征信息自适应融合

这类算法主要依据候选区域与目标区域的相似性度量结果,来实现特征融合权值的动态调整。然而,对于多个视觉特征中的某种特征,如果不能有效地区分候选区域与背景区域的相似性程度,那么该特征用于目标跟踪时将受背景干扰而难以准确地突出目标属性。因此,特征融合权值的分配还应考虑特征对目标和背景的判别能力,使其倾向判别性较高的特征以增加跟踪算法鲁棒性。

以上来源于:(代东林.基于多特征融合与粒子滤波的目标跟踪[D].重庆:重庆大学.硕士论文.2014.04 )

3.粒子滤波(重点)

度娘如是说:
滤波: 滤波是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。是根据观察某一随机过程的结果,对另一与之有关的随机过程进行估计的概率理论与方法
粒子滤波: 通过寻找一组在状态空间中传播的随机样本来近似的表示概率密度函数,用样本均值代替积分运算,进而获得系统状态的最小方差估计的过程,这些样本被形象的称为“粒子”,故而叫粒子滤波。

滤波是啥? 牛人是这样说的:
一位专业课的教授给我们上课的时候,曾谈到:filtering is weighting(滤波即加权)。滤波的作用就是给不同的信号分量不同的权重。最简单的loss passfilter, 就是直接把低频的信号给0权重,而给高频部分1权重。对于更复杂的滤波,比如维纳滤波, 则要根据信号的统计知识来设计权重。从统计信号处理的角度,降噪,可以看成滤波的一种。降噪的目的在于突出信号本身而抑制噪声影响。从这个角度,降噪就是给信号一个高的权重而给噪声一个低的权重。维纳滤波就是一个典型的降噪滤波器。
作者:王航臣 链接:https://www.zhihu.com/question/34809533/answer/61345742 来源:知乎

其实卡尔曼、粒子是叫估计器estimator。估计estimate当前值叫滤波filtering,估计过去叫平滑smoothing,估计未来叫预测prediction。不过为了方便,往往就叫滤波器了。至于高通,低通,则是滤波几个相互正交的分类:低通,高通开环,闭环(有无iterate)线性,非线性时变,定常动态系统,静态系统最小方差与否等等比如steady-state时卡尔曼滤波是低通滤波,等等。卡尔曼滤波,包括KF(线性),EKF(非线性),UKF(非线性),SRUKF(非线性)等,要求后验是高斯。PF则不仅可以处理非线性,还可以处理非高斯。其实还有噪声是否白噪声的问题,不过有色噪声可以近似成白噪声经过一个滤波器的话,就好处理。还有噪声是否零均值的问题,这个问题看似简单,其实很多很重要,比如如何处理传感器数值的漂移,乃至如何确定确定性的干扰。
作者:高斯白乎 链接:https://www.zhihu.com/question/34809533/answer/60577240 来源:知乎

明确一下插值、滤波、预测这三者的区别或许能解答题主的疑惑插值,就是用过去的数据来拟合过去的数据,比如牛顿插值,拉格朗日插值滤波,是用当前和过去的数据来求取当前的数据预测,是指用当前和过去的数据来求取未来的数据至于题主提到的卡尔曼滤波算法,是一种递推预测滤波算法,算法中即涉及到滤波,也涉及到对下一时刻数据的预测所以单纯从滤波功能来看,无论低通高通带通带阻,还是卡尔曼、粒子等滤波算法,目的都是一致,即是为了更好的求取当前的数据
作者:雄帅 链接:https://www.zhihu.com/question/34809533/answer/100244205 来源:知乎

Kalman filter 基于线性递推公式来滤波。
Particle filter 基于马尔可夫蒙特卡洛方法通过抽样来滤波【知乎】

3.1多次提到的卡尔曼滤波( Kalman)是个啥?

状态方程 + 观测方程
有人是这么说的:
用一句最简单的话来说,卡尔曼滤波是来帮助我们做测量的,大家一定不明白测量干嘛搞那么复杂?测量长度拿个尺子比一下,测量温度拿温度表测一下不就完了嘛。的确如此,如果你要测量的东西很容易测准确,没有什么随机干扰,那真的不需要劳驾卡尔曼先生。但在有的时候,我们的测量因为随机干扰,无法准确得到,卡尔曼先生就给我们想了个办法,让我们在干扰为高斯分布的情况下,得到的测量均方误差最小,也就是测量值扰动最小,看起来最平滑。
还是举例子最容易明白。我最近养了只小兔子,忍不住拿小兔子做个例子嘻嘻。
每天给兔子拔草,看她香甜地吃啊吃地,就忍不住关心一下她的体重增长情况。那么我们就以小兔子的体重作为研究对象吧。假定我每周做一次观察,我有两个办法可以知道兔子的体重,一个是拿体重计来称:或许你有办法一下子就称准兔子的体重(兽医通常都有这办法),但现在为了体现卡尔曼先生理论的魅力,我们假定你的称实在很糟糕,误差很大,或者兔子太调皮,不能老实呆着,弹簧秤因为小兔子的晃动会产生很大误差。尽管有误差,那也是一个不可失去的渠道来得到兔子的体重。还有一个途径是根据书本上的资料,和兔子的年龄,我可以估计一下我的小兔子应该会多重,我们把用称称出来的叫观察量,用资料估计出来的叫估计值,无论是观察值还是估计值显然都是有误差的,假定误差是高斯分布。现在问题就来了,按照书本上说我的兔子该3公斤重,称出来却只有2.5公斤,我究竟该信哪个呢?如果称足够准,兔子足够乖,卡尔曼先生就没有用武之地了呵呵,再强调一下是我们的现状是兔兔不够乖,称还很烂呵呵。在这样恶劣的情景下,卡尔曼先生告诉我们一个办法,仍然可以估计出八九不离十的兔兔体重,这个办法其实也很直白,就是加权平均,把称称出来的结果也就是观测值和按照书本经验估算出来的结果也就是估计值分别加一个权值,再做平均。当然这两个权值加起来是等于一的。也就是说如果你有0.7分相信称出来的体重,那么就只有0.3分相信书上的估计。说到这里大家一定更着急了,究竟该有几分相信书上的,有几分相信我自己称的呢?都怪我的称不争气,没法让我百分一百信赖它,还要根据书上的数据来做调整。好在卡尔曼先生也体会到了我们的苦恼,告诉我们一个办法来决定这个权值,这个办法其实也很直白,就是根据以往的表现来做决定,这其实听起来挺公平的,你以前表现好,我就相信你多一点,权值也就给的高一点,以前表现不好,我就相信你少一点,权值自然给的低一点。那么什么是表现好表现不好呢,表现好意思就是测量结果稳定,方差很小,表现不好就是估计值或观测值不稳定,方差很大。想象你用称称你的哦兔子,第一次1公斤第二次10公斤,第三次5公斤,你会相信你的称吗,但是如果第一次3公斤第二次3.2公斤,第三次2.8公斤,自然我就相信它多一点,给它一个大的权值了。
有了这个权值,下面的事情就很好办了。很显然卡尔曼先生是利用多次观察和估计来达到目的的,我们也只能一步一步地调整我们的观察和估计值,来渐渐达到准确的测量,所以整个算法是递归的,需要多次重复调整的。调整的过程也很简单,就是把实测值(称出来的体重)和估计值(书上得来的体重)比较一下,如果估计值比测量值小,那就把估计值加上他们之间的偏差作为新的估计值,当然前面要加个系数,就是我们前面说的加权系数,这个地方我要写个公式,因为很简单就能说明白
比如我们的观查值是Z,估计值是X, 那么新的估计值就应该是 Xnew = X+K(Z-X),从这个公式可以看到,如果X估计小了,那么新的估计值会加上一个量K(Z-X), 如果估计值大了,大过Z了,那么新的估计值就会减去一个量K(Z-X),这就保证新的估计值一定比现在的准确,一次一次递归下去就会越来越准却了,当然这里面很有作用的也是这个K,也就是我们前面说的权值,书上都把他叫卡尔曼增益。。。(Xnew = X+K(Z-X) = X(1-K)+KZ ,也就是说估计值X的权值是1-k,而观察值Z的权值是k,究竟k 取多大,全看估计值和观察值以前的表现,也就是他们的方差情况了)
http://blog.csdn.net/karen99/article/details/7771743

3.2蒙特卡洛(Monte Carlo)又是啥?

蒙特卡洛方法也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。【百度】如果用一句话总结蒙特卡洛的用处,那么就是:复杂概率的简单求解办法。

3.3粒子滤波物体跟踪过程

(形象的解释粒子滤波过程)

一直都觉得粒子滤波是个挺牛的东西,每次试图看文献都被复杂的数学符号搞得看不下去。一个偶然的机会发现了Rob Hess(http://web.engr.oregonstate.edu/~hess/)实现的这个粒子滤波。从代码入手,一下子就明白了粒子滤波的原理。根据维基百科上对粒子滤波的介绍(http://en.wikipedia.org/wiki/Particle_filter),粒子滤波其实有很多变种,Rob Hess实现的这种应该是最基本的一种,Sampling Importance Resampling (SIR),根据重要性重采样。下面是我对粒子滤波实现物体跟踪的算法原理的粗浅理解:

(1) 初始化阶段-提取跟踪目标特征

该阶段要人工指定跟踪目标,程序计算跟踪目标的特征,比如可以采用目标的颜色特征。具体到Rob Hess的代码,开始时需要人工用鼠标拖动出一个跟踪区域,然后程序自动计算该区域色调(Hue)空间的直方图,即为目标的特征。直方图可以用一个向量来表示,所以目标特征就是一个N*1的向量V。

(2) 搜索阶段-放狗

好,我们已经掌握了目标的特征,下面放出很多条狗,去搜索目标对象,这里的狗就是粒子particle。狗有很多种放法。比如,a)均匀的放:即在整个图像平面均匀的撒粒子(uniform distribution);b)在上一帧得到的目标附近按照高斯分布来放,可以理解成,靠近目标的地方多放,远离目标的地方少放。Rob Hess的代码用的是后一种方法。狗放出去后,每条狗怎么搜索目标呢?就是按照初始化阶段得到的目标特征(色调直方图,向量V)。每条狗计算它所处的位置处图像的颜色特征,得到一个色调直方图,向量Vi,计算该直方图与目标直方图的相似性。相似性有多种度量,最简单的一种是计算sum(abs(Vi-V)).每条狗算出相似度后再做一次归一化,使得所有的狗得到的相似度加起来等于1.

(3) 决策阶段

我们放出去的一条条聪明的狗向我们发回报告,“一号狗处图像与目标的相似度是0.3”,“二号狗处图像与目标的相似度是0.02”,“三号狗处图像与目标的相似度是0.0003”,“N号狗处图像与目标的相似度是0.013”…那么目标究竟最可能在哪里呢?我们做次加权平均吧。设N号狗的图像像素坐标是(Xn,Yn),它报告的相似度是Wn,于是目标最可能的像素坐标X = sum(XnWn),Y = sum(YnWn).

(4) 重采样阶段Resampling

既然我们是在做目标跟踪,一般说来,目标是跑来跑去乱动的。在新的一帧图像里,目标可能在哪里呢?还是让我们放狗搜索吧。但现在应该怎样放狗呢?让我们重温下狗狗们的报告吧。“一号狗处图像与目标的相似度是0.3”,“二号狗处图像与目标的相似度是0.02”,“三号狗处图像与目标的相似度是0.0003”,“N号狗处图像与目标的相似度是0.013”…综合所有狗的报告,一号狗处的相似度最高,三号狗处的相似度最低,于是我们要重新分布警力,正所谓好钢用在刀刃上,我们在相似度最高的狗那里放更多条狗,在相似度最低的狗那里少放狗,甚至把原来那条狗也撤回来。这就是Sampling Importance Resampling,根据重要性重采样(更具重要性重新放狗)。

(2)->(3)->(4)->(2)如是反复循环,即完成了目标的动态跟踪。

根据我的粗浅理解,粒子滤波的核心思想是随机采样+重要性重采样。既然我不知道目标在哪里,那我就随机的撒粒子吧。撒完粒子后,根据特征相似度计算每个粒子的重要性,然后在重要的地方多撒粒子,不重要的地方少撒粒子。所以说粒子滤波较之蒙特卡洛滤波,计算量较小。这个思想和RANSAC算法真是不谋而合。RANSAC的思想也是(比如用在最简单的直线拟合上),既然我不知道直线方程是什么,那我就随机的取两个点先算个直线出来,然后再看有多少点符合我的这条直线。哪条直线能获得最多的点的支持,哪条直线就是目标直线。想法非常简单,但效果很好。
http://www.cnblogs.com/yangyangcv/archive/2010/05/23/1742263.html

3.4概率统计中的一些知识

(1) 贝叶斯定理

贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。
其中P(A|B)是在B发生的情况下A发生的可能性。
贝叶斯公式:给定一组所关心事件的先验概率,如果你收到新的信息,那么更新你对于事件发生概率的法则为:
【算法】多特征融合粒子滤波_第1张图片
某城市发生了一起汽车撞人逃跑事件,该城市只有两种颜色的车,蓝色15%,绿色85%,事发时有一个人在现场看见了,他指证是蓝车。但是根据专家在现场分析,当时那种条件能看正确的可能性是80%。那么,肇事的车是蓝车的概率到底是多少?
【算法】多特征融合粒子滤波_第2张图片
作者:熊猫 链接:https://www.zhihu.com/question/51448623/answer/140173977 来源:知乎
​​
贝叶斯公式
【算法】多特征融合粒子滤波_第3张图片
全概率公式
【算法】多特征融合粒子滤波_第4张图片

(2) 先验概率与后验概率

通常称各“原因”的概率(Ai)为先验概率,“结果”B发生的条件下各“原因Ai”的概率P(Ai|B)为后验概率,前者往往是根据以往经验确定的一种主观概率,而后者是在结果B发生之后对原因Ai的重新认识。

可以说,贝叶斯公式解决的是追根溯源问题。
也可以说,贝叶斯公式是利用先验概率去求后验概率。
https://wenku.baidu.com/view/316eb9df50e2524de5187e70.html

(3) 似然函数与最大似然估计(maximum likelihood)

下面给出似然函数跟最大似然估计的定义。
我们假设f是一个概率密度函数,那么x→f(x|θ) 是一个条件概率密度函数(θ是固定的)
反过来θ→f(x|θ)叫做似然函数(x是固定的)一般似然函数写成L(θ|x)=f(x|θ) θ是因变量。
而最大似然估计就是求在θ的定义域中,当似然函数取得最大值时θ的大小。意思就是,当后验概率最大时θ的大小。也就是说要求最有可能的原因。由于对数函数不会改变大小关系,有时候会将似然函数求一下对数,方便计算。
http://blog.csdn.net/yewei11/article/details/50537648

(4) 最大后验概率(maximum a posteriori, MAP)

1、P(h)来代表还没有训练数据前,假设h拥有的初始概率。P(h)常被称为h的先验概率(prior probability),它反映了我们所拥有的关于h是一正确假设的机会的背景知识。如果没有这一先验知识,那么可以简单地将每一候选假设赋予相同的先验概率。
2、P(D)代表将要观察的训练数据D的先验概率(换言之,在没有确定某一假设成立时,D的概率)。
3、P(D|h)代表假设h成立的情形下观察到数据D的概率。更一般地,我们使用P(x|y)代表给定y时x的概率。
在机器学习中,我们感兴趣的是P(h|D),即给定训练数据D时h成立的概率。
P(h|D)被称为h的后验概率(posteriorprobability),因为它反映了在看到训练数据D后h成立的置信度。
应注意,后验概率P(h|D)反映了训练数据D的影响;相反,先验概率P(h)是独立于D的。
贝叶斯法则是贝叶斯学习方法的基础,因为它提供了从先验概率P(h)以及P(D)和P(D|h)计算后验概率P(h|D)的方法。
贝叶斯公式

P ( h ∣ D ) = P ( D ∣ h ) P ( h ) P ( D ) P(h|D)=\frac{P(D|h)P(h)}{P(D)} P(hD)=P(D)P(Dh)P(h)

直观可看出,P(h|D )随着P(h)和P(D|h)的增长而增长。同时也可看出P(h|D)随P(D)的增加而减少,这是很合理的,因为如果D独立于h被观察到的可能性越大,那么D对h的支持度越小。

h M A P ≡ arg ⁡ max ⁡ h ∈ H P ( D ∣ h ) p ( h ) P ( D ) = arg ⁡ max ⁡ h ∈ H P ( D ∣ h ) p ( h ) h_{MAP}\equiv \arg \max_{h\in H}\frac{P(D|h)p(h)}{P(D)} = \arg \max_{h\in H}P(D|h)p(h) hMAParghHmaxP(D)P(Dh)p(h)=arghHmaxP(Dh)p(h)

http://blog.csdn.net/u011067360/article/details/22879807

Bhattacharyya系数(相似性度量)

对于特征匹配,通常使用二次距离、欧氏距离以及Kullback-Leible 等距离函数来度量特征之间的相似程度,但在视觉特征直方图中,更为普遍的是利用巴特查理亚(Bhattacharyya)系数。该系数作为一种针对散度量的测量手段,在几何上代表了两个向量夹角的余弦取值。对于特征直方图的分布相似性而言,它和贝叶斯间的估计误差最小即近乎为最优。另一方面,Bhattacharyya系数的取值均在[0,l]范围内变化,有利于直观方便地反映特征匹配的完美程度,所以本文选用它来完成特征的相似性度量。两个连续分布q(u)与 p(u)的Bhattacharyya系数定义为:
ρ ( q , p ) = ∫ q ( u ) p ( u ) d u \rho (q,p)=\int \sqrt {q(u)p(u)}du ρ(q,p)=q(u)p(u) du

代东林.基于多特征融合与粒子滤波的目标跟踪[D].重庆:重庆大学.硕士论文.2014.04

你可能感兴趣的:(算法)