我正在使用vlfeat的kdtree,它实现了FLANN的kd-tree,它可以处理高维数据。但是,现在我有一个由128x15000数据集构建的kdtree,kd树查询的任何内容都减慢了8秒查询速度。这是kd树的限制吗? FLANN也应该是一个更快速优化的kdtree ...
我现在还有其他选择吗?
答案 0 :(得分:1)
尝试使用David M. Mount和Sunil Arya 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,这是实现快速性能的关键部分。