欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Fisher Vector(FV)原理

程序员文章站 2024-03-21 16:18:58
...

Fisher Vector(FV)是一种类似于BOVW词袋模型的一种编码方式,如提取图像的SIFT特征,通过矢量量化(KMeans聚类),构建视觉词典(码本),FV采用混合高斯模型(GMM)构建码本,但是FV不只是存储视觉词典的在一幅图像中出现的频率,并且FV还统计视觉词典与局部特征(如SIFT)的差异。在讲解Fisher Vector(FV)之前,先对FV有一个总体的认识,先看一下FV的代码实现。

FV采用GMM构建视觉词典,为了可视化,这里采用二维的数据,当然这里的数据可以是SIFT或其它局部特征,具体实现代码如下:

%采用GMM模型对数据data进行拟合,构建视觉词典
numFeatures = 5000 ;            %样本数
dimension = 2 ;                 %特征维数
data = rand(dimension,numFeatures) ; %这里随机生成一些数据,这里data可以是SIFT或其它局部特征

numClusters = 30 ;  %视觉词典大小
[means, covariances, priors] = vl_gmm(data, numClusters); %GMM拟合data数据分布,构建视觉词典
这里得到的means、covariances、priors分别为GMM的均值向量,协方差矩阵和先验概率,也就是GMM的参数

Fisher Vector(FV)原理

这里用GMM构建视觉词典也存在一个问题,这是GMM模型固有的问题,就是当GMM中的高斯函数个数,也就是聚类数,也就是numClusters,若与真实的聚类数不一致的话,GMM表现的不是很好(针对期望最大化EM方法估计参数Fisher Vector(FV)原理),具体请参见GMM。

接下来,我们创建另一组随机向量,这些向量用Fisher Vector和刚获得的GMM来编码,具体代码如下:

numDataToBeEncoded = 1000;
dataToBeEncoded = rand(dimension,numDataToBeEncoded);
encoding = vl_fisher(datatoBeEncoded, means, covariances, priors);



如上代码片段中的encoding就是dataToBeEncoded数据的FV表示。为了提升性能,FV表示还要经过白化与归一化,具体参见VLFeat
现在我们已经对FV已经有了一个整体的认识,下面讲述FV的原理。
现设

为从图像中提取的一个D维的特征向量(如SIFT描述子等),设
为高斯混合模型GMM拟合描述子概率分布所得的参数。在得到GMM的参数后,GMM也就确定了。现在给定一个特征描述子向量,它属于某个高斯分布(GMM*有K个高斯分布函数)的后验概率为:

Fisher Vector(FV)原理

对于每个模式k(也就是GMM中的单个高斯分布),考虑均值和协方差偏差向量,得到:

Fisher Vector(FV)原理

在上式中

Fisher Vector(FV)原理

把GMM中的每个模式Fisher Vector(FV)原理按先Fisher Vector(FV)原理向量后Fisher Vector(FV)原理向量的形式级联起来,便得到图像Fisher Vector(FV)原理的FV特征表示Fisher Vector(FV)原理如下:

Fisher Vector(FV)原理

为了提升FV性能,得到的FV还要经过白化,Power Normalization和Fisher Vector(FV)原理归一化。为了提升计算效率,当某个特征向量对应的Fisher Vector(FV)原理很小到可以忽略时,直接被设置为零,这样在计算的过程中便少计算了一个模式,当Fisher Vector(FV)原理大部分为零时,可以明显提高计算效率。至此,FV的原理算是讲完了。但是还有一点需要注意的是,FV还有一种实现方法,它被看成是Fisher Kernels (FK) 的一种特例。

FK推导了一种数据和拟合数据得到的生成模型Fisher Vector(FV)原理,由生成模型Fisher Vector(FV)原理产生的数据之间的相似性测度。生成模型Fisher Vector(FV)原理的参数Fisher Vector(FV)原理是通过最大似然估计(MLE)得到的。一旦生成模型被确定后,每个特定的数据Fisher Vector(FV)原理都是通过观察它如何影响MLE参数估计来表示的。这个影响测度可以通过计算相应的数据Fisher Vector(FV)原理的对数似然函数的梯度得到:

Fisher Vector(FV)原理

协方差矩阵可以通过生成模型得到(由生成模型生成的数据已经被中心化)如下所示:

Fisher Vector(FV)原理

注意,H也是模型的Fisher信息矩阵。最终的FV编码Fisher Vector(FV)原理由对数似然函数的白化梯度给出:

Fisher Vector(FV)原理

取两个这样的向量的内积产生Fisher核:

Fisher Vector(FV)原理

可以看出,FV编码相当于FK的映射函数。

参考:

1. 聚类算法K-Means, K-Medoids, GMM, Spectral clustering,Ncut

2. 漫谈 Clustering (3): Gaussian Mixture Model

3. Fisher Vector and VLAD 4. Fisher vector fundamentals

5. 判别式模型和产生式模型 (discriminative model and generative model)

6. Fisher Vector

7. Fisher Kernel