如何根据面部特征对人脸进行聚类?

Posted

技术标签:

【中文标题】如何根据面部特征对人脸进行聚类?【英文标题】:How to cluster faces of persons based on facial landmarks? 【发布时间】:2018-07-13 21:25:05 【问题描述】:

我正在使用 dlib 获取面部标志。我有超过 1000 张面孔的数据集。我想将这 1000 张图像与一些未知图像进行比较。为了减少数据库搜索时间,我想根据 dlib 的 68 个面部特征将这 1000 张图像聚类到 10 个不同的聚类中。目前,我正在根据不同人脸图像的下巴到鼻子的距离进行聚类。

问题:同一个人的每张图像都会生成不同的面部标志,这会影响从下巴到鼻尖的距离计算。请找到csv的截图

    第一列 - 人脸图像名称(同一人脸,大约 25 样品) 第 2、3 列 - Kmeans 聚类标签和列的质心 4 4th - 下巴到鼻尖的欧式距离 第 5 - 68 个长 dlib 面部标志,分别为下巴、眼睛 ....

问题:

    根据面部标志对图像进行聚类是正确的方法吗?如果不是,那么对人脸图像进行聚类/人脸分组以使数据库搜索对更多图像更有效的最佳方法是什么?

我尝试过性别分类,但准确度不好。尝试使用面部颜色/种族分类,但这限制了我的范围。例如,只有亚洲/欧洲面孔会让我再次搜索所有数据库

我无法确定哪个是集群的正确因素。非常感谢任何对文章或想法的引用。

【问题讨论】:

如果集群是你想要的:考虑其他方法,比如 FaceNet(人脸 -> 欧几里得空间嵌入;至少一个非常流行的基于 python 的实现:openface 甚至有这个例子)。对于查询的东西,你可能应该更多地研究其他方向,学习散列和合作。如果您在度量空间(facenet)中:近似最近邻搜索。 为什么不用dlib自带的人脸聚类示例程序呢? blog.dlib.net/2017/02/…。我猜你是从那里看到 dlib 的中文窃窃私语代码的? 谢谢@sascha,是的,这样更合适。 谢谢@Davis King,我会检查的。 是:dlib.net/face_clustering.py.html 【参考方案1】:

我指定的聚类方式不适用于面部图像。最好使用卷积神经网络来训练特征,而不是手动计算与面部地标的距离。

稍后在这些训练好的特征上,我们可以应用任何流行的聚类算法,如下所示:https://arxiv.org/pdf/1604.00989.pdf 或如@sascha 建议的,Approximate Nearest Neighbor 或@Davis King 根据您的需要建议的中国耳语。

正如@sascha 所建议的,有许多深度学习库(例如 openface)在 torche/tensorflow 之上执行此操作。

【讨论】:

我不太确定这是否是分类/聚类问题。 @DavisKing,在他的 dlib 图书馆中使用了中文耳语。为什么 ?为什么不是基于树的最近邻居?一个原因可能是使用基于图的算法来提高速度。还有其他原因吗?也许这取决于我们的应用程序?

以上是关于如何根据面部特征对人脸进行聚类?的主要内容,如果未能解决你的问题,请参考以下文章

按周对多个特征进行聚类

dlib库包的介绍与使用,opencv+dlib检测人脸框opencv+dlib进行人脸68关键点检测,opencv+dlib实现人脸识别,dlib进行人脸特征聚类dlib视频目标跟踪

使用Chinese Whispers算法的人脸聚类

基于GCN的人脸聚类算法1——LGCN

根据与 LDA 主题/特征集群的相似性对文本进行分组

2021-01-21