Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opencv 人脸识别,相同图像的不同结果_Opencv_Face Detection_Face Recognition - Fatal编程技术网

Opencv 人脸识别,相同图像的不同结果

Opencv 人脸识别,相同图像的不同结果,opencv,face-detection,face-recognition,Opencv,Face Detection,Face Recognition,我正在做一个人脸识别项目。以下是我使用的预处理步骤: 1.使用lbpcascade_frontalface.xml从原始图像裁剪面部(这将生成方形图像) 2.将图像转换为灰度 3.将图像大小调整为固定大小(50,50) 在此之后,我使用生成的图像来训练LBPH人脸识别器。从我的测试来看,识别器似乎返回了一个置信度,表示测试图像和训练集中另一图像之间的最佳匹配(如果我错了,请纠正我)。我试着用15幅图像训练模型,然后只用最匹配的图像训练模型,在这两种情况下我得到了相同的准确置信度 为了验证准

我正在做一个人脸识别项目。以下是我使用的预处理步骤:

1.使用lbpcascade_frontalface.xml从原始图像裁剪面部(这将生成方形图像)
2.将图像转换为灰度
3.将图像大小调整为固定大小(50,50)

在此之后,我使用生成的图像来训练LBPH人脸识别器。从我的测试来看,识别器似乎返回了一个置信度,表示测试图像和训练集中另一图像之间的最佳匹配(如果我错了,请纠正我)。我试着用15幅图像训练模型,然后只用最匹配的图像训练模型,在这两种情况下我得到了相同的准确置信度

为了验证准确性,我尝试了以下方法:我拍摄了一张图像,用于训练。在gimp中手动剪切图像(面不受剪切影响)。我测试了原始图像相对于裁剪图像,只得到了42.48的置信度(范围似乎在0…100之间,结果是相同的图像0,所以我不确定是否有很大的信心,无论哪种方式42都在中间,所以信心不是很好)。我认为自信应该是非常好的,因为图像中的人脸是相同的

我在这里观察到两个问题:

  • 经过预处理后,得到的两幅图像不一样。尽管图像中的面部完全相同,但经过预处理后,一张图像的面部裁剪比另一张图像多(你可以看到更多的下巴和前额)。差异不大,但可以观察到,即使在50x50的图像上也是如此。再次,我认为人脸检测的矩形应该是完全相同的。请告诉我我是否做错了什么,或者我是否可以以任何方式改进

  • 识别器工作不太好,即使图像完全相同,但裁剪方式不同。在开始这个项目之前,我确实读过lbp的基本原理,我理解为什么它会有不同裁剪的图像的问题,但这是一个大问题,因为裁剪总是有不同的(例如,如果你张开嘴,你的脸会更大,所以裁剪会不同)。同样,如果你对如何改进这一点有任何建议,请告诉我

  • 我使用“train”、“predict”和“detectMultiScale”方法的默认值。也许这是我可以改进的,但我不确定如何改进


    注意。这可能不重要,但我在Ubuntu机器上使用java和opencv。

    50x50对于人脸识别来说有点小。我建议将其增加到100x100。此外,由于算法并不完美,裁剪可能不正确。当你在训练时,如果可能的话,进行各种各样的训练——眼睛睁开和闭上,嘴巴张开和闭上,轻微的角度,等等。多亏了,我把尺寸增加到200x200,我有了更好的效果,但这仍然不够