Professional Documents
Culture Documents
Presented by
Mohammad Sadegh Riazi
Rice University
1 /26
Outline
Introduction
What is FLANN?
Which programming languages does it support?
Applications
Approaches
Randomized k-d Tree Algorithm
The Priority Search K-Means Tree Algorithm
Experiments
Data Dimensionality
Search Precision
Automatic Selection of the Optimal Algorithm
Scaling Nearest Neighbor Search
What we are going to do
References
2 /26
Outline
Introduction
What is FLANN?
Which programming languages does it support?
Applications
Approaches
Randomized k-d Tree Algorithm
The Priority Search K-Means Tree Algorithm
Experiments
Data Dimensionality
Search Precision
Automatic Selection of the Optimal Algorithm
Scaling Nearest Neighbor Search
What we are going to do
References
3 /26
What is FLANN?
4 /26
Which Programming Languages
does it support?
Written in C++
Contains a binding for:
C
MATLAB
Python
5 /26
Outline
Introduction
What is FLANN?
Which programming languages does it support?
Applications
Approaches
Randomized k-d Tree Algorithm
The Priority Search K-Means Tree Algorithm
Experiments
Data Dimensionality
Search Precision
Automatic Selection of the Optimal Algorithm
Scaling Nearest Neighbor Search
What we are going to do
References
6 /26
Applications
Cluster analysis
Pattern Recognition
Statistical classification
Computational Geometry
Data compression
Database
7 /26
Outline
Introduction
What is FLANN?
Which programming languages does it support?
Applications
Approaches
Randomized k-d Tree Algorithm
The Priority Search K-Means Tree Algorithm
Experiments
Data Dimensionality
Search Precision
Automatic Selection of the Optimal Algorithm
Scaling Nearest Neighbor Search
What we are going to do
References
8 /26
Approaches
Multiple Randomized k-d Tree Algorithm
9 /26
Approaches
The priority search K-Means Tree algorithm
Partitioning data into K distinct regions
Recursively partitioning each zone until the
leaf node which has no more than K items
Pick up the initial centers using random
selection Gonzales algorithm
I max is number of iterations of making
regions
Better performance than k-d tree for higher
precisions
10 /26
Approaches
Complexity Comparison
11 /26
Outline
Introduction
What is FLANN?
Which programming languages does it support?
Applications
Approaches
Randomized k-d Tree Algorithm
The Priority Search K-Means Tree Algorithm
Experiments
Data Dimensionality
Search Precision
Automatic Selection of the Optimal Algorithm
Scaling Nearest Neighbor Search
What we are going to do
References
12 /26
Experiments
Data Dimensionality
13 /26
Experiments
Data Dimensionality
14 /26
Experiments
Search Precision
15 /26
Experiments
Automatic Selection of the Optimal Algorithm
16 /26
Experiments
How to find the best internal parameters
First using Global Grid Search to find a zone on parameter plane in order to
achieve better performance
Then Local optimizing using Nelder-Mead downhill simplex method
Can choose optimizing on all data sets or portion of it
Do this for all available algorithms
17 /26
Outline
Introduction
What is FLANN?
Which programming languages does it support?
Applications
Approaches
Randomized k-d Tree Algorithm
The Priority Search K-Means Tree Algorithm
Experiments
Data Dimensionality
Search Precision
Automatic Selection of the Optimal Algorithm
Scaling Nearest Neighbor Search
What we are going to do
References
18 /26
Scaling Nearest Neighbor Search
19 /26
Scaling Nearest Neighbor Search
Distribute NN matching among N machines using Map-Reduce like algorithm
Each machine will only have to index and search 1/N of the whole data
The final result of NNS is obtained by merging the partial results from all the
machines in the cluster once they have completed the search
Using Message Passing Interface (MPI) specification
The query is sent from a client to one of the computers in MPI cluster
(Master server)
The master server broadcasts the query to all of the processes in the cluster
Each process run NNS in parallel on its own fraction of the data
When the search is complete an MPI reduce operation is used to merge the
results back to master process and the final results is returned to the client
20 /26
Scaling Nearest Neighbor Search
Implementing using Message Passing Interface (MPI)
21 /26
Outline
Introduction
What is FLANN?
Which programming languages does it support?
Applications
Approaches
Randomized k-d Tree Algorithm
The Priority Search K-Means Tree Algorithm
Experiments
Data Dimensionality
Search Precision
Automatic Selection of the Optimal Algorithm
Scaling Nearest Neighbor Search
What we are going to do
References
22 /26
What we are going to do
Developing and
simulating an approach
for pre processing the
input queries to get the
better performance
Try to group the input
data so that we do not
need to search though
all data in the tree
Trade off between
Throughput and Latency
23 /26
References
[1] 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]
[2] Marius Muja and David G. Lowe: "Fast Matching of Binary Features".
Conference on Computer and Robot Vision (CRV) 2012. [PDF] [BibTeX]
[3] 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]
24 /26
Thank you for your attention
/26
Questions ?
/26