根据图像的相似性对图像进行聚类

时间:2019-10-19 11:01:35

标签: machine-learning image-processing computer-vision cluster-analysis unsupervised-learning

基于图像的相似度,我面临一个图像聚类的问题,却不知道聚类的数量。理想情况下,我想实现类似于http://cs231n.github.io/assets/cnnvis/tsne.jpeghttp://cs231n.github.io/understanding-cnn/的图片,这是卷积神经网络的结果,它表示它学习的组)

因为我对它们的分类不感兴趣(我不知道类别),所以我对它们的“视觉”特性最感兴趣:颜色,形状,渐变等。 我发现有许多文章建议使用算法,例如DBSCAN,t-SNE甚至k-means,但是有更好的解决方案吗?有一些建议使用HOG变换,但老实说,不知道如何将它们缝合在一起。

因此,总结来说,我如何根据图像的颜色和形状属性(在2D平面上,将其划分为组,文件夹等等)?

2 个答案:

答案 0 :(得分:1)

t-SNE实际上非常适合您要尝试做的事情。

  

t分布随机邻居嵌入(t-SNE)是   (获奖)减少尺寸的技术   特别适合于高维的可视化   数据集。

您可以详细了解here

与往常一样,sklearn具有非常人性化的TSNE object,可以快速尝试。

我希望这对您有帮助...

答案 1 :(得分:0)

我可能理解为什么人们不赞成这个问题:因为多年的相关帖子几乎没有任何好的答案,而且这个问题非常复杂。更重要的是,

不幸的是,图像信息维数高于2D。您链接的照片只是从高维空间到平面的投影,不一定代表实际空间的外观。这种特定的投影主要是关于颜色的,不是吗?而且仍然不完美,因为问题不是二维的。这同样适用于尝试将群集压缩到文件夹中-在大多数情况下,试用失败。

但是,您正确地指出了问题中的特定比较维度: 如何根据图像的颜色和形状属性(在2D平面上将其分成组,文件夹等)?

解决方案是专注于您感兴趣的相似维度/指标。例如。特别是“此图片是否包含圆圈?”并为此进行优化。但是,如果您想要一个“正方形”,那么您已经处于另一个维度。如果要优化颜色,则可以查看“整体红色”。添加的指标越多,集群维度就越高。

我们的看法是这样的。我们针对特定的摘要指标,例如标量值,是不同维度上加权指标的总和(排名问题)。例如,如果您想要带有“眼睛”的照片,则无需担心颜色变化。反之亦然,如果您更关心颜色,则形状就不那么重要了。

根据我的经验,当图像群集相对统一时,群集会更容易。例如。每个潜在群集中的图片在某种程度上非常相似。例如,一组是“桥”,另一组是“脸”。如果您对任何可能的物体(甚至是噪点)都有非常多样化的图像,那么除非您指定要精确分组的对象,否则解决方案将很棘手。