Fisher Kernel & Fisher Vector

简介

图像检索中,用来提纯特征,与BoVW和VLAD类似。

综合转载以下文章:

Fisher Kernel

核的作用,在吴恩达的机器学习课程中讲过,用于低维向量转化为高维向量训练线性分类器时,为了减少内积运算量,采用的一种trick。

其中,$I$表示Fisher Information Matrix。Fisher Kernel提出了一种数据项$x_i$和$x_j$相似度的度量方法,而且可以应用于任何kernel-based分类器,比如支持向量机。

Fisher Vector

似然函数

对于一幅图像,假设有$T$个特征点(图像已完成预处理,已进行特征提取),那么图像可以表示为:

如果假设这些特征$x_t$符合i.i.d(独立同分布),于是就有:

取对数(连乘的运算较联和复杂得多,所以用取对数进行简化):

其中$θ$为$x_t$的特征参数。

Gaussian Mixture Model混合高斯模型

高斯混合模型,是一种用有限个高斯混合模型进行概率密度函数逼近的方法。

其中,

代入

这样上2式就可以用3、4式带入得到具体的表达式,并且$θ=\{W_k(权值),U_k(均值),∑_k(方差)\}$,则对参数$θ$的估计,就有了明确的对象,即对样本的权值、均值、方差进行估计。这时:

对似然函数$L(X;θ)$进行$θ$一阶导求解,对于GMM模型下的$θ$一阶导,即对$L(X;θ)$进行$\{W_k,U_k,∑_k\}$一阶导求解:

利用EM算法进行优化,得到:

因为很多采用内积的判别式分类器要求我们输入的必须是归一化的特征向量,这里需要引入Fisher Information Matrix (Fisher信息矩阵。简称FI,表示为I )进行归一化。

FI

FI说白了就是FV/FK这套算法里,构造出来的一个矩阵,它包含数据的丰富信息,对于计算有很大帮助。对于上6式,我们令:

FI的近似解:

归一化

已经知道了了FI的表达式,那么利用I 进行归一化。令归一化前:

令归一化后:

得到最终形式:

到此,就完成了FV的推导计算。

由于每个特征是$D$维,而需要$K$个高斯分布的线性组合,公式关于每个高斯模型的参数求导可得$2D+1$维向量,而GMM模型可能会之和为$1$,带来一维冗余,则一个Fisher Vector的维数为$(2D+1)K-1$。

Fisher Vector之所以可以用来做特征分类,还是因为利用了Fisher核,注意到它的形式为

而$I$就是信息矩阵,$U$就是Score Function。而Fisher向量的归一化后的每一项,都是

如果两个Fisher Vector做内积,正好可以得到Fisher核,

算法步骤

给定两组样本X,Y:

  1. 计算Fisher score,(这里需要用到GMM和EM算法进行似然估计,完成最优化计算);

  1. 计算Fisher Information Matrix:

  1. 计算Fisher kernel:

  1. 等价计算分类判别函数

为什么Fisher Vector比高斯分布有效

我们将一张图近似为一个高斯分布,由这个高斯分布来表示这张图像。假设我们是做目标的检测,那么当你得到一个有相同的高斯分布的图的时候你就可以判断出这就是那个目标了。但实际的情况是却不一定是这样的,我们看一张图:

这两张图上特征点的分布在黑色的区域,二者的分布却可以一样。由此,我们知道,在高斯分布的基础上我们再找到变化的方向,我们便可以更加准确的表示这一张图。

总结

还是有些懵,知其然而不知其所以然……

一分一毛,也是心意。