【问题标题】:How can PCA be used for SIFT or VLAD vectors?PCA 如何用于 SIFT 或 VLAD 向量?
【发布时间】:2017-01-09 15:05:15
【问题描述】:

我正在阅读很多关于 VLADFisher Vectors (FV) 的论文。特别是,在this 论文(以及基本上所有讨论该主题的论文)中,作者使用 PCA 来减少 SIFT、VLAD 和 FV 维度。

但是,据我了解,PCA 涉及计算协方差矩阵的特征值,而我们只能计算方阵的特征值。

现在,假设我们要计算 1M SIFT 向量的 PCA。我们如何在 1Mx128 矩阵上计算 PCA?

我从this 的问题中了解到 SVD 是一种替代方案,但我很惊讶,因为在任何论文中都没有人谈论过 PCA!我错过了什么?

【问题讨论】:

    标签: opencv matrix pca sift svd


    【解决方案1】:

    VLAD 和 Fisher 向量的实现有效地倾向于使用 PCA 来降低图像块的维数。大多数论文报告的典型值是 DIM=64,并且使用 1M 个补丁,这使得直接应用 SVD 变得困难。

    我已经看到使用此处报告的迭代算法的 SIFT 的 PCA 实现:https://en.wikipedia.org/wiki/Principal_component_analysis#Iterative_computation

    【讨论】:

    • 感谢您的回答。你能建议我一个大约 50 万字的高效 c++ pca 实现吗?
    • 我们在我之前的实验室中使用的 SIFT 的 PCA 实现是专有的(不幸的是)。两种最流行的 Fisher Vectors 实现是:1) INRIA 一种 (lear.inrialpes.fr/src/inria_fisher) 和 2) Oxford 的 VLFeat 一种 (vlfeat.org/overview/encodings.html)。两者都可能提到 VLAD。也许是调查他们如何处理那里的 PCA 的好地方。
    猜你喜欢
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2017-01-30
    • 2014-03-30
    • 2017-04-04
    • 1970-01-01
    • 2019-12-11
    相关资源
    最近更新 更多