【问题标题】:Bag of feature: how to create the query histogram?一袋功能:如何创建查询直方图?
【发布时间】:2016-06-23 19:33:15
【问题描述】:

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

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

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

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

我们现在要做的是计算128 维度中的1000 * 100 欧几里得距离。这似乎效率很低。

如何解决这个问题?

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

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

更新:

我正在和我的一位同事交谈:使用分层集群方法而不是经典的 k-means,应该会大大加快这个过程!如果我们有k 质心,如果我们有一个层次聚类,我们是否必须只进行log(k) 比较才能找到最接近的质心而不是k 比较?

【问题讨论】:

  • 您是对的,对于每个1000 特征,您需要找到它们对应的中心来构建直方图。每个查询矩阵有 1000 个最近邻查询。处理 NN 的有 kd-trees、随机森林、乘积量化和 LSH 等等。每个人都有自己的长处和短处。
  • 感谢您的 cmets。我认为你是对的,我认为你提出的解决方案的要点是关于向量维数和速度。例如,LSH 以快速(和近似)的方式用于高维。你同意吗?另外,你知道一些 BoF 在高维空间中的实现吗?
  • Kd-trees 和随机森林都是精确的解决方案,而产品量化可以是,LSH 是一个近似值。这些方法通常结合起来(例如乘积量化和 kd-tree)来解决像你这样的问题。对于实施遵循研究,我需要谷歌,就像你一样。
  • 你能看看this的问题吗?
  • 请看UPDATE部分:)

标签: cluster-analysis k-means


【解决方案1】:

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

【讨论】:

  • 感谢您的回答。通过“量化描述符”,我认为您的意思是减少它的维度,加快匹配操作。据我所知,LSH 是这种方法最(唯一?)的解决方案。无论如何,“除非你在这里使用索引”是什么意思?另外,你知道一些利用量化的高维向量(如 SIFT)的 BoF 实现吗?
  • 你能看看this的问题吗?
  • 请看UPDATE部分:)
  • 对于这种 k-means 用例,量化比“聚类”更合适(质量不太重要)。分层聚类比 k-means 昂贵得多
  • 在获取集群的时间上是的,但是创建直方图呢?
猜你喜欢
  • 2017-07-27
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
相关资源
最近更新 更多