行爲識別筆記:Stacked Fisher Vector基本原理

 Stacked Fisher VectorXiaojiang Peng在“Action Recognition with Stacked Fisher Vectors”一文中提出的用於動作識別的算法。SFVFV結合的方法達到了當時state-of-the-art的結果。

   上一篇介紹了Fisher Vectors的基本原理。FV的碼書訓練與編碼過程爲:

1.選擇GMMK的大小

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

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

3.GMM的先驗參數以及這張圖像的特徵集合求得其fishervector

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

   iDT描述子爲例,在iDT特徵的生成過程中,是在整段視頻中提取描述子的集合,再用FV進行編碼獲得Fisher Vector。這樣的編碼對圖像局部的特徵有很好的表示能力,但難以描述更全局,更復雜的結構。因此作者提出了一種“deep”的結構,將兩個FV編碼層堆疊在一起,就得到了Stacked Fisher Vector。其結構如下圖所示:


第一層FV

   給定一個大小爲W*H*L的視頻V,首先先做時間-空間域上的子空間採樣,如下圖所示,此處各個方向上可以取幾個固定的長度,比如width可以取W/2,W;height可以去H/2,H;time上取(L/3,2L/3,L)等。通過掃描可以獲得大量的subvolumes。由於本文中用到的iDT特徵是一種軌跡特徵,因此在獲取子空間後會做一個篩選,去掉軌跡數目少於一個給定閾值的子空間。


   對於每個子空間,計算其iDT特徵,定義其長度爲d。在進行FV編碼之前,特徵要先用PCA+Whitening做解相關,以滿足GMM的獨立同分布假設。然後用預學習的GMM模型(size of K1)對其進行fv編碼,得到一個fv,長度爲2*K1*d(原版的fv長度應該是(2*D+1)*K-1,此處應該是算法做了簡化),記作ai,此處每個fv編碼最後的歸一化步驟使用的是Power+L2歸一化。將M個子空間中得到的ai做集合,則得到一個fv的集合 A={a1,a2….aM},稱作local FVs。在得到A後,還要對A整體做L2歸一化。最後A的大小爲2*K1*D*M,可以看出其維度很高。

 

第二層FV

第一層得到的Local FVs維度過高,因此需要先做降維,本文中使用max-margin降維算法進行降維,將Aai的維度從2*K1*d降低到pp與第一層FV輸入特徵長度相近。

降維後與第一層FV相似,需要用PCA+Whitenting做解相關。之後就可以做第二層FVsize of K2)。第二層同樣用power+L2正則化。文中提到第二層的結果要在entire videos再做aggregate,此處不是很明白,因爲第一層應該已經用了entire videos的信息了。所以我的理解是第一層的視頻是整段視頻中的一段,第二層則將每段的結果做FV後聚合成一個完整的用來描述視頻的特徵。

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