-1

我正在做一个项目,作为我课堂课程的一部分。它是一个高级数据库管理系统项目,它是这样的。

1)下载大量图片(1000,000)-->完成

2)根据它们的视觉相似性对它们进行聚类

a) 查找每个图像的直方图 --> 完成

b)现在根据它们的视觉相似性对图像进行分组(聚类)。

现在,我遇到了第 2b 部分的问题。这是我所做的:

A)我使用 matlab 找到了每个图像的直方图,现在使用一维向量(16 X 16 X 16)来表示它。单个向量中有 4096 个值。

B)我生成了一个 ARFF 文件。它具有以下格式。有 1000,000 个直方图(每个图像 1..因此文件中有 1000,000 行)和每行 4097 个值(image_name + 4096 个双值表示直方图)

C) 文件大小为 34 GB。最大的问题:我到底要如何聚类这个文件???

我尝试使用 WEKA 和其他在线工具。但他们都挂了。Weka 卡住并说“正在读取文件”。

我的桌面上有 8 GB 的 RAM。我无权访问任何集群。我尝试使用谷歌搜索,但找不到任何关于聚类大型数据集的有用信息。如何对这些条目进行聚类?

这就是我的想法:

方法一:

我应该分批做 50,000 个吗?就像,对前 50,000 个条目进行聚类。找到尽可能多的可能集群,称它们为 k1,k2,k3...kn。

然后选择接下来的 50,000 个并将它们分配给这些集群之一,等等?这将是所有图像的准确表示吗?因为,聚类仅基于前 50,000 张图像!

方法二:

上述过程是否使用随机 50,000 个条目?

任何一个输入?

谢谢!

编辑1:

可以使用任何聚类算法。

4

2 回答 2

1

对独立的图片集多次运行它会导致难以合并的不同簇簇。因此,两个相似的图像被放置在不同的集群中。我将为一组随机图像(尽可能大)运行聚类算法,并使用这些聚类定义对所有其他图像进行排序。

备选方案:降低数据的复杂性,例如减少到 1024 个双精度值的直方图。

于 2013-11-13T01:05:21.047 回答
1

Weka 也不是你最好的。我发现ELKI在集群方面更强大(而且速度更快)。我跑过的最大的对象是 128 个维度的约 300 万个对象。

但是,请注意,在这种大小和维度上,您主要关心的是结果质量

如果您运行例如 k-means,则结果基本上是随机的,因为您使用了 4096 个直方图箱(太多了,特别是平方欧几里得距离)。

要获得好的结果,您需要退后一步思考

  1. 是什么让两个图像相似。如何衡量相似度?首先验证您的相似性度量。

  2. 哪种算法可以使用这种相似性概念?首先在一个小数据集上验证算法。

  3. 如何使用索引或并行来扩展算法?

根据我的经验,颜色直方图在 8 个色相 x 3 个饱和度 x 3 个亮度范围内效果最佳。除此之外,分箱粒度太细。再加上它会破坏您的相似性度量

如果您运行 k-means,则添加更多数据将一无所获。它搜索统计平均值,添加更多数据不会找到不同的平均值,而只会找到更多的精度数字。因此,您也可以使用仅包含 10k 或 100k 图片的样本,您将获得几乎相同的结果。

于 2013-11-13T07:57:47.247 回答