2

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

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

我问是因为,我注意到在使用 FLANN 之前使用体素过滤器会降低 x10 倍的速度,并希望弄清楚将其归因于什么。体素过滤器去除了数据中 70% 的点,但速度下降似乎要大得多。

4

1 回答 1

3

FLANN 使用这些算法(define.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 WITH AUTOMATIC ALGORITHM CONFIGURATION, Mins, Lowe, 2009,它提到:

在我们的实验中,两种算法中的一种获得了最佳性能,具体取决于数据集和所需的精度。这些算法使用分层 k-means 树多个随机 kd-trees

第 3.3 节回答了您关于 FLANN 如何选择它出现的算法(从样本中)作为手头最好的算法的问题。这是其中的一半:

在此处输入图像描述

于 2020-10-19T21:12:07.220 回答