【问题标题】:Two faces comparision两张脸对比
【发布时间】:2012-04-15 03:34:12
【问题描述】:

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

非常感谢!

【问题讨论】:

    标签: c# c++ opencv face-recognition eigen


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢,到目前为止,我试图根据训练向量分解这些人脸——它给了我与每个训练集的距离数组,但是当我通过欧几里得距离“平均”时,它给了我可怕的结果- 同一个人的照片比不同人的脸有更大的距离
    • 对一组人使用相似性并不是一个坏主意——有几篇论文以更复杂的方式做到了这一点。但仅仅使用普通的 RGB 图像和欧几里得特征可能在大多数情况下都行不通。人脸识别比看起来要困难得多!
    【解决方案2】:

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

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

    也遇到过这个link关于使用后来的C++接口进行快速模板匹配的,不过个人没用过。

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

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 2013-06-14
      • 2016-09-21
      • 2019-07-17
      • 2012-09-21
      • 2023-03-08
      • 1970-01-01
      • 2021-01-19
      • 2012-07-25
      相关资源
      最近更新 更多