我读了一些关于 LSH 的论文,我知道它用于解决近似的 k-NN 问题。我们可以将算法分为两部分:
给定一个任意值的
D
维度(whereD
很大)向量,用一组N
(whereN<<D
)散列函数将其转换为N
维度的二进制向量。使用汉明距离,对从阶段 1 获得的给定二进制代码集应用一些搜索技术以找到 k-NN。
N
关键是使用 XOR计算维度向量的汉明距离很快。
无论如何,我有两个问题:
如果我们使用像 ORB 这样的二进制描述符,第 1 点仍然是必要的吗?既然 ORB 的描述符已经是二进制的,我们使用汉明距离来比较它们,为什么我们要执行第一点呢?
SIFT 描述的图像如何转换?每个 SIFT 描述符为 128 位,每个图像由一组描述符描述。所以我们有矩阵
descX128
(其中desc
是使用的描述符的数量),而 LSH 通常接受向量作为输入。