【发布时间】:2013-09-14 07:09:08
【问题描述】:
我正在测试图像检索中的一些东西,并且我正在考虑如何整理数据集的不良图片。例如,只有房屋的照片,而在两者之间有一张人和一些汽车的照片。所以最后我只想得到房子。 目前我的方法如下:
- 计算所有图片的描述符 (Sift)
- 使用 k-means 聚类所有描述符
- 通过计算聚类中心与图片描述符之间的欧几里德距离来创建图片的直方图
- 再次聚类直方图。
此时我得到了第一类(这不是很好)。现在我的想法是用len(center) > 1将所有聚集到一个中心的照片一次又一次地聚集在一起。这样的结果是,在一个中心的特定图片将被整理出来。也许它足以再次将结果拟合到相同的 k-means 而无需再次聚类?!
结果并不令人满意,所以也许有人有一个好主意。
对于聚类等。我正在使用 scikit learn 的 k-means。
【问题讨论】:
-
出于好奇,您的语料库中有多少张图片,您为每张图片提取了多少描述符,以及您为描述符的聚类计算了多少中心(视觉词词汇的大小)?
-
“数据集”的大小在 100 - 1000 之间变化。目前该项目最多有 150 张图片,每张图片在 1000 到 4500 desc 之间 => 大约 250 000 desc -> k-的子采样表示为 25 000。K 设置为 sqrt(n/2),其中 n = 数据点(第一步)=> K 介于 100 和 300 之间),然后创建直方图和聚类直方图。 (第二步)大约有 6 到 10 个中心。我会尝试你的答案并发布它是如何工作的......我正在考虑使用 scipy 的“scipy.cluster.hierarchy”。
-
您可能需要更多数据。
标签: python computer-vision cluster-analysis scikit-learn k-means