deepface/tests/visual-test.py
2024-01-27 19:20:03 +00:00

59 lines
1.6 KiB
Python

import matplotlib.pyplot as plt
from deepface import DeepFace
from deepface.commons.logger import Logger
logger = Logger()
# some models (e.g. Dlib) and detectors (e.g. retinaface) do not have test cases
# because they require to install huge packages
# this module is for local runs
model_names = [
"VGG-Face",
"Facenet",
"Facenet512",
"OpenFace",
"DeepFace",
"DeepID",
"Dlib",
"ArcFace",
"SFace",
]
detector_backends = ["opencv", "ssd", "dlib", "mtcnn", "retinaface", "yunet", "yolov8"]
# verification
for model_name in model_names:
obj = DeepFace.verify(
img1_path="dataset/img1.jpg", img2_path="dataset/img2.jpg", model_name=model_name
)
logger.info(obj)
logger.info("---------------------")
# represent
for model_name in model_names:
embedding_objs = DeepFace.represent(img_path="dataset/img1.jpg", model_name=model_name)
for embedding_obj in embedding_objs:
embedding = embedding_obj["embedding"]
logger.info(f"{model_name} produced {len(embedding)}D vector")
# find
dfs = DeepFace.find(
img_path="dataset/img1.jpg", db_path="dataset", model_name="Facenet", detector_backend="mtcnn"
)
for df in dfs:
logger.info(df)
# extract faces
for detector_backend in detector_backends:
face_objs = DeepFace.extract_faces(
img_path="dataset/img11.jpg", detector_backend=detector_backend
)
for face_obj in face_objs:
face = face_obj["face"]
logger.info(detector_backend)
plt.imshow(face)
plt.axis("off")
plt.show()
logger.info("-----------")