faceverification / test /test_face_workflow_integration.py
leandrodevai's picture
Sync from GitHub via hub-sync
c628352 verified
Raw
History Blame Contribute Delete
1.21 kB
import uuid
from pathlib import Path
import numpy as np
import pytest
from PIL import Image
from faceverification.core.image_processor import ImageProcessor
from faceverification.core.vectordb import VectorDB
pytestmark = [pytest.mark.integration, pytest.mark.e2e]
IMAGES_DIR = Path(__file__).parent / "images"
def test_real_image_embedding_can_be_enrolled_and_matched_in_vectordb():
processor = ImageProcessor(device="cpu")
vector_db = VectorDB(
distance_metric="l2",
name_collection=f"test_real_image_faces_{uuid.uuid4().hex}",
)
anchor_image = Image.open(IMAGES_DIR / "person_anchor.jpg").convert("RGB")
positive_image = Image.open(IMAGES_DIR / "person_positive.jpg").convert("RGB")
anchor_embedding = processor.get_embedding(anchor_image).cpu().numpy()
positive_embedding = processor.get_embedding(positive_image).cpu().numpy()
vector_db.add_embedding(anchor_embedding, {"name": "Ada"})
metadata, distance = vector_db.query_embedding(
positive_embedding,
threshold=1.08,
n_results=1,
)
assert metadata == {"name": "Ada"}
assert distance == pytest.approx(np.linalg.norm(positive_embedding - anchor_embedding))