robots_estimation and learning之混合高斯模型

    近来slam技术在无人汽车领域比较火热,所以现在打算把cousera上的robots_estimation and learning的4周课程刷一遍。做作业做了,但是没有提交(之前买的课到期了),所以也就没有验证正确性。

 

一、课程背景介绍

我们知道SLAM问题的本质,对运动主体自身和周围环境空间不确定性的估计。本次课程属于slam技术的后端优化模块,我们将会从有噪声的、不完整的、不确定的数据中估计世界的状态,并用先验知识提升算法在不确定因素中的表现。

这里所指的不确定性包括:

。sensor noise

。lack of knowledge about the world

。dynamic changes in motion and environment

这里,我们只用概率模型求解上述问题【暂时不涉及深度学习技术】。

本次博文将介绍如何利用高斯概率分布对颜色特征进行建模,以及如何求解模型参数,从一维单核、多维单核到多维多核,逐步递进。本次作业最终要求,检测每张图片中的黄色网球,并标注球心位置。

 

二、一维+单核

1.一维高斯概率模型

为什么高斯概率分布这么重要?

根据中心极限定理(central limit theorem),当样本量N逐渐趋于无穷大时,N个抽样样本的均值的频数逐渐趋于正态分布,其对原总体的分布不做任何要求,意味着无论总体是什么分布,其抽样样本的均值的频数的分布都随着抽样数的增多而趋于正态分布,也就是说,对于大量数据而言,我们使用高斯分布可以表达任意随机变量。

给定如下图片,如何让计算机识别出红色网球、黄色网球?

一个个遍历像素点,根据RGB值标注图片中的黄色或红色区域是不现实的,因为小球的颜色有噪声,很难用一两个RGB值表达黄色还是红色。也许,可以把RGB颜色空间转换为HSV颜色空间,然后统计Hue分量的直方图。

  有了上述训练样本的颜色直方图后,我们可以在测试样本上逐像素遍历,并判断每个像素点的颜色是否落入上述直方图,以此判断是否为黄球。

但是这样,我们检测目标时就要保存整个直方图,这样非常耗费资源。我们能否用一个更精炼的数学模型,来表达这个直方图呢?我们可以使用高斯概率分布。

 

一维单核的高斯概率分布数学表达如下:

 

2.最大似然估计求解一维高斯概率模型

给定N个观测变量x,如何求他的均值和方差呢?

   我们可以用Maximum Likelihood Estimate(MLE),来计算参数。这里不扩展MLE的推导过程(取对数、求偏导数),cousera视频里都有,比较简单。给出MLE的最终解:

 

三、多维+单核

1.多维高斯模型

  接下来我们扩展到多维数据的场景,对网球颜色进行多通道建模。这样颜色特征更丰富,比单通道鲁棒性更强。

如果把黄色小球的颜色值,在RGB三维空间画出来,如下图所示:

多维单核高斯分布的数学表达如下:

这里D=3是观测的数据维度,mu是均值向量,sigma是协方差矩阵。协方差矩阵表达了各个观测数据之间的相关性。(A correlation component represents how much on variable is related to another variable.)

另外,注意协方差是正定矩阵(矩阵对称,行列式值为正),这个在变量初始化,matlab编程时很重要,须注意。

 

2.最大似然估计求解多维高斯模型

接下来,我们看看如何利用多维观测数据,求解模型参数。同样不扩展MLE的推导步骤,直接给出最终结论。注意,这里的xi是多维向量了,不是单个变量了。

 

四、混合高斯概率模型,多维+多核

1.混合高斯概率模型GMM(Gaussian Mixture Model)

前面我们介绍了单核的高斯模型,它的缺陷很明显,如下图所示,即数学表达能力不够,,单核高斯模型是对称的,因此无法表达有多个波峰波谷的图形。

因此,我们打算将多个单核高斯累加,得到混合高斯模型,如下图所示:

   我再贴个2d观测数据,单核高斯模型与多核高斯模型直观对比下

我们可以发现多核高斯的表达能力更强。它的数学表达公式如下:

这里w代表每个单核高斯的权重,为了简便,统一取1/K,w没有渐变更新。gk的函数如下:

混合高斯模型的好处是模型足够灵活,表达能力强。理论上,只要有足够多的高斯模型,就能表达或拟合任意形状。

缺点是参数过多,比如你要决定用多少核的高斯,无确定解(no analytic solution),容易过拟合。

 

2.EM迭代法

  接下来,我们看看如何求多核多维高斯的参数。由于取对数后,高斯函数以相加而非相乘的形式在对数函数内,因此无法化简,no closed form solution exists。既然MLE无法使用,只能用迭代的方式求局部极值。

EM,Expectation-Maximization迭代求解混合高斯概率模型,忽略推导步骤,较麻烦。

首先引入latent variable

  这样,其他参数模型的计算如下:

  因此,整个算法流程,在给定初始化值后,可以分为两部:

  1. 固定mu和sigma,更新z

  1. 固定z,更新mu和sigma

注意,这里咱要理清数据的维度关系:

X: N*D

Mu: K*D

Sigma: K*D*D

Z: K*1

Gk: 1*1

 

五、作业讲解

接下来,讲讲编程实现吧。宾夕法尼亚的课程,越到后面开放性越大,指引很少,比如混合高斯模型的阈值、如果有个网球,根据它的提示只能检测一个黄色网球。Train文件夹下有19张图片,需要学生自己标注黄色小球样本,然后根据这些样本计算模型参数。然后在测试集上,标注黄球的位置。

我已标注19张图片,训练了4核和6核模型

我还要坦白,我现在计算的模型无法区分红球和黄球,尼玛,有人挑出毛病的,直接留言,感激不尽。难道是阈值不对?还是模型迭代次数不到位?

完整的代码见:

https://github.com/haopo2005/robots_estimation-and-learning/tree/master/week_one

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值