天天看點

Fisher vector學習筆記

1,背景

     現有的模式分類方法主要分為兩類,一類是生成式方法,比如GMM,這類方法主要反映同類資料之間的相似度;一類是判别式方法,比如SVM,主要是反映異類資料之間的差異。fisher kernel是想要結合二者的優勢(1,生成式方法可以處理長度不一的輸入資料,2,判别式方法不能處理長度不一的資料但是分類效果較好。),将生成式模型用于判别式分類器中。

     關于處理長度不一的資料,舉例說明如下:

     我們要對一個圖檔集 I=X1,X2... 中的圖檔做分類,考慮生成式的方法,GMM,是對每一幅圖檔 Xi=x1,...xT 的特征 xi 模組化(每個 xi 是D維特征向量),T代表一幅圖檔中提取的特征點個數,是以T的大小變化,不影響GMM模組化。但是判别式分類器如SVM中是要計算樣本X之間的距離,如果每個X的特征點個數T不一樣,那麼他們的次元也就不一樣,無法計算他們之間的距離。

     論文《Exploiting generative models in discriminative classifiers》中對fisher kernel進行了理論上的一系列推導和闡述。論文《Fisher Kernel on Visual Vocabularies for Image Categorization》中fisher kernel被應用于圖像分類,本文主要參考這篇。論文《Improving the Fisher Kernel for Large-Scale Image Classification》中對fisher vector做改進。

     fisher kernel被應用于圖像分類的主要思路是,用生成式模型(GMM)對樣本輸入進行模組化,進而得到樣本的一種表示(fisher vector),再将這種表示(fisher vector)輸入判别式分類器(SVM)得到圖像分類結果。fisher vector是fisher kernel中對樣本特征的一種表示,它把一幅圖檔表示成一個向量。

     本文主要關注fisher vector。

2,fisher kernel

     核方法可以定義一種基于核函數的判别式分類器,可表示如下:

Snew=sign(∑iSiλiK(Xi,Xnew))

      Xi,Si 是訓練集中樣本i的值和它的label值,label值隻能取+1和-1,也就是分成兩類, λi 是樣本i在訓練集中所占的權重;

      Xnew,Snew 是一個新來的樣本值和分類器預測出得它的label值;

     這裡的 K(Xi,Xnew) 是一個核函數,度量新樣本 Xnew 和訓練集樣本 Xi 之間的相似度。

     是以需要确定 λ 和核函數 K(Xi,Xj) 就可以确定一種基于核的分類方法。其中 λ 可以通過做一些優化得到,而在fisher kernel中,就是利用fisher資訊矩陣得到一個核函數來度量樣本相似度。

     對于一個核函數,有如下的形式:

K(Xi,Xj)=ϕTXiϕXj.

     這裡是一個内積的形式,我們将一幅圖檔的特征們X映射到一個新的特征向量,也就是 ϕX ,那麼這個内積就是這兩個新特征向量 ϕXi,ϕXj 的歐式距離,很直覺地反映了樣本i,j之間的相似度。

     這個 ϕX 就是fisher kernel中的樣本表示方法,它就是fisher vector,它由fisher score歸一化得到, Fλ 是fisher資訊矩陣:

ϕX=F−12λUx.

     定義fisher score:

Ux=∇λlogp(X|λ).

     X服從分布p,p的參數是 λ ,在fisher kernel中,p是一個GMM, X=x1,...xT 是一幅圖檔的特征集合(可以用sift特征), λ ={ wi,μi,∑i,i=1...N },它是GMM的模型參數, wi 是GMM中第i個component的權重, μi,∑i 是均值和協方差,由高斯模型的原理可知這兩個都是向量,且和特征向量 xt 的次元一緻,都是D維(如果 xt 是一個sift特征向量,那麼它們就是128維)。

     這個log似然函數對 λ 的梯度,描述了參數 λ 在p生成特征點集合X的過程中如何作用,是以這個fisher score中也包含了GMM生成X的過程中的一些結構化的資訊。

      F−12λ 是用來對 Ux 做歸一化的,是以 Fλ=UXUTX ,這裡來證明一下這個歸一化,記 V=UX :

[(VVT)−12V]T[(VVT)−12V]=VT[(VVT)−12]T(VVT)−12V=VT(VVT)−1VVTV=1

     是以核函數就有了如下分解形式:

K(Xi,Xj)=UTXiF−1λUXj

     這裡要求 F−1λ 是半正定的,是以給F求期望: Fλ=Ex(UXUTX).

     至此,我們就能對一幅圖檔的特征點集合計算出fisher vector了。

3,計算fisher vector

     首先定義:

L(X|λ)=logp(X|λ)=∑t=1Tlogp(xt|λ).

     由于一幅圖檔中的特征點是互相獨立的,是以:

p(xt|λ)=∑i=1Nwipi(xt|λ).

      pi 是GMM中第i個component的pdf, wi 是其權值, ∑Ni=1wi=1.

component pi 的pdf是多元高斯函數,如下:

Fisher vector學習筆記

     再定義特征 xt 由第i個Gaussian component生成的機率:

Fisher vector學習筆記

     首先對參數求偏導可得到:

UX=[∂L(X|λ)∂wi,∂L(X|λ)∂μdi,∂L(X|λ)σdi]T,i=1...N.

     其中

Fisher vector學習筆記

     注意這裡i是指第i個component,d是指特征 xt 的第d維,偏導是對每個component,對特征每個次元都要計算,是以此時 UX 的次元是(2D+1)*N,D是 xt 次元,N是component個數。又由于 wi 有限制 ∑iwi=1 ,是以會少一個自由變量,是以 UX 最終的次元是(2D+1)*N-1.

     求得 UX 後,就可以求 Fλ ,設F中對角線上的元素可以表示為 fwi,fμdi,fσdi , 通過簡單的求期望運算就可以得到它們的值:

Fisher vector學習筆記

     這裡算得的矩陣F兩個次元都是(2D+1)*N-1.

     是以fisher vector

ϕX=[Xw,d,i,Xμ,d,i,Xσ,d,i]=[f−1/2wi∂L(X|λ)∂wi,f−1/2μdi∂L(X|λ)∂μdi,f−1/2σdi∂L(X|λ)∂σdi].

     次元和 UX 一樣,也是(2D+1)*N-1.

4,總結

     fisher vector的結果是對原圖像特征升維了(從D到(2D+1)*N-1),它從圖像的一種特征向量中挖掘了出更豐富的資訊,最終對 ϕX 我們可以算得對均值和協方差的梯度:

Fisher vector學習筆記

     可以看到,D維向量 xt 中的每一個值,都與均值和方差做運算,并加上權重,fisher vector中包含了原特征向量每一維的值,并且包含了生成式模組化過程的結構性資訊,對圖檔的表達更加細緻。

繼續閱讀