Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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
Python Pytorch Facenet MTCNN图像输出_Python_Pytorch_Face Recognition_Facenet - Fatal编程技术网

Python Pytorch Facenet MTCNN图像输出

Python Pytorch Facenet MTCNN图像输出,python,pytorch,face-recognition,facenet,Python,Pytorch,Face Recognition,Facenet,我正在用两种方法在python中使用facenet pytorch()开发一个人脸识别应用程序 第一种方法 代码- 在这段代码中,我从给定的图像中提取人脸,并获得用于识别人脸的512种编码 在本例中,我使用了两个不同的面,并绘制了面之间的距离 a.jpg b.jpg a.jpg 0.000000 1.142466 b.jpg 1.142466 0.000000 它工作得很好 第二种方法 代码- 在这段代码中,我通常先获得面坐标,然后是嵌入的坐标。

我正在用两种方法在python中使用facenet pytorch()开发一个人脸识别应用程序

第一种方法 代码-

在这段代码中,我从给定的图像中提取人脸,并获得用于识别人脸的512种编码

在本例中,我使用了两个不同的面,并绘制了面之间的距离

        a.jpg       b.jpg
a.jpg   0.000000    1.142466
b.jpg   1.142466    0.000000
它工作得很好

第二种方法 代码-

在这段代码中,我通常先获得面坐标,然后是嵌入的坐标。两个面之间的距离-

        a.jpg       b.jpg
a.jpg   0.000000    0.631094
b.jpg   0.631094    0.000000
在第一种方法中,我直接将图像送入mtcnn,得到了更好的结果,两个面之间的距离大于1.0。 在第二种方法中,我使用
mtcnn.detect()
获取人脸的坐标,从给定的图像中裁剪人脸,然后馈送到resnet。此方法使两个不同面之间的距离更小

然后,我通过在输入resnet之前绘制结果(面),找到了第一种方法比第二种方法性能好的原因

在第二种方法中,我通过使用
mtcnn.detect()
裁剪面来填充与输入图像(清晰图像)中给出的面相同的面

但是,在第一种方法中,我直接将输入输入到
mtcnn(img)
,它返回的是黑暗中人脸的张量,而不是输入图像中的张量。这个较暗的图像不是清晰的图像(眼睛周围的区域较暗,我用很多照片测试过),无法清晰地看到眼睛。这就是原因,第一种方法显示两个面之间的距离更大

我的疑问是,为什么mtcnn在黑暗中返回张量,如何解决它,在这个问题上帮助我

谢谢

 img = Image.open(image)
 boxes, probs = mtcnn.detect(img) # Gives the coordinates of the face in the given image
 face = img.crop((boxes[0][0], boxes[0][1], boxes[0][2], boxes[0][3])) # Cropping the face
 plt.figure()
 plt.imshow(face)
 pil_to_tensor = transforms.ToTensor()(face).unsqueeze_(0) # Converting to tensor type
 image_embedding = resnet(pil_to_tensor)
        a.jpg       b.jpg
a.jpg   0.000000    0.631094
b.jpg   0.631094    0.000000