我正在尝试实施Bag of Features模型。
给定属于初始数据集的描述符矩阵对象(表示图像),计算其直方图很容易,因为我们已经知道每个描述符向量属于哪个簇来自k-means。
但是,如果我们想要计算查询矩阵的直方图呢?我想到的唯一解决方案是计算每个矢量描述符与每个k
聚类质心之间的距离。
这可能是低效的:假设k=100
(所以100个质心),那么我们有一个通过1000个SIFT描述符表示的查询图像,所以矩阵为1000x100
。
我们现在要做的是在1000 * 100
维度中计算128
eucledian距离。这似乎效率很低。
如何解决这个问题?
注意:你能否建议我解释这一点的一些实现?
注意:我知道LSH是一个解决方案(因为我们使用的是高调的向量),但我不认为实际的实现会使用它。
更新
我正在与我的一位同事交谈:使用分层集群方法而不是经典的k-means,应该加快这个过程!如果我们拥有k
质心,使用层次聚类,我们只需进行log(k)
比较以找到最接近的质心而不是k
比较,这是正确的吗?
答案 0 :(得分:1)
对于一包特征方法,您确实需要量化描述符。是的,如果您有10000个功能和100个功能10000 * 100距离(除非您在此处使用索引)。 相比之下,将10000个特征中的每个特征与数据库中每个图像的10000个特征进行比较。它听起来还不错吗?