如何将SIFT/SURF用作机器学习算法的特征?

8
我正在解决一个自动图像注释问题,即尝试将标签与图像关联起来。为此,我使用了SIFT特征进行学习。但问题是所有的SIFT特征都是一组关键点,每个关键点都有一个2-D数组,而且关键点的数量非常庞大。我该选择多少个关键点并如何将它们提供给我的学习算法,因为该算法通常只接受一维特征?

请参考以下链接的回答,其中包含有关编程的相关内容: http://stackoverflow.com/a/36795946/1197132 - Halis Yılboğa
4个回答

4
你可以将单个SIFT表示为“视觉词”,它是一个数字,并将其用作SVM输入,我认为这正是你所需要的。通常通过k-means聚类完成。
这种方法被称为“词袋”,并在本文中描述。 方法的简短介绍回顾

1
Sift和Surf是不变特征提取器。因此,匹配特征将有助于解决许多问题。
但是,在两个不同的图像中,并非所有点都相同(在相似性问题的情况下也是如此),因此您应该使用与其他点匹配的特征。
另一个问题是这些算法提取了大量特征,这些特征在大型数据集中无法匹配。
有一个好的解决方案,称为“视觉单词袋”。
完整的视觉单词袋已经得到了很好的实现,可以参考https://github.com/dermotte/LIRE。这里是lire Demo网站。
如果您了解视觉单词袋,则代码非常简单,您也可以进行修改。
获取视觉词后,您应该使用搜索引擎中使用的信息检索方法。顺便提一下,Lire还包括一个名为lucene的信息检索库。您应该遵循Lire的方式,直到完全理解并实现自己的方式。

1

你应该阅读关于SIFT的原始论文,它告诉你什么是SIFT以及如何使用它。你应该仔细阅读第7章和其余章节,以了解如何在实践中使用它。

这里是原始论文的链接


我的问题并不在于SIFT本身,我理解它的输出是一组关键点,每个关键点有128个值。即使我考虑只取前10个关键点,我需要处理的值的数量也是128 x 10,这是非常庞大的,所以有没有什么方法可以对这些关键点进行降维或其他处理呢? - sreeraag

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接