行為識別筆記:Stacked Fisher Vector基本原理
Stacked Fisher Vector是Xiaojiang Peng在“Action Recognition with Stacked Fisher Vectors”一文中提出的用於動作識別的演算法。SFV與FV結合的方法達到了當時state-of-the-art的結果。
上一篇介紹了Fisher Vectors的基本原理。FV的碼書訓練與編碼過程為:
1.選擇GMM中K的大小
1.用訓練圖片集中所有的特徵(或其子集)來求解GMM(可以用EM方法),得到各個引數;
2.取待編碼的一張影象,求得其特徵集合;
3.用GMM的先驗引數以及這張影象的特徵集合求得其fishervector;
4.
以iDT描述子為例,在iDT特徵的生成過程中,是在整段視訊中提取描述子的集合,再用FV進行編碼獲得Fisher Vector。這樣的編碼對影象區域性的特徵有很好的表示能力,但難以描述更全域性,更復雜的結構。因此作者提出了一種“deep”的結構,將兩個FV編碼層堆疊在一起,就得到了Stacked Fisher Vector。其結構如下圖所示:
第一層FV:
給定一個大小為W*H*L的視訊V,首先先做時間-空間域上的子空間取樣,如下圖所示,此處各個方向上可以取幾個固定的長度,比如
對於每個子空間,計算其iDT特徵,定義其長度為d。在進行FV編碼之前,特徵要先用PCA+Whitening做解相關,以滿足GMM的獨立同分布假設。然後用預學習的GMM模型(size of K1)對其進行fv編碼,得到一個fv,長度為2*K1*d(原版的fv長度應該是(2*D+1)*K-1,此處應該是演算法做了簡化),記作ai,此處每個fv編碼最後的歸一化步驟使用的是
第二層FV:
第一層得到的Local FVs維度過高,因此需要先做降維,本文中使用max-margin降維演算法進行降維,將A中ai的維度從2*K1*d降低到p,p與第一層FV輸入特徵長度相近。
降維後與第一層FV相似,需要用PCA+Whitenting做解相關。之後就可以做第二層FV(size of K2)。第二層同樣用power+L2正則化。文中提到第二層的結果要在entire videos再做aggregate,此處不是很明白,因為第一層應該已經用了entire videos的資訊了。所以我的理解是第一層的視訊是整段視訊中的一段,第二層則將每段的結果做FV後聚合成一個完整的用來描述視訊的特徵。