关于Sift描述符和Fisher向量的PCA

时间:2015-02-05 17:00:00

标签: matlab computer-vision feature-detection pca mixture-model

我正在阅读这篇特别的论文http://www.robots.ox.ac.uk/~vgg/publications/2011/Chatfield11/chatfield11.pdf,我发现带有GMM词汇表的Fisher Vector非常有趣,我想自己测试一下。

然而,(对我而言)它们如何在数据上应用PCA维数减少是完全不清楚的。我的意思是,他们是否计算了特征空间,一旦计算出它们就会对它进行PCA计算?或者他们只是在计算SIFT后对每个图像执行PCA,然后创建特征空间?

这应该是针对两个训练测试集吗?对我而言,这显然是“是”。回答,但不清楚。

我正在考虑从训练集创建特征空间,然后在其上运行PCA。然后,我可以使用来自训练集的PCA系数来减少每个图像的筛选描述符,该描述符将被编码为Fisher Vector以供以后分类,无论是测试还是火车图像。

编辑1;

简单示例:

[coef , reduced_feat_space]= pca(Feat_Space','NumComponents', 80);

然后(对于测试和火车图像)

reduced_test_img = test_img * coef;(然后选择reduced_test_img的前80个维度)

你怎么看?干杯

1 个答案:

答案 0 :(得分:1)

在我看来他们先做SIFT然后做PCA。文章在第2.1节中说明"本地描述符在所有实验中被修复为SIFT描述符......"

也在介绍部分"以下三个步骤:(i)提取 局部图像特征(例如,SIFT描述符),(ii)图像描述符中的局部特征的编码(例如,量化的局部特征的直方图),以及(iii)分类......最近几位作者关注于改进第二个组件" 所以它在我看来,在SIFT之后发生了降维,而论文只是简单地讨论了几种不同的方法,以及每种方法的性能

我也会猜测(就像你一样)你必须在两组图像上运行它。否则,您将使用两个不同的指标来对图像进行分类,就像将苹果与橙子进行比较一样。将缩小的维度表示与完整的表示(即使对于相同的精确图像)进行比较将显示一些变化。事实上,这是PCA的整个前提,你放弃了一些较小的功能(通常)来提高计算效率。 PCA或任何降维算法的真正问题是我可以放弃多少信息并且仍可靠地对不同数据集进行分类/分段

最后一点,你必须以同样的方式对待这两个图像,因为你的最终目标是使用Fisher Feature Vector进行分类为 test training 。现在想象你决定训练图像不要得到PCA和测试图像。现在我给你一些图片X,你会用它做什么?在您对一组图像进行分类之前,您怎么能区别对待另一组图像呢?在两个集合上使用相同的技术意味着您处理我的图像X然后决定放置它的位置。

无论如何,我希望有所帮助,并没有像咆哮一样。祝你好运: - )