首页 > 解决方案 > 数据库中的所有人脸都具有相同的像素位置坐标

问题描述

image = face_recognition.load_image_file('drive/MyDrive/Face-Recognition-Tensorflow-master/images/dicaprio.jpg')
face_locations = face_recognition.face_locations(image)

for face_location in face_locations:`
    top, right, bottom, left = face_location`
    print("A face is located at pixel location Top: {}, Left: {}, Bottom: {}, Right: {}".format(top, left, bottom, right))`

return face_locations,image`

这是代码:

database["leonardo dicaprio"] = face_img_to_encoding("my_images/dicaprio.jpg", FRmodel)
database["brad pitt"] = face_img_to_encoding("my_images/bradPitt1.jpg", FRmodel)
database["matt damon"] = face_img_to_encoding("my_images/mattDamon.jpg", FRmodel)
database["unknown"] = face_img_to_encoding("my_images/unknown.jpg", FRmodel)

所有坐标都相同:

A face is located at pixel location Top: 66, Left: 56, Bottom: 156, Right: 145
A face is located at pixel location Top: 66, Left: 56, Bottom: 156, Right: 145
A face is located at pixel location Top: 66, Left: 56, Bottom: 156, Right: 145
A face is located at pixel location Top: 66, Left: 56, Bottom: 156, Right: 145

标签: pythonpython-2.7

解决方案


你会考虑使用 deepface 吗?它的detectFace 函数返回检测到并对齐的人脸。

#!pip install deepface
from deepface import DeepFace
database = {}
database["brad pitt"] = DeepFace.detectFace("my_images/bradPitt1.jpg")
database["leonardo dicaprio"] = DeepFace.detectFace("my_images/dicaprio.jpg")
database["matt damon"] = DeepFace.detectFace("my_images/mattDamon.jpg")
database["unknown"] = DeepFace.detectFace("my_images/unknown.jpg")

顺便说一句,它包含了几个人脸检测器。SSD 是最快的,但 MTCNN 在对齐方面非常强大。

detectors = ['mtcnn', 'opencv', 'ssd', 'dlib']
database["brad pitt"] = DeepFace.detectFace("my_images/bradPitt1.jpg", detector_backend = detectors[0])

另一方面,如果要运行面部识别,则不必应用检测和对齐。DeepFaca 在后台处理它。

resp = DeepFace.verify("my_images/bradPitt1.jpg", "my_images/dicaprio.jpg")
print(resp["verified"])

推荐阅读