mean-shift算法综述
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由上面的定义, g ( x) = −k ( x) , G ( x ) = g
'
( x ) ,上式可以重写为
2
ˆ f (x) = ∇
2∑
n i =1
( xi
⎛ x − x − x )G ⎜ i ⎜ h ⎝ n d +2 h ∑ i =1 w ( x i )
2
⎞ w ( xi ) ⎟ ⎟ ⎠
(13)
⎡ ⎢∑ ⎢ ⎢ ⎢ ⎢ ⎣
n i =1
⎡ 2 ⎢∑ = 2 ⎢ h ⎢ ⎢ ⎣
n
i =1
⎤ ⎛ x − x⎞ G⎜ i ⎟ w ( xi ) ⎥ h ⎝ ⎠ ⎥ n ⎥ h d ∑ i =1 w ( x i ) ⎥ ⎦
( xi
∑
⎤ ⎛ x − x ⎞ w ( xi ) ⎥ − x )G ⎜ i ⎟ ⎜ ⎟ h ⎥ ⎝ ⎠ ⎥ n ⎛ xi − x ⎞ ⎥ ( ) G w x i ⎜ ⎟ i =1 ⎝ h ⎠ ⎥ ⎦
xi − x )w( xi ) xi h i =1 Mh ( x) = n −x xi − x G( )w( xi ) ∑ h i =1
∑ G(
n
(16)
我们把上式右边的第一项记为 mh ( x) ,即
xi − x )w( xi ) xi h i =1 mh ( x) = n x −x G( i )w( xi ) ∑ h i =1
w( xi ) ≥ 0 是一个赋给采样点 xi 的权重
在实际应用的过程中,带宽矩阵 H 一般被限定为一个对角矩阵 H = diag ⎡ ⎣ h1 ,..., hd ⎤ ⎦ ,甚至更
2 2
简单的被取为正比于单位矩阵, 即 H = h 2 I .由于后一形式只需要确定一个系数 h ,在 Mean Shift 中常常被采用,在本文的后面部分我们也采用这种形式,因此(7)式又可以被写为:
由(12)式我们可以得出, (14)
M h ( x) =
ˆ ( x) 1 2 ∇f K h ˆ 2 f G ( x)
(15)
(15)式表明,用核函数 G 在 x 点计算得到的 Mean Shift 向量 M h ( x ) 正比于归一化的用核函数
ˆ ( x) 的梯度,归一化因子为用核函数 G 估计的 x 点的概率密度.因 K 估计的概率密度的函数 f K
则(8)式完全退化为(1)式,也就是说,我们所给出的扩展的 Mean Shift 形式在某些情况下会退 化为最基本的 Mean Shift 形式.
Mean Shift的物理含义
正如上一节直观性的指出,Mean Shift 指向概率密度梯度方向,这一节将证明 Mean Shift 向量
M h ( x ) 是归一化的概率密度梯度.在本节我们还给出了迭代 Mean Shift 算法的详细描述,并
M ( x) ≡
∑G
i =1
n
H
( xi − x) w( xi )( xi − x)
(7)
∑ GH ( xi − x)w( xi )
i =1
−1/ 2
n
其中:
GH ( xi − x) = H
G ( H −1/ 2 ( xi − x ) )
G ( x ) 是一个单位核函数
H 是一个正定的对称 d × d 矩阵,我们一般称之为带宽矩阵
证明,该算法会收敛到概率密度函数的一个稳态点.
概率密度梯度
对一个概率密度函数 f ( x ) ,已知 d 维空间中 n 个采样点 xi ,i=1,…,n, f ( x ) 的核函数估计(也 称为 Parzen 窗估计)为,
ˆ ( x) = f
其中
∑
n
i =1
⎛ x −x⎞ K⎜ i ⎟ w( xi ) ⎝ h ⎠ n h d ∑ i =1 w( xi )
Sh ( x ) ≡ y : ( y − x )
{
T
( y − x ) ≤ h2 }
(2)
k 表示在这 n 个样本点 xi 中,有 k 个点落入 S h 区域中. 我们可以看到 ( xi − x ) 是样本点 xi 相对于点 x 的偏移向量,(1)式定义的 Mean Shift 向量
M h ( x) 就是对落入区域 Sh 中的 k 个样本点相对于点 x 的偏移向量求和然后再平均.从直观
Mean Shift 概述
Mean Shift 简介
Mean Shift 这个概念最早是由 Fukunaga 等人[1]于 1975 年在一篇关于概率密度梯度函 数的估计中提出来的,其最初含义正如其名,就是偏移的均值向量,在这里 Mean Shift 是一个名 词,它指代的是一个向量,但随着 Mean Shift 理论的发展,Mean Shift 的含义也发生了变化,如果 我们说 Mean Shift 算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其 偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束. 然而在以后的很长一段时间内 Mean Shift 并没有引起人们的注意,直到 20 年以后,也就是 1995 年,另外一篇关于 Mean Shift 的重要文献[2]才发表.在这篇重要的文献中,Yizong Cheng 对基本的 Mean Shift 算法在以下两个方面做了推广,首先 Yizong Cheng 定义了一族核函数, 使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同,其次 Yizong Cheng 还设定了一个权重系数,使得不同的样本点重要性不一样,这大大扩大了 Mean Shift 的 适用范围.另外 Yizong Cheng 指出了 Mean Shift 可能应用的领域,并给出了具体的例子. Comaniciu 等人[3][4]把 Mean Shift 成功的运用的特征空间的分析,在图像平滑和图像分 割中 Mean Shift 都得到了很好的应用. Comaniciu 等在文章中证明了,Mean Shift 算法在满足 一定条件下,一定可以收敛到最近的一个概率密度函数的稳态点,因此 Mean Shift 算法可以用 来检测概率密度函数中存在的模态. Comaniciu 等人[5]还把非刚体的跟踪问题近似为一个 Mean Shift 最优化问题,使得跟踪 可以实时的进行. 在后面的几节,本文将详细的说明 Mean Shift 的基本思想及其扩展,其背后的物理含义, 以及算法步骤,并给出理论证明.最后本文还将给出 Mean Shift 在聚类,图像平滑,图像分割,物 体实时跟踪这几个方面的具体应用.
此 Mean Shift 向量 M h ( x ) 总是指向概率密度增加最大的方向.
Mean Shift算法 算法步骤
我们在前面已经指出,我们在提及 Mean Shift 向量和 Mean Shift 算法的时候指代不同的 概念,Mean Shift 向量是名词,指的是一个向量;而 Mean Shift 算法是动词,指的是一个迭代的步 骤.我们把(8)式的 x 提到求和号的外面来,可以得到下式,
⎧e − β x ( N Fλ ) ( x) = ⎪ ⎨ ⎪ ⎩0
β
2
if x < λ if x ≥ λ
wenku.baidu.com(6)
图 3 显示了不同的 β , λ 值所对应的截尾高斯核函数的示意图.
图 3 截尾高斯核函数 (a) N 1 F1 (b) N 0.1 F1
Mean Shift扩展形式
从(1)式我们可以看出,只要是落入 S h 的采样点, 无论其离 x 远近,对最终的 M h ( x) 计算的贡 献是一样的,然而我们知道,一般的说来,离 x 越近的采样点对估计 x 周围的统计特性越有效, 因此我们引进核函数的概念,在计算 M h ( x) 时可以考虑距离的影响;同时我们也可以认为在 这所有的样本点 xi 中,重要性并不一样,因此我们对每个样本都引入一个权重系数. 如此以来我们就可以把基本的 Mean Shift 形式扩展为:
扩展的Mean Shift 核函数
首先我们引进核函数的概念. 定义 : X 代表一个 d 维的欧氏空间 , x 是该空间中的一个点 , 用一列向量表示 . x 的模
x = xT x . R 表示实数域.如果一个函数 K : X → R 存在一个剖面函数 k : [ 0, ∞ ] → R ,即
2
K ( x) = k x
并且满足: (1) k 是非负的.
( )
2
(3)
(2) k 是非增的,即如果 a < b 那么 k ( a ) ≥ k (b) . (3) k 是分段连续的,并且 那么,函数 K ( x ) 就被称为核函数. 举例:在 Mean Shift 中,有两类核函数经常用到,他们分别是, 单位均匀核函数:
∫
( )
2
(11)
概率密度函数 f ( x ) 的梯度 ∇f ( x ) 的估计为:
⎛ x −x 2∑ i =1 ( x − xi ) k ⎜ i ⎜ h ⎝ ˆ ˆ ∇f ( x ) = ∇f ( x ) = n d +2 h ∑ i =1 w( xi )
n '
2
⎞ w( xi ) ⎟ ⎟ ⎠
(12)
∑G(
n
(17)
给定一个初始点 x ,核函数 G ( X ) , 容许误差 ε ,Mean Shift 算法循环的执行下面三步,直至结 束条件满足, (1).计算 mh ( x)
(2).把 mh ( x) 赋给 x (3).如果 mh ( x ) − x < ε ,结束循环;若不然,继续执行(1). 由 (16)式我们知道 , mh ( x ) = x + M h ( x ) , 因此上面的步骤也就是不断的沿着概率密度的梯 度方向移动,同时步长不仅与梯度的大小有关,也与该点的概率密度有关,在密度大的地方,更 接近我们要找的概率密度的峰值,Mean Shift 算法使得移动的步长小一些,相反,在密度小的地 方,移动的步长就大一些.在满足一定条件下,Mean Shift 算法一定会收敛到该点附近的峰值, 这一收敛性由下面一小节给出证明.
Mean Shift 的基本思想及其扩展
基本Mean Shift
给定 d 维空间 R 中的 n 个样本点 xi ,i=1,…,n,在 x 点的 Mean Shift 向量的基本形式定义 为:
d
M h ( x) ≡
1 ∑ ( xi − x ) k xi ∈Sh
(1)
其中, S h 是一个半径为 h 的高维球区域,满足以下关系的 y 点的集合,
2
上式右边的第二个中括号内的那一部分就是(8)式定义的 Mean Shift 向量,第一个中括号内的
ˆ ( x) ,而(9)式定义的 那一部分是以 G ( x ) 为核函数对概率密度函数 f ( x ) 的估计,我们记做 f G ˆ ( x) ,因此(11)式可以重新写为: ˆ ( x ) 我们重新记做 f f K ˆ ( x) = 2 f ˆ ( x) M ( x ) ˆ f ( x ) = ∇f ∇ K G h h2
∞
0
k (r )dr < ∞
⎧ ⎪1 if x < 1 F ( x) = ⎨ ⎪ ⎩0 if x ≥ 1
单位高斯核函数:
(4)
N ( x) = e
这两类核函数如下图所示.
−x
2
(5)
图 2, (a) 单位均匀核函数 (b) 单位高斯核函数 一个核函数可以与一个均匀核函数相乘而截尾,如一个截尾的高斯核函数为,
M h ( x) ≡
∑ G(
i =1
n
xi − x ) w( xi )( xi − x) h n x −x ) w( xi ) G( i ∑ h i =1
(8)
我们可以看到,如果对所有的采样点 xi 满足 (1) w( xi ) = 1 (2) G ( x ) = ⎨
⎧1 if x < 1 ⎪ ⎪ ⎩0 if x ≥ 1
(9)
w( xi ) ≥ 0 是一个赋给采样点 xi 的权重
K ( x ) 是一个核函数,并且满足 ∫ k ( x ) dx = 1
我们另外定义: 核函数 K ( x ) 的剖面函数 k ( x ) ,使得 K ( x ) = k
(x )
2
(10);
k ( x) 的负导函数 g ( x ) ,即 g ( x) = −k ' ( x) ,其对应的核函数 G ( x) = g x
上看,如果样本点 xi 从一个概率密度函数 f ( x ) 中采样得到,由于非零的概率密度梯度指向概 率密度增加最大的方向,因此从平均上来说, S h 区域内的样本点更多的落在沿着概率密度梯 度的方向.因此,对应的, Mean Shift 向量 M h ( x) 应该指向概率密度梯度的方向
. 图 1,Mean Shift 示意图 如上图所示, 大圆圈所圈定的范围就是 S h ,小圆圈代表落入 S h 区域内的样本点 xi ∈ S h , 黑点就是 Mean Shift 的基准点 x ,箭头表示样本点相对于基准点 x 的偏移向量,很明显的,我们 可以看出,平均的偏移向量 M h ( x) 会指向样本分布最多的区域,也就是概率密度函数的梯度 方向.