1

我想比较两张脸并得到他们的相似度——他们匹配的分数。我在互联网上搜索解决方案,但我只能找到针对一组训练图像的人脸识别,我找不到是否有人对这个问题进行过研究——我有 2 张不认识的脸,我想知道它是否是同一个人。你能给我任何线索,资源任何可以帮助我的东西吗?如果有任何实现,如果它 - C#,C++ 我尝试使用 openCV- 检测人脸,根据某些数据库识别人脸(获取特征距离)并比较欧克里德距离,那就太好了,但我收到了不好的结果。(也许我的方法是错误的,我不完全理解特征脸和 euklid 距离)

非常感谢!

4

2 回答 2

1

首先,请注意,这远非一个已解决的问题。事实上,它是计算机视觉的一个相对研究领域。请看一下Wild dataset 中的 Labeled Faces,它使用的正是您所说的任务,比较两张面孔。您特别感兴趣的是结果部分,其中报告了哪些算法(以及相应的论文)效果最好。

然而,这一切似乎都相当先进。看来您可能不太熟悉机器学习和/或计算机视觉,在这种情况下,您可能想查看这些领域的教科书。

无论哪种方式,基本的事情是这样的:你不想使用像素来比较人脸,因为它们会随着光照和姿势发生很大变化。(您应该尝试一下!)因此,您必须以一种使同一个人的面孔相似而不同人的面孔不同的方式来转换像素。这就是特征提取,可以说是人脸识别中最难也是最重要的部分。你怎么知道哪一种是改造它们的最佳方法?这就是训练数据集的用武之地。例如,如果您使用特征脸(顺便说一下,它的性能应该很差),您可以使用训练数据来获得最能代表该数据的特征向量。然后,两个比较两个面,将每个面投影到特征向量上,并使用欧几里得距离。(这与使用马氏距离相同)。

于 2012-04-01T01:35:19.563 回答
0

看来您打算做的是找到两张脸之间的相似之处。OpenCV 提供两个图像之间的基本模板匹配功能。是一个很好的解释和完整的 C 代码。

如那里所解释的,存储图像中每个点的匹配输出。教程中显示了从那里获取匹配,包括使用的各种规范化。

也遇到了这个关于使用后来的 C++ 接口进行快速模板匹配的链接,但没有亲自使用过。

如果你的脸只是面部照片,旋转、透视等几乎没有变化,那么这种基本方法应该足以满足你的需要。

于 2012-04-01T01:04:14.433 回答