均值漂移——精选推荐
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
均值漂移是一种有效的统计迭代算法。
均值漂移算法是一种基于密度梯度上升的非参数方法,通过迭代运算找到目标位置,实现目标跟踪。
它显著的优点是算法计算量小,简单易实现,很适合于实时跟踪场合;但是跟踪小目标和快速移动目标时常常失败,而且在全部遮挡情况下不能自我恢复跟踪。
通过实验提出应用核直方图来计算目标分布,证明了均值漂移算法具有很好的实时性特点。
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 的基本思想及其扩展
基本Mean Shift
给定d维空间中的n个样本点,i=1,…,n,在点的Mean Shift向量的基本形式定义为: k表示在这n个样本点中,有k个点落入区域中.
我们可以看到是样本点相对于点的偏移向量,(1)式定义的Mean Shift向量就是对落入区域中的k个样本点相对于点的偏移向量求和然后再平均.从直观上看,如果样本点从一个概率密度函数中采样得到,由于非零的概率密度梯度指向概率密度增加最大的方向,因此从平均上来说, 区域内的样本点更多的落在沿着概率密度梯度的方向.因此,对应的, Mean Shift向量应该指向概率密度梯度的方向
如上图所示, 大圆圈所圈定的范围就是,小圆圈代表落入区域内的样本点,黑点就是Mean Shift的基准点,箭头表示样本点相对于基准点的偏移向量,很明显的,我们可以看出,平均的偏移向量会指向样本分布最多的区域,也就是概率密度函数的梯度方向
从前面关于Mean Shift和概率密度梯度的关系的论述,我们可以清楚的看到,Mean
Shift算法本质上是一个自适应的梯度上升搜索峰值的方法,如下图所示,如果数据集服从概率密度函数f(x),给定一个如图初始点,Mean Shift算法就会一步步的移动,最终收敛到第一个峰值点.从这张图上,我们可以看到Mean Shift至少有如下三方面的应用:(1)聚类,数据集中的每一点都可以作为初始点,分别执行Mean Shift算法,收敛到同一个点算作一类;(2)模态的检测,概率密度函数中的一个峰值就是一个模态,Mean Shift在峰值处收敛,自然可以找到该模态.(3)最优化,Mean Shift可以找到峰值,自然可以作为最优化的方法,Mean Shift算法进行最优化的关键是要把最优化的目标转化成Mean Shift隐含估计的概率密度函数.
[1]The Estimation of the Gradient of a Density Function, with Applications in Pattern Recognition(1975)
[2]Mean shift, mode seeking, and clustering (1995)
[3]Mean Shift: a robust approach toward feature space analysis (2002)
[4]Real-time tracking of non-rigid objects using mean shift (2000)
[5]Mean-shift Blob Tracking through Scale Space (2003)
[6]An algorithm for data-driven bandwidth selection(2003)
从直观上看,如果样本点从一个概率密度函数中采样得到,由于非零的概率密度梯度指向概率密度增加最大的方向,因此从平均上来说,区域内的样本点更多的落在沿着概率密度梯度的方向.因此,对应的, Mean Shift向量应该指向概率密度梯度的方向。
meanshift最大的特点就是在对图像分布未知的情况下,利用迭代的方式,找出模板
颜色概率密度的梯度。
在RGB图像中,通过三色的颜色概率密度来寻找目标模板和参考模板的bhattacharyya_coefficient。
精度在跟踪算法里面算比较高的了。
同比粒子滤波来说计算量也会少很多。
因此,在图像跟踪方面,有着非常值得研究的地方。
Kmeans与Meanshift、EM算法的关系
Kmeans算法是一种经典的聚类算法,在模式识别中得到了广泛的应用,基于Kmeans 的变种算法也有很多,模糊Kmeans、分层Kmeans等。
Kmeans和应用于混合高斯模型的受限EM算法是一致的。
高斯混合模型广泛用于数据挖掘、模式识别、机器学习、统计分析。
Kmeans的迭代步骤可以看成E步和M步,E:固定参数类别中心向量重新标记样本,M:固定标记样本调整类别中心向量。
K均值只考虑(估计)了均值,而没有估计类别的方差,所以聚类的结构比较适合于特征协方差相等的类别。
Kmeans在某种程度也可以看成Meanshitf的特殊版本,Meanshift是一种概率密度梯度估计方法(优点:无需求解出具体的概率密度,直接求解概率密度梯度。
),所以Meanshift可以用于寻找数据的多个模态(类别),利用的是梯度上升法。
在06年的一篇CVPR文章上,证明了Meanshift方法是牛顿拉夫逊算法的变种。
Kmeans和EM 算法相似是指混合密度的形式已知(参数形式已知)情况下,利用迭代方法,在参数空间中搜索解。
而Kmeans和Meanshift相似是指都是一种概率密度梯度估计的方法,不过是Kmean选用的是特殊的核函数(uniform kernel),而与混合概率密度形式是否已知无关,是一种梯度求解方式。
PS:两种Kmeans的计算方法是不同的。
Vector quantization也称矢量量化:指一个向量用一个符号K来代替。
比如有10000个
数据,用Kmeans聚成100类即最有表征数据意义的向量,使得数据得到了压缩,以后加入的数据都是用数据的类别来表示存储,节约了空间,这是有损数据压缩。
数据压缩是数据聚类的一个重要应用,也是数据挖掘的主要方法。
混合高斯模型是一系列不同的高斯模型分量的线性组合。
在最大似然函数求极值时,直接求导存在奇异点的问题,即有时一个分量只有一个样本点,无法估计其协方差,导致其似然函数趋于无穷,无法求解。
另一个问题是,用代数法求得的解是不闭合的,即求解的参数依赖于参数本身的值,变成一个鸡生蛋,蛋生鸡的问题。
这些问题看似无解,但是可以使用迭代的方法如EM,k均值等,预先设置一些参数,然后迭代求解。
PS:也有用基于梯度的方法求解的。
在求解混合模型时,有一个重要的概念即模型的可辨识性(如果无论样本的数量为多少都无法求出模型参数的唯一解,则称模型是不可辨识的),这是EM算法的前提。
在实际应用时,由于EM算法的复杂度比K均值高,所以一般先用K均值大致收敛到一些点,然后用EM算法。
EM算法求解混合模型的固然有效,但不能保证找到最大使然函数的最大值。
EM算法是求解具有隐变量的概率模型的最大似然函数的解的常用方法。
当样本集是样本与隐变量一一对应时,数据集称为完整数据集,可以直接求解模型参数,但很多时候只知道样本,不知道其对应的隐变量,这是非完整数据集。
所以求解模型参数的关键是隐变量的后验概率,由后验概率可以推出完整数据集用于求解参数。
增量式的EM算法,每次只更新一个点,收敛速度更快。
上述方法可以看成是无监督学习。
PS:EM是一个似然函数下界最大化解法,保证了解法的收敛性。
/view/4f37261cfad6195f312ba6c7.html
一般认为其思想最初由fukunaga,hostetler在1975年的一篇论文《The estimation of gradient of a density function,with application in pattern recognition》提出。
在这篇文章的摘要中作者写到:nonparametric density gradient estimation using a generalized kernel approach is investigated.讲的就是一种无参数的密度梯度估计方法。
然而,被没有得到人们的重视
直到1995年8月,Yizong Cheng发表了《mean shift,mode seeking,and clustering》才使得这个好东东被人们所注意。
该文引入影子核的概念阐明了mean shift和优化之间的关系并且说明mean shift算法是一个自适应的梯度升算法。
他详细地介绍了mean shift算法的推导,在特定条件下收敛性的证明(虽然这些条件在实际问题中很难得到满足)及mean shift算法的几个应用。
这篇文章为mean shift算法在图像处理各个方面的应用做了很好的理论准备。
个人认为,Comaniciu D,Meer P这两个人为mean shift算法应用做出了主要的贡献:《robust analysis of feature spaces:color image segmentation》1997
介绍在图像分割,平滑方面的应用,其实质是用了mean shift的自动聚类的性质。
《Real-time tracking of non-rigid objects using mean shift》2000
用在目标跟踪上面。
这绝对是开创性的工作!
《the variable bandwidth mean shift and data-driven scale selection》2001
理论上探讨了如何选择一个最恰当的核窗宽的方法,但实际应用并不多。
《a robust approach toward feature space analysis》2002
对mean shift算法的应用大多都逃不出这三篇论文中所涉及的内容。
当然还有其它人的工作也是很重要的:
关于mean shift算法的本质问题:《Mean Shift is a Bound Optimization》该文认为Mean Shift 是一个优化过程,特别地,当密度估计函数用的是常数核时,mean shift 步长就是牛顿步长。
特别是关于收敛性证明的问题:
李乡儒,吴福朝,胡占义《圴值漂移算法的收敛性》一文中做了全面的介绍。
我想这应该是至今为止最好的证明了
目标跟踪技术在自动控制、监控技术、医学图像识别等领域的应用中有着独特的优势,但是近年来,目标跟踪技术仍然不能达到人们满意的效果,严重阻碍了其应用推广,随着硬件技术的飞快发展,动态图像的分析和理解成为研究的热点,目标跟踪技术应用在许多重要领域,使得该技术成为一个重要的研究课题。
论文讨论了目前两种经典的目标跟踪算法:Mean Shift算法(均值偏移)和粒子滤波算法(Particle Filter),分析了两种算法的特点;针对目标跟踪鲁棒性不高的问题,分析了用运动目标检测提取目标运动特征的技术,通过增加对目标特征描述信息,提高跟踪健壮性,并在以颜色直方
图描述颜色特征的基础上,融合了目标的运动特征,设计了一种基于运动特征和颜色特征多特征融合的粒子滤波跟踪方法。
论文对颜色直方图进行了分析,比较了颜色直方图和二阶直方图的优劣,结合了运动特征提取方法和扩大搜索范围的方法,给出了以均值偏移为理论基础,用二阶直方图描述目标颜色特征,实现目标跟踪的技术;针对粒子滤波存在的缺点,用二阶直方图描述颜色特征,设计了均值偏移和粒子滤波相结合的目标跟踪技术,使每个粒子表示状态更合理,在遮挡时能够实现很好的跟踪。
针对Mean-Shift跟踪算法容易跟踪丢失以及粒子滤波跟踪算法计算量大等问题,提出了一种两步多目标跟踪算法。
利用Mean-Shift进行第一步跟踪得到候选目标,在跟踪不准的情况下再利用粒子滤波进行后续的跟踪结果修正。
实验结果表明两步跟踪算法既能保持Mean-Shift跟踪的实时性,也能维持粒子滤波跟踪算法的鲁棒性,有很高的实用性。
Mean-Shift算法收敛性理解
Mean-Shift函数收敛性的证明思路包括两个要点:
1) 前提条件是核函数的轮廓函数要求为凸函数、单调
减。
2) 采用梯度下降算法,在前一条件下就很容易证明该算法的收敛性。
均值平移(Mean Shift)
在2000年,Dorin Comaniciu等人将Mean Shift 算法引入目标跟踪领域,提出的Mean Shift跟踪算法[16-21]。
算法利用可视化特征,如颜色、纹理等的统计信息描述跟踪的目标,通过Mean Shift 迭代搜索与跟踪目标模板具有最大相似度的候选目标区域,以此实现对当前帧中目标的定位和跟踪。
1. Mean Shift 跟踪算法
正如本文对算法的分类所示,Mean Shift 跟踪算法属于模式搜索与匹配算法。
它首先分析目标,提取特定模式;然后,利用启发式算法,在搜索空间中选定候选区域,并将目标模式与候选区域模式相比较;依此,循环迭代,在搜索空间中找到最佳匹配的候选区域,作为要查找的目标。
因此,算法有三个关键工作:选择目标模式、确定比较匹配算法,以及寻找启发式搜索策略。
下面由此三方面对此算法做简单介绍。
(1)目标模式:颜色的核直方图
Mean Shift 跟踪算法是基于模式匹配的机理,因此,在运行前,需要人为给出目标区域。
在一帧图像I中,目标所在的区域为目标区域,用O表示。
它以外的区域为背景,用B表示。
包含了全部目标,又不可避免的含有少量背景区域的圆形区域T,称为跟踪窗口[18]。
由目标区域O,得到跟踪窗口T。
以T的圆心为坐标原点,重新分配图像中各像
素点的坐标{xi}, i = 1, 2, ..., n。
定义一个映射b: R^2 -> {1, 2, ..., m},它将每个像素的二维坐标,映射到其对应像素颜色值应划分的直方区间m上。
颜色值u 在目标模型中的概率是通过核函数k计算得到。
k是一个凸单调递减函数,它根据像素距离目标中心的距离,给此像素对颜色u概率的贡献设置一个权值,像素距离中心越远,权值越小。
以此模拟距离目标中心越远,属于目标的可能性越小,增加了算法的鲁棒性。
这样,就得到了Mean Shift 跟踪算法目标的模式表示,目标颜色的核直方图[16, 18]。
跟踪窗口T中包含目标O的核直方图定义,形式化描述为:
meanshift1.jpg
公式2.10
其中,δ是Kronecker delta函数[16],m 是直方图对颜色进行的量化级数,C为m 个“直方”的概率的归一化常数,h 为跟踪窗口T 的半径。
目标模型确定后,便是搜索匹配的候选模型。
候选模型的核直方图计算方法相同,先选定候选目标中心y,计算半径为h 的跟踪窗口内的图像的核直方图Qy = {qi}, i = 1, 2, ..., m。
另外,候选的目标中心y 的坐标取值,可以在整个图片的范围,具体搜索策略,后面将继续介绍。
(2)相似度计算:Bhattacharyya 系数
目标模式和候选目标模式都是具有m 个分量的核直方图P 和Q,它们是两个离
散的概率分布。
而在统计学中,巴氏系数(Bhattachryya coefficient)用来衡量两离散概率分布的可分离误差,误差越大越不宜分离,亦即两者越相似。
因此,Mean Shift 跟踪理所当然的选用它作为衡量目标与候选目标相似度的工具。
根据Bhattachryya 系数的定义,P 和Q 的相似性描述如下:
meanshift2.jpg
公式2.11
依此,便可以判断目标与候选目标的相似度,并在整个图像范围内找到最优匹配。
(3)搜索策略:Mean Shift 矢量
确定了目标的模型或模式,以及相似度计算方法,下面就需要使用较好的启发式策略在候选空间中寻找最佳匹配的目标。
在跟踪问题中,由给出目标区域的帧图像,得到目标模型,接着便要在未来帧图像中寻找最可能的目标区域。
因此,目标的搜索匹配空间为整个帧图像。
运用启发式策略,就是要尽量避免搜索整个空间,而是使用最便捷、有效的方式得到目标。
Mean Shift 跟踪算法是沿着Mean Shift 矢量方向不断移动核函数中心位置到
收敛,以此方式寻找邻近的最佳匹配模式中心y即可。
2. Mean Shift 算法的优缺点
算法使用核直方图描述目标,对目标的形变和旋转变化、部分遮挡等具有较强的鲁棒性,而且计算简单、速度快,因此,近年来对该算法的研究和应用案例越来越多。
但是,算法假设了目标和背景各自对应的颜色非零部分的颜色直方图不相同。
否则,将会出现和目标直方图分布相同的背景区域,从而导致背景区域被认为是目标。
这一假设前提,便是Mean Shift 跟踪算法的一条软肋。
同时,算法对颜色的依赖性,使得算法不适应环境的光线突变,使跟踪失败。
另外,Mean Shift 算法的核函数窗口宽度固定,使得当目标的尺度变大超出搜索窗大小时,算法的效果同样受到影响。
因此,对于目标尺度变化很难适应。
而且,算法的目标以窗口需要事先给定,不适用于自动监控的系统上,需要与人交互。
笔者认为,Mean Shift 跟踪算法的一个最大问题在于:它所跟踪的区域并非是目标自身,而是跟踪窗口的一种颜色分布形式。
实际上,Mean Shift 跟踪算法并不真正记忆目标的特征形式,不是仿照人类的某些方式来进行,没有人类视觉的生理依据,因此也无法给出目标的外形、颜色分布等信息,不是真正的智能跟踪算法。
Mean Shift
Mean Shift,我们翻译为“均值飘移”。
其在聚类,图像平滑。
图像分割和跟踪方面得到了比较广泛的应用。
由于本人目前研究跟踪方面的东西,故此主要介绍利用Mean Shift方法进行目标跟踪,从而对MeanShift有一个比较全面的介绍。
(以下某些部分转载常峰学长的“Mean Shift概述”)Mean Shift 这个概念最早是由Fukunaga等人于1975年在一篇关于概率密度梯度函数的估计(The Estimation of the Gradient of a Density Function, with Applications in Pattern Recognition )中提出来的,其最初含义正如其名,就是偏移的均值向量,在这里Mean Shift是一个名词,它指代的是一个向量,但随着Mean Shift理论的发
展,Mean Shift的含义也发生了变化,如果我们说Mean Shift算法,一般是指一个迭代的步骤,即先算出当前点的偏移均值,移动该点到其偏移均值,然后以此为新的起始点,继续移动,直到满足一定的条件结束.
然而在以后的很长一段时间内Mean Shift并没有引起人们的注意,直到20年以后,也就是1995年,另外一篇关于Mean Shift的重要文献(Mean shift, mode seeking, and clustering )才发表.在这篇重要的文献中,Yizong Cheng对基本的Mean Shift算法在以下两个方面做了推广,首先Yizong Cheng定义了一族核函数,使得随着样本与被偏移点的距离不同,其偏移量对均值偏移向量的贡献也不同,其次Yizong Cheng还设定了一个权重系数,使得不同的样本点重要性不一样,这大大扩大了Mean Shift的适用范围.另外Yizong Cheng指出了Mean Shift可能应用的领域,并给出了具体的例子。
Comaniciu等人在还(Mean-shift Blob Tracking through Scale Space)中把非刚体的跟踪问题近似为一个Mean Shift最优化问题,使得跟踪可以实时的进行。
目前,利用Mean Shift进行跟踪已经相当成熟。
目标跟踪不是一个新的问题,目前在计算机视觉领域内有不少人在研究。
所谓跟踪,就是通过已知的图像帧中的目标位置找到目标在下一帧中的位置。
这里仍然在跟踪的基础上讲解mean shift。
首先还是把mean shift的原理用数学公式说一下吧。
1、目标模型,算法采用的是特征值的加权概率分布来描述目标模型。
这应该是模式识别中主要描述目标的模型,不同于自动控制理论中采用的状态方程。
目标模型共m个特征值(可以理解为像素灰度值)。