Locality-Sensitive Hashing (LSH) 是一種用於快速解決高維空間內近似最近鄰查找的算法,基於該算法思想和相關文獻,並參照 Wei Dong 所實現的 lshkit , 實現了一個近似最近鄰查找庫 LSHBOX , 該庫支持 Linux , windows 和 mac 等多種操作系統以及 C , C++ , MATLAB 和 Python 等多種編程語言,可利用 CMake 進行編譯。
LSHBOX 所實現的 LSH 算法有:
- 基於隨機位抽樣的局部敏感哈希 LSH Based on Random Bits Sampling
- 基於隨機超平面的局部敏感哈希 LSH Based on Random Hyperplane
- 基於 p 穩定分佈的局部敏感哈希 LSH Based on p-Stable Distributions
- 基於閾值的局部敏感哈希 LSH Based on Thresholding
- 譜哈希 Spectral Hashing (SH)
- 迭代量化 Iterative Quantization (ITQ)
根據我自己的測試中, ITQ 算法效率較高,推薦研究並使用,具體項目和參考文獻請查看 項目主頁
。
下圖是利用該庫進行圖像檢索所得到的效果,所用的特徵是基於 SIFT 的 BOW 特徵。