1. 程式人生 > >robots_estimation and learning之混合高斯模型

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核模型

我還要坦白,我現在計算的模型無法區分紅球和黃球,尼瑪,有人挑出毛病的,直接留言,感激不盡。難道是閾值不對?還是模型迭代次數不到位?

完整的程式碼見:

相關推薦

robots_estimation and learning混合模型

    近來slam技術在無人汽車領域比較火熱,所以現在打算把cousera上的robots_estimation and learning的4周課程刷一遍。做作業做了,但是沒有提交(之前買的課到期了),所以也就沒有驗證正確性。 一、課程背景介紹 我們知道SLAM問題

機器學習混合模型(Gaussian Mixture Model)聚類演算法+程式碼

機器學習之混合高斯模型聚類演算法1 演算法原理2 演算法例項3 典型應用參考資料 機器學習分為監督學習、無監督學習和半監督學習(強化學習)。無監督學習最常應用的場景是聚類(clustering)和降維(dimension reduction)。聚類演算法包括:

非監督學習混合模型和EM演算法——Andrew Ng機器學習筆記(十)

0、內容提要 這篇博文主要介紹: - 混合高斯模型(mixture of Gaussians model) - EM演算法(Expectation-Maximization algorithm) 1、引入 假設給定一個訓練集{x(1),...,x(m)

EM算法與混合模型

exp n) white http tlab real 概率 mat strong EM算法與混合高斯模型 close all; clear; clc; %% Sample Generate N=5000; a_real =[3/10,5/10,2/10]; mu_re

GMM混合模型演算法詳解

使用概率模型的原因 k均值等價於假設了球對稱形狀的聚類。使用帶權歐式距離,仍然假設了軸對齊的橢球。沒有考慮聚類的形狀。 促使概率模型的原因:混合模型 提供觀測點到聚類的軟分配soft assignment(分配包含不確定性) 考慮了聚類的形狀而不僅僅是中心

機器學習筆記(十)EM演算法及實踐(以混合模型(GMM)為例來次完整的EM)

今天要來討論的是EM演算法。第一眼看到EM我就想到了我大楓哥,EM Master,千里馬,RUA!!!不知道看這個部落格的人有沒有懂這個梗的。好的,言歸正傳,今天要講的EM演算法,全稱是Expectation maximization,期望最大化。怎麼個意思呢,就是給你一

robots_estimation and learning卡爾曼濾波

本次博文為cousera的第二次作業,涉及卡爾曼濾波,分別講述了: 為什麼要有運動估計 卡爾曼濾波器如何對運動狀態建模 如何用貝葉斯濾波求解運動方程,其主觀物理含義是什麼 如果運動方程和觀測方程是非線性的怎辦 一、為什麼要有運動估計 我們知道slam前端視覺里程計能

資料學習(9)·最大期望演算法·混合模型(上)

作者課堂筆記摘錄,有問題請聯絡 [email protected] Preview 高斯混合模型(Mixture of Gaussians) 最大期望演算法(EM)

聚類(1)——混合模型 Gaussian Mixture Model

聚類系列: 聚類(序)----監督學習與無監督學習 聚類(1)----混合高斯模型 Gaussian Mixture Model  聚類(2)----層次聚類 Hierarchical Clustering  聚類(3)----譜聚類 Spectral Clustering

混合模型(matlab)

推薦部落格:http://blog.csdn.net/crzy_sparrow/article/details/7413019         背景模型有很多種,其中很多方法對光照的的突變和其它因素的適應能力不夠,而高斯混合模型是最為成功的一種背景建模方法。        

sklearn聚類模型:基於密度的DBSCAN;基於混合模型的GMM

type 依次 imp style wid -m ict ria htm 1 sklearn聚類方法詳解 2 對比不同聚類算法在不同數據集上的表現 3 用scikit-learn學習K-Means聚類 4 用scikit-learn學習DB

機器學習 - 無監督學習-多元模型

(一)異常檢測---基於高斯(正態)分佈   m個訓練樣本,每個樣本有n個features 即m個樣本的每個屬性集都呈現高斯分佈,因此有以下計算:   例子如下: (二)評價異常檢測系統 將所有資料按照60%,20%,20%的比例分成三部分

GMM混合背景建模C++結合Opencv實現(內附Matlab實現)

最近在做視訊流檢測方面的工作,一般情況下這種視訊流檢測是較複雜的場景,比如交通監控,或者各種監控攝像頭,場景比較複雜,因此需要構建背景影象,然後去檢測場景中每一幀動態變化的前景部分,GMM高斯模型是建模的一種方法,關於高斯建模的介紹有很多部落格了,大家可以去找一找,本篇部落格主要依賴於上

關於什麼時候用異常檢測和監督學習,以及多元模型的使用

當有很多負樣本,少量正樣本的時候,用異常檢測。 假如特徵不符合高斯分佈,則應該對原始特徵做一個變換,比如log(x)或者X^2等等讓其符合高斯分佈 多元高斯混合模型公式: 其中裡面有兩個引數一個是u特徵均值,一個是協方差矩陣 混合高斯模型使用條件 m(訓練樣本數量)>n

Matlab產生二維混合分佈及隨機數

參考:https://ww2.mathworks.cn/help/stats/gmdistribution.random.html 修改如下: Create a gmdistribution object and generate random variates. De

混合背景建模原理及實現(C# )

原文http://blog.csdn.net/jinshengtao/article/details/26278725 前些日子一直在忙答辯的事情,畢業後去了華為,影象處理什麼的都派不上用場了。打算分3-4篇文章,把我研究生階段學過的常用演算法為大家和4107的師弟師妹

SSE影象演算法優化系列二十六:和時間賽跑優化金字塔建立的計算過程。

  影象金字塔技術在很多層面上都有著廣泛的應用,很多開源的工具也都有對他們的建立寫了專門的函式,比如IPP,比如OpenCV等等,這方面的理論文章特別多,我不需要贅述,但是我發現大部多分開源的程式碼的實現都不是嚴格意義上的金字塔,而是做了一定的變通,這種變通常常為了快捷的實現類似的效果,雖然這種變通不太會影響

影象識別與處理Opencv——濾波GaussianBlur() 11月2日暫存

高斯濾波是一種線性平滑濾波,對於除去高斯噪聲有很好的效果。 在其官方文件中形容高斯濾波為”Probably the most useful filter”,同時也指出高斯濾波並不是效率最高的濾波演算法。 高斯演算法在官方文件給出的解釋是高斯濾波是通過對輸入陣

【影象處理基礎知識】-混合背景建模

0、高斯模糊原理-------------------------------------------------------分割線----------------------------------------------------------------1、一維高斯函式

[轉] 如何用matlab生成服從混合分佈的隨機數?

M=10; %產生M行N列的隨機數矩陣 N=8; miu1=1;%第一個分佈的引數 sigma1=2;%第一個分佈的引數 miu2=6;%第二個分佈的引數 sigma2=1;%第二個分佈的引數 R = 0.2*normrnd(miu1,sigma1,M,N)+0.8*normrnd(miu2,si