The proposed method allows to create an approximate kNN graph in C++ for the diffusion application. Then the retrieval is tested and the performance are the same or better than the ones obtained on the brute-force graph, but in less time (due to the reduction in the approximate kNN graph creation).
The original dataset files are converted in binary through the application of a simple C++ script:
After downloading the dat files you need to create a folder called dataset and then put in the uncompressed version.
Remember to modify the path in the C++ files.
- Requirements:
- G++ 5.4 or greater
- openmp
- cblas
- Build:
g++ -o LSH_sparse LSH_sparse.cpp -lstdc++fs -std=c++14 -fopenmp -O2 -lcblas
LSH kNN (δ = 6, L = 20, th = 5000, using global descriptors):
./LSH_sparse 6 20 oxford5k false 5000 0 ResNet50
multi LSH kNN graph (δ = 6, L = 20, th = 5000, 80% of multi-probe LSH, using global descriptors):
./LSH_sparse 6 20 oxford5k false 5000 80 ResNet50
For the diffusion application the python script implemented in the alzaman/paiss github is used.
| Configuration | LSH projection | kNN graph creation | mAP |
|---|---|---|---|
| LSH kNN graph (δ = 6, L = 20) | 0.45 s | 0.52 s | 90.97% |
| LSH kNN graph (δ = 8, L = 10) | 0.4 s | 0.94 s | 88.98% |
| multi LSH kNN graph (δ = 6, L = 2) | 0.29 s | 1.54 s | 91.13% |
| NN-descent (1) | - | 55 s | 83.81% |
| RP-div (2) | - | 1.16 s | 82.68% |
| brute-force | - | 1.33 s | 90.79% |
| Configuration | LSH projection | kNN graph creation | mAP |
|---|---|---|---|
| LSH kNN graph (δ = 6, L = 20) | 23 s | 77 s | 92.50% |
| LSH kNN graph (δ = 8, L = 10) | 15 s | 145 s | 90.79% |
| multi LSH kNN graph (δ = 6, L = 4) | 5s | 420 s | 92.85% |
| brute-force | - | 4733 s | 91.45% |
@article{magliani2019efficient,
title={An Efficient Approximate kNN Graph Method for Diffusion on Image Retrieval},
author={Magliani, Federico and McGuiness, Kevin and Mohedano, Eva and Prati, Andrea},
journal={arXiv preprint arXiv:1904.08668},
year={2019}
}
@inproceedings{dong2011efficient,
title={Efficient k-nearest neighbor graph construction for generic similarity measures},
author={Dong, Wei and Moses, Charikar and Li, Kai},
booktitle={Proceedings of the 20th International Conference on World Wide Web},
pages={577--586},
year={2011},
organization={ACM}
}
@inproceedings{sieranoja2018fast,
title={Fast random pair divisive construction of kNN graph using generic distance measures},
author={Sieranoja, Sami and Fr{\"a}nti, Pasi},
booktitle={Proceedings of the 2018 International Conference on Big Data and Computing},
pages={95--98},
year={2018},
organization={ACM}
}