【问题标题】:Face identification with opencv使用opencv进行人脸识别
【发布时间】:2011-08-01 14:57:28
【问题描述】:

我正在使用 OpenCV 库在 C++ 中进行图像处理,这是我的问题:您是否认为可以通过比较框架来进行面部识别(根据照片数据库说出人的名字)使用图像直方图比较技术在数据库中使用图像的摄像机? (请注意,我使用 opecv 库中包含的示例仅比较图像的面部区域)。

我问这个是因为我刚刚尝试做一个像上面这样的程序但是我有很多问题(我经常检测到错误的人)

【问题讨论】:

  • 如果你找到方法,请告诉我。你正面临一个极具挑战性的问题。如果相机从侧面指向人怎么办?还是略高于?还是从下面?如果他们戴上眼镜并把它们摘下来怎么办?等
  • 我假设相机指向拍摄照片的同一侧
  • 不过,如果他们转身,图像就不一样了
  • 你能给我推荐一个比较人脸的好方法吗?
  • 不,不是真的,否则我会写一个答案:(您可以尝试使用图像中不同区域的直方图。

标签: image opencv image-processing video computer-vision


【解决方案1】:

您可能希望从编译Face Detection using OpenCV 示例开始。正如其他人所指出的,一般的面部识别并不是一个容易解决的问题。 EigenFaces 是一种比较容易理解和实现的常用人脸识别技术。

正如其他人所说,这是一个难题,但这为您提供了一个起点。

【讨论】:

  • 我还没有在我的程序中使用过那段代码!我的问题不是人脸识别,而是人脸识别的比较
  • 我认为应该使用特征脸概念。使用 OpenCV 查找帧中人脸和数据库中照片的特征值和特征向量。如果它们相同,则特征值的相关性应该接近 1。或者您可以找到特征向量之间的欧几里得距离 - 它们应该是等距的。还阅读主成分分析(PCA)应该会有所帮助。请在此处发布您的最终解决方案。
【解决方案2】:

我使用过的一些方法是

专用于此任务的数据集和基准是labeled faces in the wild。您可以在此处找到检测后比较人脸的工作方法的参考。

更新:
我有一个关于人脸聚类实验的描述:无监督人脸识别。 实验描述在Section 4.4 of my thesis
基本流程如下

  1. 度量学习:如何确定两张脸是否属于同一个人。
    这部分是有监督的,因为它需要作为输入的人脸图像,上面标有每张照片中出现的人的身份。

    一个。检测基准点(眼睛、嘴角、鼻子)。
    您可以使用this code,或更新的版本,例如this one

    b.在检测到的基准点处提取 SIFT 描述符。

    c。构造一个“人脸描述符”:每个人脸都使用一个单个向量来描述。
    该向量是所有 SIFT 描述符的 sqrt 的串联。

    d。使用here 描述的方法来学习不同人脸之间的马氏距离。

  2. 无监督人脸识别:一旦学会了一个指标,你就可以使用人的新照片(这些人不需要是训练集的一部分,你可以使用前所未见人的照片!)。

    一个。重复阶段 a-c,为每个输入人脸构造相同的“人脸描述符”向量。

    b.使用学习的马氏距离比较描述符向量。

【讨论】:

  • 基于论文的答案!所以你在这个领域做了一些研究。感谢您分享您的发现。
  • @IwanKelaiah 谢谢。我希望你会发现它有用。我在my web page 上有一些相关的 Matlab 代码。
【解决方案3】:

我建议使用现有算法,例如 Luxand FaceSDK 中可用的算法:http://www.luxand.com/facesdk/,而不是尝试开发自己的算法。

【讨论】:

    【解决方案4】:

    opencv 现在有 3 种内置的人脸识别技术,pca(eigenfaces)、lda(fisherfaces) 和 lbph。

    很好的示例代码: https://github.com/Itseez/opencv/blob/master/samples/cpp/facerec_demo.cpp

    【讨论】:

      猜你喜欢
      • 2014-01-20
      • 2021-03-01
      • 2012-06-15
      • 1970-01-01
      • 2017-07-08
      • 1970-01-01
      • 2013-08-13
      • 2015-07-05
      相关资源
      最近更新 更多