特征脸训练集必须是什么样的?

What does eigenfaces training set have to look like?

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

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

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

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

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

实际上,您可以两者兼顾。如果您查看 FaceRecognizer train 方法,它有两个参数。第一个是图片列表。第二个是与图片对应的标签(整数)列表。使用标签指定哪些图片是哪些面孔。因此,如果您只是自己的照片,标签将完全相同 (0)。如果有您自己和其他人的照片,那才是真正重要的地方。例如,如果您有自己和 ScarJo

的照片,您的标签可能会是这样的
faces =  [scarjo_1, scarjo_2, me_1, me_2, scar_jo_3]
labels = [       0,        0,    1,    1,         0]

请注意 labels 中最后一个索引的值为 0...对应于 ScarJo 面部的标签。

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

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