101 / services /embedding.py
midokhaled927's picture
Update services/embedding.py
85dcdcd verified
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