機器學習筆記:Fisher Vector基本原理與用法

    近期在看的動作識別相關的工作中fisher vector及其改進版本被廣泛的應用,因此打算從Fisher Vector開始入手整理相關知識。


參考的博客內容:

http://blog.csdn.net/ikerpeng/article/details/41644197 從高斯分佈開始介紹了FV,比較易於理解

http://blog.csdn.net/happyer88/article/details/46576379

http://blog.csdn.net/garfielder007/article/details/50767716

完整介紹Fisher Vector方法的論文

"ImageClassification with the Fisher Vector: Theory and Practice"


    Fisher Vector的詳細概念可以見以上的幾篇博文(或是直接看論文)。下面主要從FV的計算步驟的角度進行介紹。首先給出以上的論文中的算法步驟做參考:


 

 

 

   對於一副圖像,提取T個描述子(比如SIFT,比如iDT),每個描述子是D維的,那麼可以用 X={xt , t= 1…T}來描述這張圖片。這裏做一個假設,假設這t個描述子獨立同分布(i.i.d)。那麼則有:


   取對數後可以得到:


   此處的lamda爲描述獨立同分布的參數。現在要用一組K個高斯分佈的線性組合(即GMM混合高斯模型)來逼近這個分佈,其參數即爲lamdaGMM模型可以用下式描述:


   其中pi爲第i個高斯分佈

   

   以下參數lamda注意此處的lamda在計算FV時是已知量,是預先通過GMM求解得到的先驗值


   wi爲係數,wi>=0,sum(wi)=1。另外兩個參數爲高斯分佈中的平均值和標準差。

   在計算之前先定義佔有概率,即特徵xt由第i個高斯分佈生成的概率:


   對各個參數求偏導可以得到


   注意此處的i是指第i個高斯分佈,d是指xt的第d維,因此得到的結果數目爲 w:K-1個;均值:K*D個;標準差K*D個。因此共有(2D+1*K-1個偏導結果,這裏的-1是由於wi的約束。

   在計算完之後,還需要進行歸一化。對三種變量分別計算歸一化需要的fisher matrix的對角線元素的期望:


   此處T爲最開始的描述子的數目。最終歸一化後的fisher vector的結果爲:


   在上面提及的”Image Classification with the Fisher Vector: Theory andPractice“一文中,對最後的歸一化步驟進行了改進。先對fisher vector中的每個值做功率歸一化,再對fisher vectorL2正則化得到最後的結果。

 

   綜上所述,基於Fisher Vector的圖像學習的完整過程應該描述爲下面幾個步驟。

1.選擇GMMK的大小

1.用訓練圖片集中所有的特徵(或其子集)來求解GMM(可以用EM方法),得到各個參數;

2.取待編碼的一張圖像,求得其特徵集合;

3.GMM的先驗參數以及這張圖像的特徵集合按照以上步驟求得其fv

4.在對訓練集中所有圖片進行2,3兩步的處理後可以獲得fishervector的訓練集,然後可以用SVM或者其他分類器進行訓練。

 

   經過fisher vector的編碼,大大提高了圖像特徵的維度,能夠更好的用來描述圖像。FisherVector相對於BOV的優勢在於,BOV得到的是一個及其稀疏的向量,由於BOV只關注了關鍵詞的數量信息,這是一個0階的統計信息;FisherVector並不稀疏,同時,除了0階信息,Fisher Vector還包含了1階(期望)信息、2階(方差信息),因此FisherVector可以更加充分地表示一幅圖片。

發佈了33 篇原創文章 · 獲贊 225 · 訪問量 50萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章