Spaces:
Sleeping
Sleeping
| import numpy as np | |
| import tensorflow as tf | |
| import cv2 | |
| class FaceEmbedding: | |
| def __init__(self, model_path="models/face_recognition.tflite"): | |
| self.interpreter = tf.lite.Interpreter(model_path=model_path) | |
| self.interpreter.allocate_tensors() | |
| self.input_details = self.interpreter.get_input_details() | |
| self.output_details = self.interpreter.get_output_details() | |
| def get_embedding(self, face_image): | |
| """استخراج المتجه المميز للوجه""" | |
| # تحضير الوجه | |
| face_resized = cv2.resize(face_image, (112, 112)) | |
| face_normalized = face_resized.astype(np.float32) / 127.5 - 1.0 | |
| face_input = np.expand_dims(face_normalized, axis=0) | |
| # إنشاء المتجه | |
| self.interpreter.set_tensor(self.input_details[0]['index'], face_input) | |
| self.interpreter.invoke() | |
| embedding = self.interpreter.get_tensor(self.output_details[0]['index']) | |
| # تطبيع المتجه | |
| embedding = embedding / np.linalg.norm(embedding) | |
| return embedding[0] | |
| def compare_faces(self, embedding1, embedding2, threshold=0.6): | |
| """مقارنة وجهين""" | |
| similarity = np.dot(embedding1, embedding2) | |
| return similarity > threshold, similarity |