MeanShift算法(一)

參考論文:D. Comaniciu and P. Meer, “Mean shift: A robust approach toward feature space analysis,” IEEE T. PAMI, vol. 24, no. 5, pp. 603-619, May 2002

MeanShift 可以翻譯爲“均值漂移”,它在聚類、圖像平滑、圖像分割和跟蹤方面得到了比較廣泛的應用。MeanShift 這個概念最早是由Fukunaga等人於1975年在一篇關於概率密度梯度函數的估計(The Estimation of the Gradient of a Density Function, with Applications in Pattern Recognition)中提出來的。其最初含義正如其名:就是偏移的均值向量。在這裏MeanShift是一個名詞,它指代的是一個向量。但隨着Mean Shift理論的發展,MeanShift的含義也發生了變化。如果我們說MeanShift算法,一般是指一個迭代的步驟,即先算出當前點的偏移均值,移動該點到其偏移均值,然後以此爲新的起始點繼續移動,直到滿足一定的條件結束。

在很長一段時間內,MeanShift算法都沒有得到足夠的重視,直到1995年另一篇重要論文的發表。該論文的作者Yizong Cheng定義了一族核函數,使得隨着樣本與被偏移點的距離不同,其偏移量對均值偏移向量的貢獻也不同。其次,他還設定了一個權重係數,使得不同樣本點的重要性不一樣,這大大擴展了MeanShift的應用範圍。此外,還有研究人員將非剛體的跟蹤問題近似爲一個MeanShift的最優化問題,使得跟蹤可以實時進行。目前,利用MeanShift進行跟蹤已經相當成熟。MeanShift算法其實是一種核密度估計算法,它將每個點移動到密度函數的局部極大值點處

下面介紹MeanShift算法的理論:

給定d維空間Rd的n個樣本點,i=1,…,n.則核密度估計函數可以表示爲:

核函數K(x)滿足如下關係:

歸一化:

對稱性:

權重的指數衰減:

    ?????條件:

其中上式c爲常數。對於有限數量的data,實際應用中K(x)有兩種獲取的形式:

    

第一種形式,在各個維度上都使用相同的函數k(x),第二種形式表示只使用了向量的長度。因爲||*||表示歐式距離。在Rd表示的d維空間中,參數h是樣本數量n的函數,應當滿足,從而保證估計的漸進無偏性。爲了確保估計的均方一致性,h需要滿足條件:。爲了確保全局一致性,h需要滿足條件.

其中,當核函數採用Epanechnikov核時,均方誤差最小。Epanechnikov核表示爲:

其中爲d維單位球體體積。另外一個也被用到的核函數爲高斯核:

定義核函數的輪廓(profile,也可翻譯爲剖面函數)函數k(x)滿足k:[0,)->R,即

其中爲歸一化常數,保證K(x)積分爲1,且嚴格爲正。由此帶入最初的核密度估計函數,可將核密度估計函數重寫爲:

下面介紹Kernel DensityGradient Estimation:

定義一個輪廓函數(profile),並且構造出g(x)的核函數:

參考文獻中說K(x)was called the shadow of G(x),這裏不太理解這個shadow的意思?同樣也說Epanechnikov kernel is the shadow of the uniform kernel??

根據核函數的可微性,密度梯度估計恆等於核密度估計的梯度,可以得到:

將g(x)帶入上式得到:

假設大於0。可以得到關於核函數G在點x的表達式如下,可理解爲以G爲核函數對概率密度函數f(x)的估計:


則mean shift向量可表示爲:

以核函數作爲權重,x作爲窗口的中心。

上面的式子表明,在點x處,基於核函數G(x)的mean shift向量與基於核函數K(x)的密度梯度估計僅相差一個常數的比例係數。而梯度是指密度變化最大的方向,所以mean shift向量也是指向密度增大最大的方向。

反覆進行以下步驟就是MeanShift算法的過程:

1)計算mean shift向量

2)根據,移動核(窗口);

3)若,則結束循環,否則繼續迭代。

最終核函數的中心點收斂到數據空間中密度最大的點,它的密度梯度估計爲0。mean shift向量也總是指向密度增大最大的方向,這可由上式的分子項來保證。而分母項則表示每次迭代核函數移動的步長。在不包含興趣特徵的區域內,步長較長;在感興趣的區域內,步長較短。即MeanShift算法是一個變步長的梯度上升算法,或稱爲自適應梯度上升算法。

小結:

根據mean shift向量,定義半徑爲h的高維球區域S­h,並滿足一下關係的y點的集合:

k表示在這n個點xi中,有k個點落入h區域中。

我們可以看到(xi - x)是樣本點xi相對於點x的偏移向量。mean shift向量就是對落入區h中的k個樣本點相對於點x的偏移向量求和然後再平均。從直觀上看,如果樣本點xi從一個概率密度函數f(x)中採樣得到,由於非零的概率密度梯度指向概率密度增加最大的方向。因此從平均上來說,區域內的樣本點更多的落在沿着概率密度梯度的方向。因此,對應的mean shift向量應該指向概率密度梯度的方向。如下圖所示:


大圓圈所圈定的範圍就是h,小圓圈代表落入h區域內的樣本點黑點就是meanshift的基準點箭頭表示樣本點相對於基準點x的偏移向量很明顯的我們可以看出平均的偏移向量會指向樣本分佈最多的區域也就是概率密度函數的梯度方向。把每個偏移向量相加就可以得到meanshift向量,再以meanshift向量的終點,即質心畫球,移動,重複此過程即可收斂到概率密度最大的方向。即最稠密,密集的地方。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章