MeanShift概述MeanShift简介MeanShift这个概念最早是由Fukunaga等人[1]于1975年在一篇关于概率密度梯度函数的估计中提出来的,其最初含义正如其名,就是偏移的均值向量,在这里MeanShift是一个名词,它指代的是一个向量,但随着MeanShift理论的发展,MeanShift的含义也发生了变化,如果我们说MeanShift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束.然而在以后的很长一段时间内MeanShift并没有引起人们的注意,直到20年以后,也就是1995年,另外一篇关于MeanShift的重要文献[2]才发表.在这篇重要的文献中,YizongCheng对基本的MeanShift算法在以下两个方面做了推广,首先YizongCheng定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同,其次YizongCheng还设定了一个权重系数,使得不同的样本点重要性不一样,这大大扩大了MeanShift的适用范围.另外YizongCheng指出了MeanShift可能应用的领域,并给出了具体的例子.Comaniciu等人[3][4]把MeanShift成功的运用的特征空间的分析,在图像平滑和图像分割中MeanShift都得到了很好的应用.Comaniciu等在文章中证明了,MeanShift算法在满足一定条件下,一定可以收敛到最近的一个概率密度函数的稳态点,因此MeanShift算法可以用来检测概率密度函数中存在的模态.Comaniciu等人[5]还把非刚体的跟踪问题近似为一个MeanShift最优化问题,使得跟踪可以实时的进行.在后面的几节,本文将详细的说明MeanShift的基本思想及其扩展,其背后的物理含义,以及算法步骤,并给出理论证明.最后本文还将给出MeanShift在聚类,图像平滑,图像分割,物体实时跟踪这几个方面的具体应用.MeanShift的基本思想及其扩展基本MeanShift给定d维空间dR中的n个样本点ix,i=1,…,n,在x点的MeanShift向量的基本形式定义为:1ihhixSMxxxk(1)其中,hS是一个半径为h的高维球区域,满足以下关系的y点的集合,2:ThSxyyxyxh(2)k表示在这n个样本点ix中,有k个点落入hS区域中.我们可以看到ixx是样本点ix相对于点x的偏移向量,(1)式定义的MeanShift向量()hMx就是对落入区域hS中的k个样本点相对于点x的偏移向量求和然后再平均.从直观上看,如果样本点ix从一个概率密度函数fx中采样得到,由于非零的概率密度梯度指向概率密度增加最大的方向,因此从平均上来说,hS区域内的样本点更多的落在沿着概率密度梯度的方向.因此,对应的,MeanShift向量()hMx应该指向概率密度梯度的方向.图1,MeanShift示意图如上图所示,大圆圈所圈定的范围就是hS,小圆圈代表落入hS区域内的样本点ihxS,黑点就是MeanShift的基准点x,箭头表示样本点相对于基准点x的偏移向量,很明显的,我们可以看出,平均的偏移向量()hMx会指向样本分布最多的区域,也就是概率密度函数的梯度方向.扩展的MeanShift核函数首先我们引进核函数的概念.定义:X代表一个d维的欧氏空间,x是该空间中的一个点,用一列向量表示.x的模2Txxx.R表示实数域.如果一个函数:KXR存在一个剖面函数:0,kR,即2()Kxkx(3)并且满足:(1)k是非负的.(2)k是非增的,即如果ab那么()()kakb.(3)k是分段连续的,并且0()krdr那么,函数()Kx就被称为核函数.举例:在MeanShift中,有两类核函数经常用到,他们分别是,单位均匀核函数:1if1()0if1xFxx(4)单位高斯核函数:2()xNxe(5)这两类核函数如下图所示.图2,(a)单位均匀核函数(b)单位高斯核函数一个核函数可以与一个均匀核函数相乘而截尾,如一个截尾的高斯核函数为,2if()0ifxexNFxx(6)图3显示了不同的,值所对应的截尾高斯核函数的示意图.图3截尾高斯核函数(a)11NF(b)0.11NFMeanShift扩展形式从(1)式我们可以看出,只要是落入hS的采样点,无论其离x远近,对最终的()hMx计算的贡献是一样的,然而我们知道,一般的说来,离x越近的采样点对估计x周围的统计特性越有效,因此我们引进核函数的概念,在计算()hMx时可以考虑距离的影响;同时我们也可以认为在这所有的样本点ix中,重要性并不一样,因此我们对每个样本都引入一个权重系数.如此以来我们就可以把基本的MeanShift形式扩展为:11()()()()()nHiiiinHiiiGxxwxxxMxGxxwx(7)其中:1/21/2()HiiGxxHGHxx()Gx是一个单位核函数H是一个正定的对称dd矩阵,我们一般称之为带宽矩阵()0iwx是一个赋给采样点ix的权重在实际应用的过程中,带宽矩阵H一般被限定为一个对角矩阵221diag,...,dHhh,甚至更简单的被取为正比于单位矩阵,即2HhI.由于后一形式只需要确定一个系数h,在MeanShift中常常被采用,在本文的后面部分我们也采用这种形式,因此(7)式又可以被写为:11()()()()()niiiihniiixxGwxxxhMxxxGwxh(8)我们可以看到,如果对所有的采样点ix满足(1)()1iwx(2)1if1()0if1xGxx则(8)式完全退化为(1)式,也就是说,我们所给出的扩展的MeanShift形式在某些情况下会退化为最基本的MeanShift形式.MeanShift的物理含义正如上一节直观性的指出,MeanShift指向概率密度梯度方向,这一节将证明MeanShift向量hMx是归一化的概率密度梯度.在本节我们还给出了迭代MeanShift算法的详细描述,并证明,该算法会收敛到概率密度函数的一个稳态点.概率密度梯度对一个概率密度函数()fx,已知d维空间中n个采样点ix,i=1,…,n,()fx的核函数估计(也称为Parzen窗估计)为,11()ˆ()()niiindiixxKwxhfxhwx(9)其中()0iwx是一个赋给采样点ix的权重()Kx是一个核函数,并且满足()1kxdx我们另外定义:核函数()Kx的剖面函数()kx,使得2()Kxkx(10);()kx的负导函数()gx,即'()()gxkx,其对应的核函数2()Gxgx(11)概率密度函数()fx的梯度()fx的估计为:2'1212()ˆˆ()()()niiiindiixxxxkwxhfxfxhwx(12)由上面的定义,'()()gxkx,2()Gxgx,上式可以重写为21212112112()ˆ()()()()2()()niiiindiininiiiiiindniiiiixxxxGwxhfxhwxxxxxxxGwxGwxhhxxhhwxGwxh(13)上式右边的第二个中括号内的那一部分就是(8)式定义的MeanShift向量,第一个中括号内的那一部分是以()Gx为核函数对概率密度函数()fx的估计,我们记做ˆ()Gfx,而(9)式定义的ˆ()fx我们重新记做ˆ()Kfx,因此(11)式可以重新写为:ˆ()fxˆ()Kfx22ˆ()GhfxMxh(14)由(12)式我们可以得出,2ˆ()1ˆ2()KhGfxMxhfx(15)(15)式表明,用核函数G在x点计算得到的MeanShift向量hMx正比于归一化的用核函数K估计的概率密度的函数ˆ()Kfx的梯度,归一化因子为用核函数G估计的x点的概率密度.因此MeanShift向量hMx总是指向概率密度增加最大的方向.MeanShift算法算法步骤我们在前面已经指出,我们在提及MeanShift向量和MeanShift算法的时候指代不同的概念,MeanShift向量是名词,指的是一个向量;而MeanShift算法是动词,指的是一个迭代的步骤.我们把(8)式的x提到求和号的外面来,可以得到下式,11()()()()niiiihniiixxGwxxhMxxxxGwxh(16)我们把上式右边的第一项记为()hmx,即11()()()()()niiiihniiixxGwxxhmxxxGwxh(17)给定一个初始点x,核函数()GX,容许误差,MeanShift算法循环的执行下面三步,直至结束条件满足,(1).计算()hmx(2).把()hmx赋给x(3).如果()hmxx,结束循环;若不然,继续执行(1).由(16)式我们知道,()hhmxxMx,因此上面的步骤也就是不断的沿着概率密度的梯度方向移动,同时步长不仅与梯度的大小有关,也与该点的概率密度有关,在密度大的地方,更接近我们要找的概率密度的峰值,MeanShift算法使得移动的步长小一些,相反,在密度小的地方,移动的步长就大一些.在满足一定条件下,MeanShift算法一定会收敛到该点附近的峰值,这一收敛性由下面一小节给出证明.算法的收敛性证明我们用jy,1,2,...j来表示MeanShift算法中移动点的痕迹,由(17)式我们可写为,111()()()()nijiiijnijiixyGwxxhyxyGwxh,1,2,...j(18)与jy对应的概率密度函数估计值ˆ()jfy可表示为,11()ˆ()()nijiiKjndiixyKwxhfyhwx(19)下面的定理将证明序列jy和ˆ()jfy的收敛性.定理:如果核函数()Kx有一个凸的,单调递增的剖面函数,核函数()Gx由式(10)和(11)定义,则序列jy和ˆ()jfy是收敛的.证明:由于n是有限的,核函数()(0)KxK,因此序列ˆ()jfy是有界的,所以我们只需要证明ˆ()jfy是严格递增的的,即要证明,对所有j=1,2,…如果1jjyy,那么ˆ()jfy1ˆ()jfy(20)不失一般性,我们可以假设0jy,由(19)式和(10)式,我们可以得到1ˆ()jfyˆ()jfy221111()()nijijinidiixyxykkwxhhhwx(21)由于剖面函数()kx的凸性意味着对所有12,[0,)xx且12xx,有'2121()()()()kxkxkxxx(22)因为'()()gxkx,上式可以写为,2112()()()()kxkxgxxx(23)结合(21)与(23)式,可以得到,1ˆ()jfyˆ()jfy222111211()()nijijiinidiixygxyxwxhhwx2211112112()()nijTjijinidiixygyxywxhhwx12221211112()()()jnnTiiiijindiiiixxyxgwxygwxhhhwx(24)由(18)式我们可以得出,1ˆ()jfyˆ()jfy2211211()nij