First step towards fully replacing flann with faiss. This is to mitigate pycolmap crashes related to flann as well as improve runtime of various indexing operations:
- Add feature descriptor index implementation based on faiss. Provides better precision and runtime than flann.
- Replace visual index flann implementation with faiss. Tuned faiss index parameters provide roughly on-par retrieval precision/recall with flann. faiss is much faster. There is room for improvement by tuning the index parameters further in the future.
- Add option to load legacy flann visual index and automatically upgrade it to faiss. This will be used to upgrade our existing vocabulary trees with faiss.
In a follow-up PR, we will remove flann and replace replace the flann-based vocabulary trees with faiss indexes (to be uploaded to github).