如何使用SIFT / SURF作为机器学习算法的功能?

时间:2013-11-18 06:20:39

标签: opencv image-processing machine-learning sift feature-extraction

我正在处理一个自动图像注释问题,我试图将标签与图像相关联。为此我试图用SIFT功能进行学习。但问题是所有的SIFT特征都是一组关键点,每个关键点都有一个二维数组,关键点的数量也很大。如何为我的学习算法提供它们,通常只接受一个-d features?

4 个答案:

答案 0 :(得分:3)

您可以将单个SIFT表示为“视觉词”,这是一个数字,并将其用作SVM输入,我认为这是您所需要的。它通常由k-means聚类完成。

此方法称为“词袋”,并在this paper中进行了描述。

Short presentation review of method

答案 1 :(得分:1)

你应该阅读关于SIFT的原始论文,它告诉你什么是SIFT以及如何使用它,你应该仔细阅读第7章并休息以了解如何实际使用它。 这是原始论文的link

答案 2 :(得分:1)

您可以使用Bag of Words方法,您可以在以下帖子中阅读:

http://gilscvblog.wordpress.com/2013/08/23/bag-of-words-models-for-visual-categorization/

答案 3 :(得分:1)

Sift and Surf是不变的特征提取器。匹配功能将有助于解决许多问题。

  • 但是存在匹配问题,因为在两个不同的图像中所有点可能不相同。 (在相似性问题的情况下)。因此,您应该使用与其他人匹配的功能。

  • 另一个问题是这种算法提取了许多在大型数据集中无法匹配的特征。

对于那些被称为“Bag of Visual Word”的问题有一个很好的解决方案

https://github.com/dermotte/LIRE完整的视觉词包完全实现。这是lire Demo网站。

如果您知道可以修改的视觉词包,代码非常简单。

获得视觉词后,您应该使用搜索引擎中使用的信息检索方法。顺便说一句,Lire还包括一个名为lucene的信息检索库。你应该放弃里拉方式,直到你得到完整的想法并实现自己的想法。