feat: face online

This commit is contained in:
Aaron3S
2024-12-12 17:07:26 +08:00
committed by Bryan
parent e2bf56e624
commit d1ea31c9a4
12 changed files with 237 additions and 19 deletions

View File

@@ -24,12 +24,14 @@ class FaceMixin:
raise ValidationError("Face vector is not set.")
return self._decode_base64_vector(str(self.face_vector))
def check_face(self, code) -> bool:
def check_face(self, code, distance_threshold=None, similarity_threshold=None) -> bool:
distance = self.compare_euclidean_distance(code)
similarity = self.compare_cosine_similarity(code)
return distance < settings.FACE_RECOGNITION_DISTANCE_THRESHOLD \
and similarity > settings.FACE_RECOGNITION_COSINE_THRESHOLD
distance_threshold = distance_threshold or settings.FACE_RECOGNITION_DISTANCE_THRESHOLD
similarity_threshold = similarity_threshold or settings.FACE_RECOGNITION_COSINE_THRESHOLD
return distance < distance_threshold and similarity > similarity_threshold
def compare_euclidean_distance(self, base64_vector: str) -> float:
target_vector = self._decode_base64_vector(base64_vector)