FLANNselect如何使用什么算法和参数?

How does FLANN select what algorithm and parameters to use?

FLANN(Fast Library for Approximate Nearest Neighbors)是一个用于在高维空间中执行快速近似最近邻搜索的库。它包含一组我们发现最适合最近邻搜索的算法,以及一个根据数据集自动选择最佳算法和最佳参数的系统。 FLANN 是用 C++ 编写的,包含以下语言的绑定:C、MATLAB、Python 和 Ruby。 https://github.com/mariusmuja/flann

FLANN 可用的算法有哪些?它如何选择要使用的算法和参数?

我问是因为,我注意到在使用 FLANN 之前使用体素过滤器时速度降低了 10 倍,我想弄清楚是什么原因造成的。体素过滤器去除了数据中70%的点,但速度下降似乎更大。

FLANN 使用这些算法 (defines.h):

FLANN_INDEX_LINEAR
FLANN_INDEX_KDTREE          
FLANN_INDEX_KMEANS 
FLANN_INDEX_COMPOSITE 
FLANN_INDEX_KDTREE_SINGLE
FLANN_INDEX_HIERARCHICAL
FLANN_INDEX_LSH     

第 2 节,最后一段,来自 FAST APPROXIMATE NEAREST NEIGHBORS 使用自动算法配置,Mins,Lowe,2009,它提到:

In our experiments, one of two algorithms obtained the best performance, depending on the dataset and desired precision. These algorithms used either the hierarchical k-means tree or multiple randomized kd-trees.

第 3.3 节回答了您的问题,即 FLANN 如何选择它(从示例中)看起来最好的算法。这是一半: