Python 如何对数据集中每个人的图像进行聚类?

Python 如何对数据集中每个人的图像进行聚类?,python,opencv,Python,Opencv,我有一个目录,其中包含许多不同面孔的图像,这些图像由网络摄像头捕获。 每个人的脸在一段时间内被捕捉10-20次(例如:人物形象:img_01、img02、img19、img20;人物形象:img_03、img13、img14等) 我想对每个人的所有图像进行聚类,并将其分组为一组,这样我就有了与人数一样多的聚类。(例如:如果目录中有10张人脸和50张图像,那么我应该得到10个聚类,或者算作10个)。我可以采用什么方法对同一个人的图像进行分组。我正在研究Python。请在这方面帮助我 这就是我的文件

我有一个目录,其中包含许多不同面孔的图像,这些图像由网络摄像头捕获。 每个人的脸在一段时间内被捕捉10-20次(例如:人物形象:img_01、img02、img19、img20;人物形象:img_03、img13、img14等)

我想对每个人的所有图像进行聚类,并将其分组为一组,这样我就有了与人数一样多的聚类。(例如:如果目录中有10张人脸和50张图像,那么我应该得到10个聚类,或者算作10个)。我可以采用什么方法对同一个人的图像进行分组。我正在研究Python。请在这方面帮助我


这就是我的文件夹的外观->单击1查看屏幕截图您可以使用一种称为k-means的技术。这将获取一个数据集,并将其分为$k$个不同的集群。如果你知道你有10个人,你可以将$k$设置为10

但是,你需要考虑一个图像是非常高的维度。您需要找到一种方法,通过特征提取来减少此集合。这可以通过几种不同的方式实现。如果您使用的是openCV,那么您可以直接获得人的鼻子和眼睛的距离,以及所有这些。这些可以是很好的标识符度量。否则,我建议您构建一种类型的自动编码器,然后使用压缩集作为k-means算法的特征


检测面部特征 OpenCV有很多功能,可以完成大量的面部检测工作。我建议使用中介绍的以下技术。这将检测鼻子、眼睛和面部形状。从这些点,您可以计算一些指标。我建议使用几个不同的比率

  • 眼睛之间的距离:从鼻子到眼睛的距离
  • 眼角之间的距离:嘴角之间的距离
  • 你可以继续发挥创造力,获得更多的指标

    获取数据集 然后,您将构建一个数据集,其中的行是每个单独的图片。然后,每列将代表一个特征。这将是您使用图像计算的这些比率

    对数据集应用k-means
    然后,您可以使用k-means的sklearn包,它有一个示例代码

    能否请您详细介绍一下自动编码器和压缩集的功能?您的数据当前是什么样子的?只是图片?我已经添加了我的数据截图的链接。我做了编辑,添加了更多信息。