Creation of an approximate kNN graph for diffusion application
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.
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}
}