使用vlfeat慢速kd-tree查询,更快的替代方案?

时间:2012-07-27 22:32:58

标签: kdtree vlfeat

我正在使用vlfeat的kdtree,它实现了FLANN的kd-tree,它可以处理高维数据。但是,现在我有一个由128x15000数据集构建的kdtree,kd树查询的任何内容都减慢了8秒查询速度。这是kd树的限制吗? FLANN也应该是一个更快速优化的kdtree ...

我现在还有其他选择吗?

4 个答案:

答案 0 :(得分:1)

尝试使用David M. Mount和Sunil Arya ANN(近似最近邻搜索)

http://www.cs.umd.edu/~mount/ANN/

答案 1 :(得分:0)

真的那么慢吗?你使用什么参数/设置?

除此之外,我可以推荐FLANN

答案 2 :(得分:0)

VLFeat实现了FLANN建议的算法(多个随机树和分层k均值树)。也许对于您的情况,算法选择或参数集(或两者)都是不正确的。尝试原始的FLANN或OpenCV的FLANN实现(好吧,或者基于VLFeat实现自己的实现)以获得正确的算法和参数。

答案 3 :(得分:0)

我的猜测是你一次查询一个数据点。也许你想立即将所有查询作为矩阵发送,就像文档中的这个函数调用一样:

[index, distance] = vl_kdtreequery(kdtree, X, Q, 'NumNeighbors', 10, 'MaxComparisons', 15);

请注意,它将MaxComparisons的数量限制为15,这是实现快速性能的关键部分。