【问题标题】:What does eigenfaces training set have to look like?特征脸训练集必须是什么样的?
【发布时间】:2015-09-30 03:47:32
【问题描述】:

我正在使用 python 和 openCV 通过 Eigenfaces 创建人脸识别。我偶然发现了一个问题,因为我不知道如何创建训练集。

我是否需要我想要识别的人的多张面孔(例如我自己),还是需要很多不同的面孔来训练我的模型?

首先我尝试用 10 张我的脸部照片和 10 张 ScarJo 脸部的照片训练我的模型,但我的预测效果不佳。

现在我正在尝试用 20 个不同的面孔训练我的模型(我的就是其中之一)。

我做错了吗?如果是,我做错了什么?

【问题讨论】:

    标签: python opencv training-data


    【解决方案1】:

    实际上,两者都可以。如果您查看 FaceRecognizer 训练方法,它接受两个参数。第一个是图片列表。第二个是与图片对应的标签(整数)列表。使用标签来指定哪些图片是哪些面孔。因此,在您只是自己的照片的情况下,标签将全部相同(0)。如果有自己和其他人的照片,那才是真正重要的地方。例如,如果您有自己和 ScarJo 的照片,您的标签可能会是什么样子

    faces =  [scarjo_1, scarjo_2, me_1, me_2, scar_jo_3]
    labels = [       0,        0,    1,    1,         0]
    

    注意labels 中的最后一个索引的值是0...与 ScarJo 的脸相对应的标签。

    【讨论】:

    • 我对如何训练模型没有任何问题,我只是在询问如何有效训练模型的指南。例如:50 个不同的人有 1 张人脸照片,还是 5 个人有 10 张照片好。或者有 50 个随机的人有 1 张照片和 10 张我和我想认识的人的照片。哪个效果最好?
    【解决方案2】:

    我后来找到了答案,如果有人面临同样的挑战,我想分享一下。

    您只需要为您要识别的不同人提供图片。我用每个人(6 个人)的 30 张图像创建了我的训练集,并发现直方图均衡化可以在创建训练集和识别人脸时发挥重要作用。使用直方图均衡模型精度大大提高。另一件要考虑的事情是眼轴对齐,以便所有图片在进入人脸识别之前都对齐眼轴。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      • 2020-03-19
      • 2014-06-04
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      相关资源
      最近更新 更多