Summary: | For many computer vision and machine learning problems, large training sets are key for good
performance. However, the most computationally expensive part of many computer vision and machine
learning algorithms consists of finding nearest neighbour matches to high dimensional vectors
that represent the training data. We propose new algorithms for approximate nearest neighbour
matching and evaluate and compare them with previous algorithms. For matching high dimensional
features, we find two algorithms to be the most efficient: the randomized k-d forest and a new
algorithm proposed in this thesis, the priority search k-means tree. We also propose
a new algorithm for matching binary features by searching multiple hierarchical clustering trees
and show it outperforms methods typically used in the literature. We show that the optimal nearest
neighbour algorithm and its parameters depend on the dataset characteristics and describe an
automated configuration procedure for finding the best algorithm to search a particular dataset.
In order to scale to very large datasets that would otherwise not fit in the memory of a single
machine, we propose a distributed nearest neighbour matching framework that can be used with any
of the algorithms described in the thesis. All this research has been released as an open source
library called FLANN (Fast Library for Approximate Nearest Neighbours), which has been incorporated
into OpenCV and is now one of the most popular libraries for nearest neighbour matching.
|