2015-04-14 27 views
1

我正在開展一個學校項目,並且在許多任務之間,我需要按照this paper中所寫的內容對Fisher矢量進行二進制化。我得到了vl_feat庫與Matlab一起使用,並且我實現了這個簡單的tutorial以返回賦予某些特徵的費舍爾向量。如何二元化Fisher矢量?

一切工作正常,我成功地更新了vl_fisher函數,以將費希爾向量的每個維度提升爲值4.1∈[0,1]中的值α∈[0,1]的冪。在α= 0的情況下,我可以得到一個值爲{-1,0,1}的費舍爾矢量,它是一個三元組合。

4.1節的第二部分解釋瞭如何將此三元編碼轉換爲等效的二進制編碼。我在那裏迷失了一點,主要是因爲我正在使用庫來返回費舍爾向量表示。這種表示由一個雙精度矢量組成,它使得遵循紙張描述更加棘手。

所以我的問題是,如何在Matlab上使用vl_feat庫二進制Fisher向量? 我只需要二元化三元編碼? 我是否應該用另一種方式計算Fisher矢量,以使它們更適合於後續的二值化?

在此先感謝您的時間!

+0

根據報紙上的解釋,原來他們做了一個非常簡單的事情:每一個元素是兩個有符號變量相乘的因素:\三角洲和W上。爲了使它成爲二進制,他們似乎將一個正值賦值爲1,而將非正值賦值爲0.另外,由於這些值是實數,實際上預計在三元向量中有多個0? – Shervin

+0

我認爲我仍然缺少一些東西,正如你所說的,每個元素都是兩個有符號變量的乘法因子。第一個是按照你所說的編碼,而δ的每個維度都是根據它的符號在一個位上編碼的。還有一些複雜的問題,vlFeat,給定一個特徵向量,將fisher表示作爲一個雙精度數組返回。我可以得到一個三元編碼(alpha = 0),但是從那裏我不知道如何在前面。我不認爲簡單地將三元編碼的正值映射到一個而不是正值爲0是一種方式,但我可能又錯了。 – G4bri3l

回答

1

對於這個問題的兩個可能的解決方案:

  1. 你把你的手放在開源庫中的代碼,並使其返回你所需要的
  2. 你實現你自己的方式以二進制化漁民矢量

我結束了在Matlab中的第二步,而不是把我的手放在C庫上。請記住,this article在計算日誌域中的GMM時非常有用。一旦我完成了項目,我會盡快將我的實現作爲開源發佈。

+0

你能把它鏈接嗎? :) – justHelloWorld