代码之家  ›  专栏  ›  技术社区  ›  singrium

基于无监督机器学习的图像聚类

  •  1
  • singrium  · 技术社区  · 6 年前

    我有一个包含身份证、账单和护照的图像数据库。
    我想把这些图像分为不同的组(即身份证、账单和护照)。
    正如我所读到的,完成这项任务的方法之一是集群(因为它将是无监督的)。
    我的想法是这样的:聚类将基于图像之间的相似性(即具有相似特征的图像将被分组在一起)。


    如果有人以前做过这个,或者有线索,请你推荐一些链接开始,或者建议一些有帮助的功能。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Has QUIT--Anony-Mousse    6 年前

    给一些例子贴上标签,并使用分类法。

    聚类很可能会给你聚类“带蓝色色调的图像”、“灰度扫描”和“暖色温度”。这是一个合理的方式来集群这样的图像。

    此外,k-均值对异常值非常敏感。你可能有一些在里面。

    自从你 希望

        2
  •  4
  •   Deepak Saini    6 年前

    获得良好结果的最简单方法是将问题分为两部分:

    1. 从图像中获取特征 :使用原始像素作为特征将导致较差的结果。通过预先训练好的CNN传递图像(你可以在线获得其中的一些)。然后使用最后一层CNN(就在完全连接之前)作为图像特征。
    2. 特征聚类 :获得每个图像的丰富特征后,可以对这些图像进行聚类(如K-means)。

        3
  •  1
  •   Vineet Sharma    4 年前

    我的用例有人的图像,所以我从每个图像中提取了人脸嵌入(aka Feature)向量。我使用dlib进行人脸嵌入,所以每个特征向量是128d。

    然后创建一个单独的特征向量,比如X,它由需要聚类的文件夹/组中每个图像的各个特征向量组成。

    在我的用例中,X的维数为:文件夹中图像的数量,128(即每个特征向量的大小)。例如,X的形状:50128

    该特征向量可用于拟合凝聚层次聚类。需要根据经验对距离阈值参数进行微调。

    在我的例子中,每个文件夹大约有50个图像,所以这是一个可管理的解决方案。这种方法能够将单个人的图像分组成单个簇。例如,PERSON1的15个图像属于集群0,PERSON2的10个图像属于集群2,依此类推