快速近似最近邻搜索库 FLANN - Fast Library for Approximate Nearest Neighbors

What is FLANN?

FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces. It contains a collection of algorithms we found to work best for nearest neighbor search and a system for automatically choosing the best algorithm and optimum parameters depending on the dataset.

FLANN is written in C++ and contains bindings for the following languages: C, MATLAB and Python.

News

  • (14 December 2012) Version 1.8.0 is out bringing incremental addition/reamoval of points to/from indexes
  • (20 December 2011) Version 1.7.0 is out bringing two new index types and several other improvements.
  • You can find binary installers for FLANN on the Point Cloud Library project page. Thanks to the PCL developers!
  • Mac OS X users can install flann though MacPorts (thanks to Mark Moll for maintaining the Portfile)
  • New release introducing an easier way to use custom distances, kd-tree implementation optimized for low dimensionality search and experimental MPI support
  • New release introducing new C++ templated API, thread-safe search, save/load of indexes and more.
  • The FLANN license was changed from LGPL to BSD.

How fast is it?

In our experiments we have found FLANN to be about one order of magnitude faster on many datasets (in query time), than previously available approximate nearest neighbor search software.

Publications

More information and experimental results can be found in the following papers:

  • Marius Muja and David G. Lowe: "Scalable Nearest Neighbor Algorithms for High Dimensional Data". Pattern Analysis and Machine Intelligence (PAMI), Vol. 36, 2014. [PDF] [BibTeX]
  • Marius Muja and David G. Lowe: "Fast Matching of Binary Features". Conference on Computer and Robot Vision (CRV) 2012. [PDF] [BibTeX]
  • Marius Muja and David G. Lowe, "Fast Approximate Nearest Neighbors with Automatic Algorithm Configuration", in International Conference on Computer Vision Theory and Applications (VISAPP‘09), 2009 [PDF] [BibTeX]

Getting FLANN

The latest version of FLANN can be downloaded from here:

  • Version 1.8.0 (14 December 2012)
    Changes:

    • incremental addition and removal of points to/from indexes
    • more flexible index serialization
    • replaced TBB multi-threading support with OpenMP
    • bug fixes
    • NOTE: Due to changes in the library, the on-disk format of the saved indexes has changed and it is not possible to load indexes saved with an older version of the library.

If you don‘t want to compile FLANN from source you can try the binary installers prepared by the Point Cloud Library (PCL) project here (Ubuntu/Debian PPAWindows Installers and Mac OS X Universal Binary).

If you want to try out the latest changes or contribute to FLANN, then it‘s recommended that you checkout the git source repository: git clone git://github.com/mariusmuja/flann.git

If you just want to browse the repository, you can do so by going here.

System requirements

The FLANN library was developed and tested under Linux. A C++ compiler is required to build FLANN. The Python bindings require the presence of the Numerical Python (numpy) package.

Conditions of use

FLANN is distributed under the terms of the BSD License.

Questions/Comments

If you have any questions or comments please email them to: [email protected].

Please report bugs or feature requests using github‘s issue tracker.

from: http://www.cs.ubc.ca/research/flann/

时间: 2024-10-14 18:32:05

快速近似最近邻搜索库 FLANN - Fast Library for Approximate Nearest Neighbors的相关文章

OpenCV K-d树实现之FLANN (Fast Library for Approximate Nearest Neighbors) 算法实现及解析

k-d树搜索最近点,在opencv中使用FLANN算法,其包含: 1:建树   2.查询 程序见下: #include "kdtree.h" #include <iostream> #include <iomanip> #include "cv.h" #include "highgui.h" #include <fstream> #include "cv.h" #include "

【计算机视觉】OpenCV的最近邻开源库FLANN

FLANN介绍 FLANN库全称是Fast Library for Approximate Nearest Neighbors,它是目前最完整的(近似)最近邻开源库.不但实现了一系列查找算法,还包含了一种自动选取最快算法的机制. flann::Index_类 该类模板是最近邻索引类,该类用于抽象不同类型的最近邻搜索的索引. 以下是flann::Index_类的声明: template <typename T> class #ifndef _MSC_VER FLANN_DEPRECATED #e

facebook 相似性搜索库 faiss

faiss 个人理解: https://github.com/facebookresearch/faiss 上把代码clone下来,make编译 我们将CNN中经过若干个卷积/激励/池化层后得到的激活映射(向量形式)存储到硬盘上, Faiss是一个高效的相似性搜索和密集向量聚类的库.它包含了搜索任意大小的向量集合的算法,这些算法可能不适合RAM.它还包含用于评估和参数优化的支持代码.Faiss是用c++编写的,带有Python/numpy的完整包装.一些最有用的算法是在GPU上实现的.它是由Fa

添加自定义库到 Simulink Library Browser

Matlab/Simulink:添加自定义库到 Simulink Library Browser 分类: 步骤: 1.创建自定义库.在 Simulink Library Browser 窗口中,选择菜单 File | New -> Library,加入所需的常用模块,并保存(例如:mySimLib.mdl): 2.新建一个slblocks.m,其内容如下: function blkStruct = slblocks   Browser.Library = 'mySimLib';   Browse

【3】facebook大数据搜索库faiss使用——选择Index

选择Index并不明显,有几个问题可以帮助选择Index. 是否需要精确结果 使用Flat. IndexFlat2是唯一能保证精确结果的Index.它为其他Index提供了对比标准.它不会压缩向量,不支持带标签添加,只能顺序添加.所以,如果你需要add_with_ids,使用IDMap,Flat. 内存是否有限制 请注意Faiss所有的Index都是存储在RAM里的,如果不需要精确结果,而同时RAM是有限的,在该限制下,我们在精度-速度中间进行衡量选择.可以考虑下面的问题: 内存充足无限制:使用

[转帖]运行时库(runtime library)

运行时库(runtime library) https://blog.csdn.net/xitie8523/article/details/82712105 没学过这些东西 或者当时上课没听 又或者 世一大的老师没好好讲 只顾着开公司赚钱了. 2018年09月15日 11:34:33 xisuesuexi 阅读数 593 一切从   默认库“LIBCMTD”与其他库的使用冲突,请使用 /NODEFAULTLIB:library. error LNK2005: XXX已经在 libcmtd.lib

sklearn:最近邻搜索sklearn.neighbors

http://blog.csdn.net/pipisorry/article/details/53156836 ball tree k-d tree也有问题[最近邻查找算法kd-tree].矩形并不是用到这里最好的方式.偏斜的数据集会造成我们想要保持树的平衡与保持区域的正方形特性的冲突.另外,矩形甚至是正方形并不是用在这里最完美的形状,由于它的角.如果图6中的圆再大一些,即黑点距离目标点点再远一些,圆就会与左上角的矩形相交,需要多检查一个区域的点,而且那个区域是当前区域双亲结点的兄弟结点的子结点

背景建模技术(三):背景减法库(BGS Library)的基本框架与入口函数main()的功能

背景减法库(BGS Library = background subtraction library)包含了37种背景建模算法,也是目前国际上关于背景建模技术研究最全也最权威的资料.本文将更加详细的介绍背景减法库(BGS Library)的基本框架与入口函数main()的功能. BGS库的整体框架在背景建模技术(二)中已经全部给出,此处从函数的角度再次给出BGS库的基本框架,有利于代码的修改与维护. 如下图所示是基于C++的BGS库的函数流程图: 接下来将会对每个函数进行更加详细的分析. 首先,

[快速学会Swift第三方库] Eureka篇

[快速学会Swift第三方库] Eureka篇 Eureka可以帮你简单优雅的实现动态table-view表单.它由rows,sections和forms组成.如果你的app包含大量表单,Eureka可以真正帮你节省时间. 目录 快速学会Swift第三方库 Eureka篇 目录 编码之前 导入 Eureka 其他操作 创建表单 基础表单 选择类型表单 Segment风格选择器 标准选择器 pickerView风格选择器 三种风格选择器效果对比 带输入框的表单 自定义Row 深入学习 编码之前 导