سلام به هم دوستان
من میخوام از کد این سایت enter link description here برای تطابق چهره در تصاویر استفاده کنم، تونستم تصاویر چهره رو استخراج کنم ولی زمانی که اون ها را برای تطابق به شبکه VGGFace میدم از ابعاد تصویر خطا میگیره و هرچقدر جست و جو کردم نتونستم مشکل رو برطرف کنم، ممنون میشم راهنمایی کنید.
خطایی که دریافت میکنم این هست:
ValueError: Input 0 is incompatible with layer vggface_resnet50: expected shape=(None, 224, 224, 3), found shape=(None, 1, 224, 224, 3)
کد استخراج چهره ها:
def extract_face_from_image(image_path, required_size=(224, 224)):
image = plt.imread(image_path)
detector = MTCNN()
faces = detector.detect_faces(image)
face_images = []
for face in faces:
x1, y1, width, height = face['box']
x2, y2 = x1 + width, y1 + height
face_boundary = image[y1:y2, x1:x2]
face_image = Image.fromarray(face_boundary)
face_image = face_image.resize(required_size)
face_array = asarray(face_image)
face_images.append(face_array)
return face_images
extracted_face = extract_face_from_image('/content/301.jpg')
plt.imshow(extracted_face[0])
plt.show()
و کد مربوط به امیتاز دادن به چهره ها این تابع هست:
def get_model_scores(faces):
samples = asarray(faces, 'float32')
samples = preprocess_input(samples, version=2)
model = VGGFace(model='resnet50', include_top=False, input_shape=(224, 224, 3), pooling='avg')
return model.predict(samples)
faces = [extract_face_from_image(image_path) for image_path in ['/content/125.jpg',
'/content/126.jpg']]
model_scores = get_model_scores(faces)
if cosine(model_scores[0], model_scores1) <= 0.4:
print("Faces Matched")