FisherVector编码的来龙去脉
最近在看動作識別的相關論文,其中有一篇名為two-stream convolutional networks for action recognition in videos的論文在做特征融合時使用到了FisherVector,之前沒有接觸過,所以搜了一下相關的帖子,看到一篇不錯的轉載過來,后期會對這篇論文寫一下概要
這篇blog比較好的地方我認為是對GMM(高斯混合模型)以及似然函數(Likelihood Function)介紹的比較清楚,看過之后也確實對解決之前不了解的,存在疑惑的地方有所幫助
轉自https://blog.csdn.net/shanyicheng1111/article/details/76978029
-------------------------------以下為原文-----------------------------
最近在研究動作識別(Action Recognize)領域的論文和方法。在視頻動作識別領域,深度學習未進入前,傳統方法最好的是iDT.?
IDT采用FisherVector編碼的方式比BOF(Bog of Features)提升了2%-10%.
BOF的編碼方式,最終的視頻特征維度是CodeBook的size大小。原理如圖:)丑到不忍直視...
FiserVector編碼方式,由兩部分組成
首先是由樣本分布估計GMM(高斯混合模型)參數,
然后用GMM模型對視頻原始的iDT特征進行描述(編碼)。
所以不管是BOF還是FisherVector都是相對于Codebook的一種描述。
GMM算法
GMM ,Gaussian Mixture Model,顧名思義,就是說該算法由多個高斯模型線性疊加?混合而成。GMM算法描述的是每一維數據的本身存在的一種分布,如果component足夠多的話,GMM可以逼近任意一種概率密度分布。
我們知道,單個高斯模型的參數為均值和方差。
GMM是一種聚類算法,K代表用多少個高斯模型去描述數據分布。也就是說每個 GMM 由K個Gaussian分布組成,每個Gaussian稱為一個“Component”,這些 Component 線性加成在一起就組成了 GMM 的概率密度函數:
根據數據來推算概率密度通常被稱作 density estimation ,特別地,當我們在已知(或假定)了概率密度函數的形式,而要估計其中的參數的過程被稱作“參數估計”。表示第k個高斯模型的權重,是第k個高斯模型的均值。是第k個高斯模型的方差。
在 GMM 中,我們就需要確定?、?和?這些參數。 找到這樣一組參數,它所確定的概率分布生成這些給定的數據點的概率最大,而這個概率實際上就等于?,我們把這個乘積稱作似然函數 (Likelihood Function)。通常單個點的概率都很小,許多很小的數字相乘起來在計算機里很容易造成浮點數下溢,因此我們通常會對其取對數,把乘積變成加和,得到 log-likelihood function 。接下來我們只要將這個函數最大化,通常采用EM算法。
?進行GMM聚類后,得到的是K個高斯模型的參數,每個高斯模型的參數是?、?和?,所以一共有3KD個參數。(其中D是原始數據的維度,因為每一個GMM是對每一維數據特征進行生成建模的)。
FisherVector編碼
???? 上述生成了GMM模型后,我們就可以在此基礎上對原始數據特征進行編碼。
定義fisher score:?
?????
X服從分布p,p的參數是(、?,? k = 1...K)在fisher kernel中,p是一個GMM,? 是一個視頻的特征集合(iDT中D=426).這個log似然函數對?的梯度,描述了參數?在p生成特征點集合X的過程中如何作用,所以這個fisher score中也包含了GMM生成X的過程中的一些結構化的信息。所以有一種說法,FisherVector的本質是對高斯分布求偏導。
再定義特征由第i個Gaussian component生成的概率:
首先對參數求偏導可得到:?
?????其中?
?????注意這里i是指第i個component,d是指特征?的第d維,偏導是對每個component,對特征每個維度都要計算,所以此時?的維度是(2D+1)*K,D是維度,K是component個數,wi是上述高斯混合模型中Gaussian 分布的權重。又由于?有約束,所以會少一個自由變量,所以?最終的維度是(2D+1)*K-1.
推導到這里,視頻的原始特征iDT應該變為(2D+1)*K-1維FisherVector。在iDT論文中使用的是2DK維,可能是舍棄了高斯混個模型中對權重wi的求導。
參考博客 :
http://blog.csdn.net/happyer88/article/details/46576379
http://blog.csdn.net/ikerpeng/article/details/41644197
http://blog.pluskid.org/?p=39
總結
以上是生活随笔為你收集整理的FisherVector编码的来龙去脉的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tensorflow编程遇到的问题汇总【
- 下一篇: tensorflow详解-tf.nn.c