密集的SIFT比SIFT更适合词袋吗?

时间:2013-02-05 14:38:31

标签: opencv computer-vision classification feature-extraction

我正在使用OpenCV实现Bag-of-Words图像分类器。最初我测试了在SURF关键点中提取的SURF描述符。我听说Dense SIFT(或PHOW)描述符可以更好地用于我的目的,所以我也试过它们。

令我惊讶的是,他们表现得差得多,实际上差了近10倍。我能做错什么?我正在使用OpenCV的DenseFeatureDetector获取关键点。我从9层中提取每个图像大约5000个描述符,并将它们聚类成500个簇。

我应该从VLFeat库中尝试PHOW描述符吗?另外,我不能在OpenCV的SVM实现中使用chi square内核,这在许多论文中都是推荐的。这对分类器质量至关重要,我应该尝试另一个库吗?

另一个问题是尺度不变性,我怀疑它可能受到密集特征提取的影响。我是对的吗?

1 个答案:

答案 0 :(得分:8)

这取决于问题。您应该尝试不同的技术,以了解什么是最适合您的问题的技术。当您需要对任何类型的场景进行分类时,通常使用PHOW非常有用。 您应该知道PHOW与Dense SIFT略有不同。几年前我使用过vlfeat PHOW,看到代码,它只是调用不同大小的密集筛选,以及一些平滑。这可能是一个能够不变规模的线索。 同样在我的实验中我使用了libsvm,结果直方图交叉对我来说是最好的。默认情况下,chi-square和histogram相交内核不包含在libsvm和OpenCV SVM中(基于libsvm)。您是决定是否应该尝试它们的人。我可以告诉你,RBF内核实现了近90%的准确度,直方图交叉度为93%,卡方为91%。但这些结果都在我的具体实验中。您应该使用自动调整的params开始使用RBF,并查看它是否足够。

总结一切取决于您的具体实验。但是如果你使用Dense SIFT,也许你可以尝试增加簇的数量,并以不同的比例调用Dense SIFT(我推荐你的PHOW方式)。

编辑:我在看OpenCV DenseSift,也许你可以从

开始
m_detector=new DenseFeatureDetector(4, 4, 1.5);

知道vlfeat PHOW使用[4 6 8 10]作为箱子大小。