的前提:
我对计算机视觉/图像处理和机器学习非常新手(幸运的是,我是信息检索方面的专家),所以请对这个肮脏的农民表示友善! :d
我的申请
我们有一个移动应用程序,用户可以在其中拍摄照片(查询),系统会返回其他用户之前拍摄的最相似的照片(数据集元素)。 时间表现至关重要,其次是精确度,最后是内存使用情况。
我的方法:
首先,很明显这是一个1-最近邻问题(1-NN)。 LSH是解决此问题的流行,快速且相对精确的解决方案。特别是,我的LSH要求是使用Kernalized Locality Sensitive Hashing来实现将d
维度向量转换为s
- 维度二进制向量(其中s<<d
)和然后使用Fast Exact Search in Hamming Space
with Multi-Index Hashing快速找到数据集中所有向量之间的精确最近邻居(转换为汉明空间)。
此外,我将使用SIFT,因为我想为我的应用程序使用强大的关键点检测器和描述符。
这个过程中有什么问题?
好吧,似乎我已经决定了一切,对吗? Actually NO:在我的链接问题中,我遇到了关于如何将单个图像的集合描述符向量表示为向量的问题。我为什么需要它?因为LSH中的查询/数据集元素是向量,而不是矩阵(而SIFT关键点描述符集是矩阵)。正如有人建议的in the comments,最常见(也是最有效)的解决方案是使用Bag of Features(BoF)模型,我对此仍然没有信心。所以,我读了this article,但我还有一些问题(请参阅下面的问题)!
问题:
第一个也是最重要的问题:您认为这是一种合理的方法吗?
k
中的k
参数 - 意味着方法)?i-th
维度是否等于分配给i-th
集群的描述符数量?答案 0 :(得分:0)
看起来您正在使用SIFT生成的一组关键点功能构建代码簿。
你可以试试&#34;高斯的混合物&#34;模型。 K-means假设关键点的每个维度都是独立的,而&#34;高斯的混合&#34;可以模拟关键点要素的每个维度之间的相关性。
我无法回答这个问题。但我记得SIFT关键点默认情况下有128个维度。您可能需要较少数量的群集,例如50个群集。
N / A
您可以尝试无限高斯混合模型或查看本文:&#34;重新审视k均值:通过贝叶斯非参数的新算法&#34;作者:Brian Kulis和Michael Jordan!
不确定我是否理解这个问题。
希望这有帮助!