如何二值化 Fisher 向量?

How do I binarize Fisher Vectors?

我正在做一个学校项目,在许多任务之间,我需要根据 this paper. I was given the vl_feat library to use with Matlab and I implementd this simple tutorial 中的内容将 Fisher 向量二值化为 return 给定某些特征的 Fisher 向量。

一切正常,我成功更新了 vl_fisher 函数,将 Fisher 向量的每个维度提高到值 α ∈ [0, 1] 的幂,如第 4.1 节所述。在 α = 0 的情况下,我可以得到一个值为 {-1,0,1} 的 Fisher 向量,它是一个三元封装。

4.1 节的第二部分解释了如何将这种三进制编码转换为等效的二进制编码。我在那里有点迷路,主要是因为我正在使用一个库来 return 费舍尔矢量表示。这种表示由一个双精度向量组成,这使得遵循论文描述变得更加棘手。

所以我的问题是,如何使用 Matlab 上的 vl_feat 库对 fisher 向量进行二值化? 我只需要对三元编码进行二值化吗? 我是否应该以另一种方式计算 Fisher 向量,使它们更适合后续二值化?

提前感谢您的宝贵时间!

这个问题有 2 种可能的解决方案:

  1. 您将手放在开源库代码上并使其成为return您所需要的
  2. 您采用自己的方法对 Fisher 向量进行二值化

我最终在 Matlab 中完成了第二步,而不是把手放在 C 库上。请记住,this article 在计算对数域中的 GMM 时非常有用。我会在完成该项目后立即将我的实现作为开源发布。