【问题标题】:How to get most similar Eigenfaces or Fisherfaces in OpenCV?如何在 OpenCV 中获得最相似的 Eigenfaces 或 Fisherfaces?
【发布时间】:2013-01-05 05:57:47
【问题描述】:

我正在尝试找到 2 张面孔相似度的度量。我使用 OpenCV。为此,我用 1000 个不同人的 1000 张照片训练 Eigenfaces / Fisherfaces(所以每个人 1 张照片)。所以我在训练集中也有 1000 个标签。

现在我可以使用预测方法来获得最相似的人脸。

我想输入 2 张未知的人脸图像,看看它们是否都与训练集中的相同人脸向量相似。

这里是返回最相似标签(距离最短)的openCV代码。

for(size_t sampleIdx = 0; sampleIdx < _projections.size(); sampleIdx++) {
    double dist = norm(_projections[sampleIdx], q, NORM_L2);
    if((dist < minDist) && (dist < _threshold)) {
        minDist = dist;
        minClass = _labels.at<int>((int)sampleIdx);
    }

问题:

  1. 谁能告诉我如何重写它以输出前 10 个面孔,而不仅仅是前 1 个?我正在考虑将它们推入优先队列,但也许有更简单的方法?!

  2. 在训练中:我应该把所有的人脸放在同一个标​​签上还是不同的标签上?那么我应该有 1 个标签还是 1000 个标签?

干杯

【问题讨论】:

  • :: Q2 :不同主题/人的不同标签。所以,1000 个标签是正确的。

标签: opencv similarity face-recognition


【解决方案1】:

Q1:: 由于 OpenCV 不提供默认函数,您必须通过创建具有距离和标签的向量来创建自己的函数。您可以如下编写自己的函数,并将距离和标签存储在向量中。这里需要重建opencv。

virtual void predict(InputArray src, int &label, double &confidence,  Vector <variable>) const = 0;

【讨论】:

    【解决方案2】:

    这就是我所做的。注意我非常擅长 perl,非常擅长 C++(事实上,这是我的第一个 c++ 项目!)所以我向命令行输出了很多内容并用 perl 解析。

    我和你一样去了facerec.cpp,我把for循环的内容改成了这样:

    for(size_t sampleIdx = 0; sampleIdx < _projections.size(); sampleIdx++) {
        double dist = norm(_projections[sampleIdx], q, NORM_L2);
        int labelClass = _labels.at<int>((int)sampleIdx);
        cout << dist << " " << labelClass << endl;
        if((dist < minDist) && (dist < _threshold)) {
            minDist = dist;
            minClass = _labels.at<int>((int)sampleIdx);
        }
    }
    

    现在输出每张脸的距离和标签。由于 predict 函数似乎所做的只是拍摄距离最短(数字最小)的图片并将其作为答案返回,因此您现在可以获取结果列表,对其进行排序,然后获取前 10 个结果。或者你可以取前十个标签或其他什么。这只是让您可以访问所有数据,而不是前 X 个结果。

    我也加了

    #include <iostream>
    
    using namespace std;
    

    到文件的顶部,以便我可以使用 cout。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      • 2019-08-17
      • 2014-02-26
      相关资源
      最近更新 更多