特征包:如何创建查询直方图?

Bag of feature: how to create the query histogram?

我正在尝试实施 Bag of Features 模型。

给定一个属于初始数据集的描述符矩阵对象(表示图像),计算其直方图很容易,因为我们已经知道每个描述符向量属于哪个簇来自 k-means。

但是如果我们想计算查询矩阵的直方图呢?我想到的唯一解决方案是计算每个向量描述符与每个 k 簇质心之间的距离。

这可能是低效的:假设 k=100(所以 100 个质心),那么我们有一个通过 1000 个 SIFT 描述符表示的查询图像,所以矩阵 1000x100.

我们现在要做的是在 128 维度上计算 1000 * 100 欧几里得距离。这看起来真的很低效。

如何解决这个问题?

注意:你能给我一些解释这一点的实现建议吗?

注意:我知道 LSH 是一种解决方案(因为我们使用的是高暗向量),但我认为实际的实现不会使用它。

更新:

我和我的一个同事聊天:使用层次聚类方法而不是经典的 k-means,应该可以大大加快这个过程!如果我们有 k 个质心,对于层次聚类,我们只需要进行 log(k) 比较即可找到最接近的质心而不是 k 比较,这样说是否正确?

对于一袋特征方法,您确实需要量化描述符。是的,如果你有 10000 个特征和 100 个特征 10000*100 距离(除非你在这里使用索引)。 将此与将 10000 个特征中的每一个与数据库中每个图像的 10000 个特征中的每一个进行比较。听起来还是那么糟糕吗?