Merge pull request #1177 from serengil/feat-task-0804-singleton-logger

singleton logger and docstrings
This commit is contained in:
Sefik Ilkin Serengil 2024-04-08 20:21:10 +01:00 committed by GitHub
commit 10b2e18dce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
39 changed files with 165 additions and 98 deletions

View File

@ -17,7 +17,7 @@ import tensorflow as tf
# package dependencies # package dependencies
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.commons.logger import Logger from deepface.commons import logger as log
from deepface.modules import ( from deepface.modules import (
modeling, modeling,
representation, representation,
@ -29,7 +29,7 @@ from deepface.modules import (
) )
from deepface import __version__ from deepface import __version__
logger = Logger(module="DeepFace") logger = log.get_singletonish_logger()
# ----------------------------------- # -----------------------------------
# configurations for dependencies # configurations for dependencies
@ -88,7 +88,7 @@ def verify(
OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face). OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face).
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
distance_metric (string): Metric for measuring similarity. Options: 'cosine', distance_metric (string): Metric for measuring similarity. Options: 'cosine',
'euclidean', 'euclidean_l2' (default is cosine). 'euclidean', 'euclidean_l2' (default is cosine).
@ -168,7 +168,7 @@ def analyze(
Set to False to avoid the exception for low-resolution images (default is True). Set to False to avoid the exception for low-resolution images (default is True).
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
distance_metric (string): Metric for measuring similarity. Options: 'cosine', distance_metric (string): Metric for measuring similarity. Options: 'cosine',
'euclidean', 'euclidean_l2' (default is cosine). 'euclidean', 'euclidean_l2' (default is cosine).
@ -272,7 +272,7 @@ def find(
Set to False to avoid the exception for low-resolution images (default is True). Set to False to avoid the exception for low-resolution images (default is True).
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
align (boolean): Perform alignment based on the eye positions (default is True). align (boolean): Perform alignment based on the eye positions (default is True).
@ -348,7 +348,7 @@ def represent(
(default is True). (default is True).
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
align (boolean): Perform alignment based on the eye positions (default is True). align (boolean): Perform alignment based on the eye positions (default is True).
@ -406,7 +406,7 @@ def stream(
OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face). OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face).
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
distance_metric (string): Metric for measuring similarity. Options: 'cosine', distance_metric (string): Metric for measuring similarity. Options: 'cosine',
'euclidean', 'euclidean_l2' (default is cosine). 'euclidean', 'euclidean_l2' (default is cosine).
@ -454,7 +454,7 @@ def extract_faces(
as a string, numpy array (BGR), or base64 encoded images. as a string, numpy array (BGR), or base64 encoded images.
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
enforce_detection (boolean): If no face is detected in an image, raise an exception. enforce_detection (boolean): If no face is detected in an image, raise an exception.
Set to False to avoid the exception for low-resolution images (default is True). Set to False to avoid the exception for low-resolution images (default is True).
@ -520,7 +520,7 @@ def detectFace(
added to resize the image (default is (224, 224)). added to resize the image (default is (224, 224)).
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
enforce_detection (boolean): If no face is detected in an image, raise an exception. enforce_detection (boolean): If no face is detected in an image, raise an exception.
Set to False to avoid the exception for low-resolution images (default is True). Set to False to avoid the exception for low-resolution images (default is True).

View File

@ -1,8 +1,8 @@
from flask import Blueprint, request from flask import Blueprint, request
from deepface.api.src.modules.core import service from deepface.api.src.modules.core import service
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="api/src/routes.py") logger = log.get_singletonish_logger()
blueprint = Blueprint("routes", __name__) blueprint = Blueprint("routes", __name__)

View File

@ -1,10 +1,11 @@
import os import os
import gdown import gdown
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.commons.logger import Logger
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
logger = Logger(module="basemodels.ArcFace") from deepface.commons import logger as log
logger = log.get_singletonish_logger()
# pylint: disable=unsubscriptable-object # pylint: disable=unsubscriptable-object

View File

@ -1,10 +1,10 @@
import os import os
import gdown import gdown
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.commons.logger import Logger
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
from deepface.commons import logger as log
logger = Logger(module="basemodels.DeepID") logger = log.get_singletonish_logger()
tf_version = package_utils.get_tf_major_version() tf_version = package_utils.get_tf_major_version()

View File

@ -4,10 +4,10 @@ import bz2
import gdown import gdown
import numpy as np import numpy as np
from deepface.commons import folder_utils from deepface.commons import folder_utils
from deepface.commons.logger import Logger
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
from deepface.commons import logger as log
logger = Logger(module="basemodels.DlibResNet") logger = log.get_singletonish_logger()
# pylint: disable=too-few-public-methods # pylint: disable=too-few-public-methods

View File

@ -1,10 +1,10 @@
import os import os
import gdown import gdown
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.commons.logger import Logger
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
from deepface.commons import logger as log
logger = Logger(module="basemodels.Facenet") logger = log.get_singletonish_logger()
# -------------------------------- # --------------------------------
# dependency configuration # dependency configuration

View File

@ -2,10 +2,10 @@ import os
import zipfile import zipfile
import gdown import gdown
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.commons.logger import Logger
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
from deepface.commons import logger as log
logger = Logger(module="basemodels.FbDeepFace") logger = log.get_singletonish_logger()
# -------------------------------- # --------------------------------
# dependency configuration # dependency configuration

View File

@ -8,9 +8,9 @@ import tensorflow as tf
# project dependencies # project dependencies
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="basemodels.GhostFaceNet") logger = log.get_singletonish_logger()
tf_major = package_utils.get_tf_major_version() tf_major = package_utils.get_tf_major_version()
if tf_major == 1: if tf_major == 1:

View File

@ -2,10 +2,10 @@ import os
import gdown import gdown
import tensorflow as tf import tensorflow as tf
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.commons.logger import Logger
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
from deepface.commons import logger as log
logger = Logger(module="basemodels.OpenFace") logger = log.get_singletonish_logger()
tf_version = package_utils.get_tf_major_version() tf_version = package_utils.get_tf_major_version()
if tf_version == 1: if tf_version == 1:

View File

@ -1,15 +1,18 @@
# built-in dependencies
import os import os
from typing import Any, List from typing import Any, List
# 3rd party dependencies
import numpy as np import numpy as np
import cv2 as cv import cv2 as cv
import gdown import gdown
# project dependencies
from deepface.commons import folder_utils from deepface.commons import folder_utils
from deepface.commons.logger import Logger
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
from deepface.commons import logger as log
logger = Logger(module="basemodels.SFace") logger = log.get_singletonish_logger()
# pylint: disable=line-too-long, too-few-public-methods # pylint: disable=line-too-long, too-few-public-methods

View File

@ -5,9 +5,9 @@ import numpy as np
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.modules import verification from deepface.modules import verification
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="basemodels.VGGFace") logger = log.get_singletonish_logger()
# --------------------------------------- # ---------------------------------------

View File

@ -1,8 +1,8 @@
import os import os
from pathlib import Path from pathlib import Path
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="deepface/commons/folder_utils.py") logger = log.get_singletonish_logger()
def initialize_folder() -> None: def initialize_folder() -> None:

View File

@ -39,3 +39,16 @@ class Logger:
def dump_log(self, message): def dump_log(self, message):
print(f"{str(datetime.now())[2:-7]} - {message}") print(f"{str(datetime.now())[2:-7]} - {message}")
def get_singletonish_logger():
# singleton design pattern
global model_obj
if not "model_obj" in globals():
model_obj = {}
if "logger" not in model_obj.keys():
model_obj["logger"] = Logger(module="Singleton")
return model_obj["logger"]

View File

@ -6,9 +6,9 @@ import hashlib
import tensorflow as tf import tensorflow as tf
# package dependencies # package dependencies
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="commons.package_utils") logger = log.get_singletonish_logger()
def get_tf_major_version() -> int: def get_tf_major_version() -> int:

View File

@ -13,9 +13,9 @@ from deepface.detectors import (
Yolo, Yolo,
YuNet, YuNet,
) )
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="deepface/detectors/DetectorWrapper.py") logger = log.get_singletonish_logger()
def build_model(detector_backend: str) -> Any: def build_model(detector_backend: str) -> Any:

View File

@ -5,9 +5,9 @@ import gdown
import numpy as np import numpy as np
from deepface.commons import folder_utils from deepface.commons import folder_utils
from deepface.models.Detector import Detector, FacialAreaRegion from deepface.models.Detector import Detector, FacialAreaRegion
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="detectors.DlibWrapper") logger = log.get_singletonish_logger()
class DlibClient(Detector): class DlibClient(Detector):

View File

@ -7,9 +7,9 @@ import numpy as np
from deepface.detectors import OpenCv from deepface.detectors import OpenCv
from deepface.commons import folder_utils from deepface.commons import folder_utils
from deepface.models.Detector import Detector, FacialAreaRegion from deepface.models.Detector import Detector, FacialAreaRegion
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="detectors.SsdWrapper") logger = log.get_singletonish_logger()
# pylint: disable=line-too-long, c-extension-no-member # pylint: disable=line-too-long, c-extension-no-member

View File

@ -4,9 +4,9 @@ import numpy as np
import gdown import gdown
from deepface.models.Detector import Detector, FacialAreaRegion from deepface.models.Detector import Detector, FacialAreaRegion
from deepface.commons import folder_utils from deepface.commons import folder_utils
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger() logger = log.get_singletonish_logger()
# Model's weights paths # Model's weights paths
PATH = "/.deepface/weights/yolov8n-face.pt" PATH = "/.deepface/weights/yolov8n-face.pt"

View File

@ -1,13 +1,18 @@
# built-in dependencies
import os import os
from typing import Any, List from typing import Any, List
# 3rd party dependencies
import cv2 import cv2
import numpy as np import numpy as np
import gdown import gdown
# project dependencies
from deepface.commons import folder_utils from deepface.commons import folder_utils
from deepface.models.Detector import Detector, FacialAreaRegion from deepface.models.Detector import Detector, FacialAreaRegion
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="detectors.YunetWrapper") logger = log.get_singletonish_logger()
class YuNetClient(Detector): class YuNetClient(Detector):

View File

@ -3,10 +3,10 @@ import gdown
import numpy as np import numpy as np
from deepface.basemodels import VGGFace from deepface.basemodels import VGGFace
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.commons.logger import Logger
from deepface.models.Demography import Demography from deepface.models.Demography import Demography
from deepface.commons import logger as log
logger = Logger(module="extendedmodels.Age") logger = log.get_singletonish_logger()
# ---------------------------------------- # ----------------------------------------
# dependency configurations # dependency configurations

View File

@ -1,12 +1,17 @@
# built-in dependencies
import os import os
# 3rd party dependencies
import gdown import gdown
import numpy as np import numpy as np
import cv2 import cv2
from deepface.commons import package_utils, folder_utils
from deepface.commons.logger import Logger
from deepface.models.Demography import Demography
logger = Logger(module="extendedmodels.Emotion") # project dependencies
from deepface.commons import package_utils, folder_utils
from deepface.models.Demography import Demography
from deepface.commons import logger as log
logger = log.get_singletonish_logger()
# ------------------------------------------- # -------------------------------------------
# pylint: disable=line-too-long # pylint: disable=line-too-long

View File

@ -1,12 +1,17 @@
# built-in dependencies
import os import os
# 3rd party dependencies
import gdown import gdown
import numpy as np import numpy as np
# project dependencies
from deepface.basemodels import VGGFace from deepface.basemodels import VGGFace
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.commons.logger import Logger
from deepface.models.Demography import Demography from deepface.models.Demography import Demography
from deepface.commons import logger as log
logger = Logger(module="extendedmodels.Gender") logger = log.get_singletonish_logger()
# ------------------------------------- # -------------------------------------
# pylint: disable=line-too-long # pylint: disable=line-too-long

View File

@ -1,12 +1,17 @@
# built-in dependencies
import os import os
# 3rd party dependencies
import gdown import gdown
import numpy as np import numpy as np
# project dependencies
from deepface.basemodels import VGGFace from deepface.basemodels import VGGFace
from deepface.commons import package_utils, folder_utils from deepface.commons import package_utils, folder_utils
from deepface.commons.logger import Logger
from deepface.models.Demography import Demography from deepface.models.Demography import Demography
from deepface.commons import logger as log
logger = Logger(module="extendedmodels.Race") logger = log.get_singletonish_logger()
# -------------------------- # --------------------------
# pylint: disable=line-too-long # pylint: disable=line-too-long

View File

@ -34,7 +34,7 @@ def analyze(
Set to False to avoid the exception for low-resolution images (default is True). Set to False to avoid the exception for low-resolution images (default is True).
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
distance_metric (string): Metric for measuring similarity. Options: 'cosine', distance_metric (string): Metric for measuring similarity. Options: 'cosine',
'euclidean', 'euclidean_l2' (default is cosine). 'euclidean', 'euclidean_l2' (default is cosine).

View File

@ -10,9 +10,9 @@ from PIL import Image
from deepface.modules import preprocessing from deepface.modules import preprocessing
from deepface.models.Detector import DetectedFace, FacialAreaRegion from deepface.models.Detector import DetectedFace, FacialAreaRegion
from deepface.detectors import DetectorWrapper from deepface.detectors import DetectorWrapper
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="deepface/modules/detection.py") logger = log.get_singletonish_logger()
# pylint: disable=no-else-raise # pylint: disable=no-else-raise
@ -33,7 +33,7 @@ def extract_faces(
as a string, numpy array (BGR), or base64 encoded images. as a string, numpy array (BGR), or base64 encoded images.
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv) 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv)
enforce_detection (boolean): If no face is detected in an image, raise an exception. enforce_detection (boolean): If no face is detected in an image, raise an exception.
Default is True. Set to False to avoid the exception for low-resolution images. Default is True. Set to False to avoid the exception for low-resolution images.

View File

@ -11,11 +11,11 @@ from tqdm import tqdm
from PIL import Image from PIL import Image
# project dependencies # project dependencies
from deepface.commons.logger import Logger
from deepface.commons import package_utils from deepface.commons import package_utils
from deepface.modules import representation, detection, verification from deepface.modules import representation, detection, verification
from deepface.commons import logger as log
logger = Logger(module="deepface/modules/recognition.py") logger = log.get_singletonish_logger()
def find( def find(
@ -52,7 +52,7 @@ def find(
Default is True. Set to False to avoid the exception for low-resolution images. Default is True. Set to False to avoid the exception for low-resolution images.
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8'. 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip'.
align (boolean): Perform alignment based on the eye positions. align (boolean): Perform alignment based on the eye positions.

View File

@ -33,7 +33,7 @@ def represent(
Default is True. Set to False to avoid the exception for low-resolution images. Default is True. Set to False to avoid the exception for low-resolution images.
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8'. 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip'.
align (boolean): Perform alignment based on the eye positions. align (boolean): Perform alignment based on the eye positions.

View File

@ -10,9 +10,9 @@ import cv2
# project dependencies # project dependencies
from deepface import DeepFace from deepface import DeepFace
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="commons.realtime") logger = log.get_singletonish_logger()
# dependency configuration # dependency configuration
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2" os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2"
@ -43,7 +43,7 @@ def analysis(
OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face). OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face).
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
distance_metric (string): Metric for measuring similarity. Options: 'cosine', distance_metric (string): Metric for measuring similarity. Options: 'cosine',
'euclidean', 'euclidean_l2' (default is cosine). 'euclidean', 'euclidean_l2' (default is cosine).
@ -182,7 +182,7 @@ def search_identity(
model_name (str): Model for face recognition. Options: VGG-Face, Facenet, Facenet512, model_name (str): Model for face recognition. Options: VGG-Face, Facenet, Facenet512,
OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face). OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face).
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
distance_metric (string): Metric for measuring similarity. Options: 'cosine', distance_metric (string): Metric for measuring similarity. Options: 'cosine',
'euclidean', 'euclidean_l2' (default is cosine). 'euclidean', 'euclidean_l2' (default is cosine).
Returns: Returns:
@ -349,7 +349,7 @@ def grab_facial_areas(
Args: Args:
img (np.ndarray): image itself img (np.ndarray): image itself
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
threshold (int): threshold for facial area, discard smaller ones threshold (int): threshold for facial area, discard smaller ones
Returns Returns
result (list): list of tuple with x, y, w and h coordinates result (list): list of tuple with x, y, w and h coordinates
@ -414,7 +414,7 @@ def perform_facial_recognition(
db_path (string): Path to the folder containing image files. All detected faces db_path (string): Path to the folder containing image files. All detected faces
in the database will be considered in the decision-making process. in the database will be considered in the decision-making process.
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv). 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
distance_metric (string): Metric for measuring similarity. Options: 'cosine', distance_metric (string): Metric for measuring similarity. Options: 'cosine',
'euclidean', 'euclidean_l2' (default is cosine). 'euclidean', 'euclidean_l2' (default is cosine).
model_name (str): Model for face recognition. Options: VGG-Face, Facenet, Facenet512, model_name (str): Model for face recognition. Options: VGG-Face, Facenet, Facenet512,

View File

@ -8,9 +8,9 @@ import numpy as np
# project dependencies # project dependencies
from deepface.modules import representation, detection, modeling from deepface.modules import representation, detection, modeling
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger(module="deepface/modules/verification.py") logger = log.get_singletonish_logger()
def verify( def verify(
@ -45,7 +45,7 @@ def verify(
OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face). OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face).
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface', detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv) 'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv)
distance_metric (string): Metric for measuring similarity. Options: 'cosine', distance_metric (string): Metric for measuring similarity. Options: 'cosine',
'euclidean', 'euclidean_l2' (default is cosine). 'euclidean', 'euclidean_l2' (default is cosine).

View File

@ -1,13 +1,15 @@
# 3rd party dependencies
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
import cv2 import cv2
# project dependencies
from deepface import DeepFace from deepface import DeepFace
from deepface.modules import verification from deepface.modules import verification
from deepface.models.FacialRecognition import FacialRecognition from deepface.models.FacialRecognition import FacialRecognition
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger() logger = log.get_singletonish_logger()
# ---------------------------------------------- # ----------------------------------------------
# build face recognition model # build face recognition model

View File

@ -1,8 +1,12 @@
# 3rd party dependencies
import cv2 import cv2
from deepface import DeepFace
from deepface.commons.logger import Logger
logger = Logger("tests/test_analyze.py") # project dependencies
from deepface import DeepFace
from deepface.commons import logger as log
logger = log.get_singletonish_logger()
detectors = ["opencv", "mtcnn"] detectors = ["opencv", "mtcnn"]

View File

@ -1,10 +1,12 @@
import unittest # built-in dependencies
from deepface.commons.logger import Logger
from deepface.api.src.app import create_app
import base64 import base64
import unittest
# project dependencies
from deepface.api.src.app import create_app
from deepface.commons import logger as log
logger = Logger("tests/test_api.py") logger = log.get_singletonish_logger()
class TestVerifyEndpoint(unittest.TestCase): class TestVerifyEndpoint(unittest.TestCase):

View File

@ -1,9 +1,12 @@
# 3rd party dependencies
import pytest import pytest
import numpy as np import numpy as np
from deepface import DeepFace
from deepface.commons.logger import Logger
logger = Logger("tests/test_enforce_detection.py") # project dependencies
from deepface import DeepFace
from deepface.commons import logger as log
logger = log.get_singletonish_logger()
def test_enabled_enforce_detection_for_non_facial_input(): def test_enabled_enforce_detection_for_non_facial_input():

View File

@ -1,11 +1,14 @@
# 3rd party dependencies
import numpy as np import numpy as np
import base64 import base64
import pytest import pytest
# project dependencies
from deepface import DeepFace from deepface import DeepFace
from deepface.modules import preprocessing from deepface.modules import preprocessing
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger("tests/test_extract_faces.py") logger = log.get_singletonish_logger()
detectors = ["opencv", "mtcnn"] detectors = ["opencv", "mtcnn"]

View File

@ -1,12 +1,18 @@
# built-in dependencies
import os import os
# 3rd party dependencies
import cv2 import cv2
import pandas as pd import pandas as pd
# project dependencies
from deepface import DeepFace from deepface import DeepFace
from deepface.modules import verification from deepface.modules import verification
from deepface.modules import recognition from deepface.modules import recognition
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = log.get_singletonish_logger()
logger = Logger("tests/test_find.py")
threshold = verification.find_threshold(model_name="VGG-Face", distance_metric="cosine") threshold = verification.find_threshold(model_name="VGG-Face", distance_metric="cosine")

View File

@ -1,9 +1,11 @@
# built-in dependencies
import cv2 import cv2
# project dependencies
from deepface import DeepFace from deepface import DeepFace
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger("tests/test_represent.py")
logger = log.get_singletonish_logger()
def test_standard_represent(): def test_standard_represent():
img_path = "dataset/img1.jpg" img_path = "dataset/img1.jpg"

View File

@ -1,10 +1,12 @@
# 3rd party dependencies
import pytest import pytest
import cv2 import cv2
# project dependencies
from deepface import DeepFace from deepface import DeepFace
from deepface.commons.logger import Logger from deepface.commons import logger as log
logger = Logger("tests/test_facial_recognition_models.py")
logger = log.get_singletonish_logger()
models = ["VGG-Face", "Facenet", "Facenet512", "ArcFace", "GhostFaceNet"] models = ["VGG-Face", "Facenet", "Facenet512", "ArcFace", "GhostFaceNet"]
metrics = ["cosine", "euclidean", "euclidean_l2"] metrics = ["cosine", "euclidean", "euclidean_l2"]

View File

@ -1,8 +1,11 @@
# built-in dependencies
import json import json
from deepface import DeepFace
from deepface.commons.logger import Logger
logger = Logger("tests/test_version.py") # project dependencies
from deepface import DeepFace
from deepface.commons import logger as log
logger = log.get_singletonish_logger()
def test_version(): def test_version():

View File

@ -1,8 +1,11 @@
# 3rd party dependencies
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
from deepface import DeepFace
from deepface.commons.logger import Logger
logger = Logger() # project dependencies
from deepface import DeepFace
from deepface.commons import logger as log
logger = log.get_singletonish_logger()
# some models (e.g. Dlib) and detectors (e.g. retinaface) do not have test cases # some models (e.g. Dlib) and detectors (e.g. retinaface) do not have test cases
# because they require to install huge packages # because they require to install huge packages