diff --git a/deepface/DeepFace.py b/deepface/DeepFace.py index 8d51c87..adb7612 100644 --- a/deepface/DeepFace.py +++ b/deepface/DeepFace.py @@ -17,7 +17,7 @@ import tensorflow as tf # package dependencies 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 ( modeling, representation, @@ -29,7 +29,7 @@ from deepface.modules import ( ) from deepface import __version__ -logger = Logger(module="DeepFace") +logger = log.get_singletonish_logger() # ----------------------------------- # configurations for dependencies @@ -88,7 +88,7 @@ def verify( OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face). 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', '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). 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', '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). 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). @@ -348,7 +348,7 @@ def represent( (default is True). 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). @@ -406,7 +406,7 @@ def stream( OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face). 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', 'euclidean', 'euclidean_l2' (default is cosine). @@ -454,7 +454,7 @@ def extract_faces( as a string, numpy array (BGR), or base64 encoded images. 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. 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)). 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. Set to False to avoid the exception for low-resolution images (default is True). diff --git a/deepface/api/src/modules/core/routes.py b/deepface/api/src/modules/core/routes.py index d36ad24..a0bce25 100644 --- a/deepface/api/src/modules/core/routes.py +++ b/deepface/api/src/modules/core/routes.py @@ -1,8 +1,8 @@ from flask import Blueprint, request 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__) diff --git a/deepface/basemodels/ArcFace.py b/deepface/basemodels/ArcFace.py index 6015b4b..43dd424 100644 --- a/deepface/basemodels/ArcFace.py +++ b/deepface/basemodels/ArcFace.py @@ -1,10 +1,11 @@ import os import gdown from deepface.commons import package_utils, folder_utils -from deepface.commons.logger import Logger 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 diff --git a/deepface/basemodels/DeepID.py b/deepface/basemodels/DeepID.py index f2168ff..b68b379 100644 --- a/deepface/basemodels/DeepID.py +++ b/deepface/basemodels/DeepID.py @@ -1,10 +1,10 @@ import os import gdown from deepface.commons import package_utils, folder_utils -from deepface.commons.logger import Logger 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() diff --git a/deepface/basemodels/Dlib.py b/deepface/basemodels/Dlib.py index 778b2e1..f13b7ca 100644 --- a/deepface/basemodels/Dlib.py +++ b/deepface/basemodels/Dlib.py @@ -4,10 +4,10 @@ import bz2 import gdown import numpy as np from deepface.commons import folder_utils -from deepface.commons.logger import Logger 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 diff --git a/deepface/basemodels/Facenet.py b/deepface/basemodels/Facenet.py index 63852f5..bcbb7b7 100644 --- a/deepface/basemodels/Facenet.py +++ b/deepface/basemodels/Facenet.py @@ -1,10 +1,10 @@ import os import gdown from deepface.commons import package_utils, folder_utils -from deepface.commons.logger import Logger 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 diff --git a/deepface/basemodels/FbDeepFace.py b/deepface/basemodels/FbDeepFace.py index 630ad6f..f51a511 100644 --- a/deepface/basemodels/FbDeepFace.py +++ b/deepface/basemodels/FbDeepFace.py @@ -2,10 +2,10 @@ import os import zipfile import gdown from deepface.commons import package_utils, folder_utils -from deepface.commons.logger import Logger 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 diff --git a/deepface/basemodels/GhostFaceNet.py b/deepface/basemodels/GhostFaceNet.py index d6347c5..1917833 100644 --- a/deepface/basemodels/GhostFaceNet.py +++ b/deepface/basemodels/GhostFaceNet.py @@ -8,9 +8,9 @@ import tensorflow as tf # project dependencies from deepface.commons import package_utils, folder_utils 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() if tf_major == 1: diff --git a/deepface/basemodels/OpenFace.py b/deepface/basemodels/OpenFace.py index a21dd08..cc335b6 100644 --- a/deepface/basemodels/OpenFace.py +++ b/deepface/basemodels/OpenFace.py @@ -2,10 +2,10 @@ import os import gdown import tensorflow as tf from deepface.commons import package_utils, folder_utils -from deepface.commons.logger import Logger 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() if tf_version == 1: diff --git a/deepface/basemodels/SFace.py b/deepface/basemodels/SFace.py index b5cf649..ddd9360 100644 --- a/deepface/basemodels/SFace.py +++ b/deepface/basemodels/SFace.py @@ -1,15 +1,18 @@ +# built-in dependencies import os from typing import Any, List +# 3rd party dependencies import numpy as np import cv2 as cv import gdown +# project dependencies from deepface.commons import folder_utils -from deepface.commons.logger import Logger 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 diff --git a/deepface/basemodels/VGGFace.py b/deepface/basemodels/VGGFace.py index 09f5d91..819150e 100644 --- a/deepface/basemodels/VGGFace.py +++ b/deepface/basemodels/VGGFace.py @@ -5,9 +5,9 @@ import numpy as np from deepface.commons import package_utils, folder_utils from deepface.modules import verification 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() # --------------------------------------- diff --git a/deepface/commons/folder_utils.py b/deepface/commons/folder_utils.py index 51b7739..ef5fbc7 100644 --- a/deepface/commons/folder_utils.py +++ b/deepface/commons/folder_utils.py @@ -1,8 +1,8 @@ import os 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: diff --git a/deepface/commons/logger.py b/deepface/commons/logger.py index 80a8a34..ea63c82 100644 --- a/deepface/commons/logger.py +++ b/deepface/commons/logger.py @@ -17,6 +17,9 @@ class Logger: ) self.log_level = logging.INFO + # TODO: delete print before commit + print("Logger object created") + def info(self, message): if self.log_level <= logging.INFO: self.dump_log(f"{message}") @@ -39,3 +42,16 @@ class Logger: def dump_log(self, 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"] diff --git a/deepface/commons/package_utils.py b/deepface/commons/package_utils.py index 1620732..3d68235 100644 --- a/deepface/commons/package_utils.py +++ b/deepface/commons/package_utils.py @@ -6,9 +6,9 @@ import hashlib import tensorflow as tf # 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: diff --git a/deepface/detectors/DetectorWrapper.py b/deepface/detectors/DetectorWrapper.py index 5f594e1..cdca6a3 100644 --- a/deepface/detectors/DetectorWrapper.py +++ b/deepface/detectors/DetectorWrapper.py @@ -13,9 +13,9 @@ from deepface.detectors import ( Yolo, 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: diff --git a/deepface/detectors/Dlib.py b/deepface/detectors/Dlib.py index 08a1346..0699efb 100644 --- a/deepface/detectors/Dlib.py +++ b/deepface/detectors/Dlib.py @@ -5,9 +5,9 @@ import gdown import numpy as np from deepface.commons import folder_utils 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): diff --git a/deepface/detectors/Ssd.py b/deepface/detectors/Ssd.py index ae0a819..a8d68eb 100644 --- a/deepface/detectors/Ssd.py +++ b/deepface/detectors/Ssd.py @@ -7,9 +7,9 @@ import numpy as np from deepface.detectors import OpenCv from deepface.commons import folder_utils 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 diff --git a/deepface/detectors/Yolo.py b/deepface/detectors/Yolo.py index 767ff6f..5ff1c80 100644 --- a/deepface/detectors/Yolo.py +++ b/deepface/detectors/Yolo.py @@ -4,9 +4,9 @@ import numpy as np import gdown from deepface.models.Detector import Detector, FacialAreaRegion 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 PATH = "/.deepface/weights/yolov8n-face.pt" diff --git a/deepface/detectors/YuNet.py b/deepface/detectors/YuNet.py index 3f0deba..c43b80f 100644 --- a/deepface/detectors/YuNet.py +++ b/deepface/detectors/YuNet.py @@ -1,13 +1,18 @@ +# built-in dependencies import os from typing import Any, List + +# 3rd party dependencies import cv2 import numpy as np import gdown + +# project dependencies from deepface.commons import folder_utils 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): diff --git a/deepface/extendedmodels/Age.py b/deepface/extendedmodels/Age.py index 4cb8ef2..2e99995 100644 --- a/deepface/extendedmodels/Age.py +++ b/deepface/extendedmodels/Age.py @@ -3,10 +3,10 @@ import gdown import numpy as np from deepface.basemodels import VGGFace from deepface.commons import package_utils, folder_utils -from deepface.commons.logger import Logger 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 diff --git a/deepface/extendedmodels/Emotion.py b/deepface/extendedmodels/Emotion.py index 983045b..e0b93bf 100644 --- a/deepface/extendedmodels/Emotion.py +++ b/deepface/extendedmodels/Emotion.py @@ -1,12 +1,17 @@ +# built-in dependencies import os + +# 3rd party dependencies import gdown import numpy as np 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 diff --git a/deepface/extendedmodels/Gender.py b/deepface/extendedmodels/Gender.py index a7b914c..84cb446 100644 --- a/deepface/extendedmodels/Gender.py +++ b/deepface/extendedmodels/Gender.py @@ -1,12 +1,17 @@ +# built-in dependencies import os + +# 3rd party dependencies import gdown import numpy as np + +# project dependencies from deepface.basemodels import VGGFace from deepface.commons import package_utils, folder_utils -from deepface.commons.logger import Logger 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 diff --git a/deepface/extendedmodels/Race.py b/deepface/extendedmodels/Race.py index eb2c298..1943dea 100644 --- a/deepface/extendedmodels/Race.py +++ b/deepface/extendedmodels/Race.py @@ -1,12 +1,17 @@ +# built-in dependencies import os + +# 3rd party dependencies import gdown import numpy as np + +# project dependencies from deepface.basemodels import VGGFace from deepface.commons import package_utils, folder_utils -from deepface.commons.logger import Logger 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 diff --git a/deepface/modules/demography.py b/deepface/modules/demography.py index 59c1f82..2877671 100644 --- a/deepface/modules/demography.py +++ b/deepface/modules/demography.py @@ -34,7 +34,7 @@ def analyze( Set to False to avoid the exception for low-resolution images (default is True). 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', 'euclidean', 'euclidean_l2' (default is cosine). diff --git a/deepface/modules/detection.py b/deepface/modules/detection.py index edecf1e..2e71dde 100644 --- a/deepface/modules/detection.py +++ b/deepface/modules/detection.py @@ -10,9 +10,9 @@ from PIL import Image from deepface.modules import preprocessing from deepface.models.Detector import DetectedFace, FacialAreaRegion 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 @@ -33,7 +33,7 @@ def extract_faces( as a string, numpy array (BGR), or base64 encoded images. 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. Default is True. Set to False to avoid the exception for low-resolution images. diff --git a/deepface/modules/recognition.py b/deepface/modules/recognition.py index 44f7d6d..8985626 100644 --- a/deepface/modules/recognition.py +++ b/deepface/modules/recognition.py @@ -11,11 +11,11 @@ from tqdm import tqdm from PIL import Image # project dependencies -from deepface.commons.logger import Logger from deepface.commons import package_utils 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( @@ -52,7 +52,7 @@ def find( Default is True. Set to False to avoid the exception for low-resolution images. 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. diff --git a/deepface/modules/representation.py b/deepface/modules/representation.py index 6a0d2a2..cd6252a 100644 --- a/deepface/modules/representation.py +++ b/deepface/modules/representation.py @@ -33,7 +33,7 @@ def represent( Default is True. Set to False to avoid the exception for low-resolution images. 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. diff --git a/deepface/modules/streaming.py b/deepface/modules/streaming.py index 6aeba55..23da044 100644 --- a/deepface/modules/streaming.py +++ b/deepface/modules/streaming.py @@ -10,9 +10,9 @@ import cv2 # project dependencies 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 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). 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', '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, OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face). 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', 'euclidean', 'euclidean_l2' (default is cosine). Returns: @@ -349,7 +349,7 @@ def grab_facial_areas( Args: img (np.ndarray): image itself 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 Returns 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 in the database will be considered in the decision-making process. 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', 'euclidean', 'euclidean_l2' (default is cosine). model_name (str): Model for face recognition. Options: VGG-Face, Facenet, Facenet512, diff --git a/deepface/modules/verification.py b/deepface/modules/verification.py index c7d7682..e0455f8 100644 --- a/deepface/modules/verification.py +++ b/deepface/modules/verification.py @@ -8,9 +8,9 @@ import numpy as np # project dependencies from deepface.modules import representation, detection, modeling 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( @@ -45,7 +45,7 @@ def verify( OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face). 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', 'euclidean', 'euclidean_l2' (default is cosine). diff --git a/tests/face-recognition-how.py b/tests/face-recognition-how.py index c8e0858..22bbf81 100644 --- a/tests/face-recognition-how.py +++ b/tests/face-recognition-how.py @@ -1,13 +1,15 @@ +# 3rd party dependencies import matplotlib.pyplot as plt import numpy as np import cv2 +# project dependencies from deepface import DeepFace from deepface.modules import verification 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 diff --git a/tests/test_analyze.py b/tests/test_analyze.py index d98ec0d..3e3d3e1 100644 --- a/tests/test_analyze.py +++ b/tests/test_analyze.py @@ -1,8 +1,12 @@ +# 3rd party dependencies 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"] diff --git a/tests/test_api.py b/tests/test_api.py index 72e6202..0eeafc8 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -1,10 +1,12 @@ -import unittest -from deepface.commons.logger import Logger -from deepface.api.src.app import create_app +# built-in dependencies 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): diff --git a/tests/test_enforce_detection.py b/tests/test_enforce_detection.py index 9c90ea9..db73ce1 100644 --- a/tests/test_enforce_detection.py +++ b/tests/test_enforce_detection.py @@ -1,9 +1,12 @@ +# 3rd party dependencies import pytest 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(): diff --git a/tests/test_extract_faces.py b/tests/test_extract_faces.py index 7e080de..dfbc7cf 100644 --- a/tests/test_extract_faces.py +++ b/tests/test_extract_faces.py @@ -1,11 +1,14 @@ +# 3rd party dependencies import numpy as np import base64 import pytest + +# project dependencies from deepface import DeepFace 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"] diff --git a/tests/test_find.py b/tests/test_find.py index 5443899..09d361f 100644 --- a/tests/test_find.py +++ b/tests/test_find.py @@ -1,12 +1,18 @@ +# built-in dependencies import os + +# 3rd party dependencies import cv2 import pandas as pd + +# project dependencies from deepface import DeepFace from deepface.modules import verification 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") diff --git a/tests/test_represent.py b/tests/test_represent.py index 44412f3..97878c5 100644 --- a/tests/test_represent.py +++ b/tests/test_represent.py @@ -1,9 +1,11 @@ +# built-in dependencies import cv2 + +# project dependencies from deepface import DeepFace -from deepface.commons.logger import Logger - -logger = Logger("tests/test_represent.py") +from deepface.commons import logger as log +logger = log.get_singletonish_logger() def test_standard_represent(): img_path = "dataset/img1.jpg" diff --git a/tests/test_verify.py b/tests/test_verify.py index 7e3cdaf..01e7e4a 100644 --- a/tests/test_verify.py +++ b/tests/test_verify.py @@ -1,10 +1,12 @@ +# 3rd party dependencies import pytest import cv2 + +# project dependencies from deepface import DeepFace -from deepface.commons.logger import Logger - -logger = Logger("tests/test_facial_recognition_models.py") +from deepface.commons import logger as log +logger = log.get_singletonish_logger() models = ["VGG-Face", "Facenet", "Facenet512", "ArcFace", "GhostFaceNet"] metrics = ["cosine", "euclidean", "euclidean_l2"] diff --git a/tests/test_version.py b/tests/test_version.py index 8f221e3..08e3bbf 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -1,8 +1,11 @@ +# built-in dependencies 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(): diff --git a/tests/visual-test.py b/tests/visual-test.py index cd6de97..09b4b8d 100644 --- a/tests/visual-test.py +++ b/tests/visual-test.py @@ -1,8 +1,11 @@ +# 3rd party dependencies 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 # because they require to install huge packages