Skip to content

Commit 10b2e18

Browse files
authored
Merge pull request #1177 from serengil/feat-task-0804-singleton-logger
singleton logger and docstrings
2 parents fb4da39 + 3299303 commit 10b2e18

39 files changed

+159
-92
lines changed

deepface/DeepFace.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
# package dependencies
1919
from deepface.commons import package_utils, folder_utils
20-
from deepface.commons.logger import Logger
20+
from deepface.commons import logger as log
2121
from deepface.modules import (
2222
modeling,
2323
representation,
@@ -29,7 +29,7 @@
2929
)
3030
from deepface import __version__
3131

32-
logger = Logger(module="DeepFace")
32+
logger = log.get_singletonish_logger()
3333

3434
# -----------------------------------
3535
# configurations for dependencies
@@ -88,7 +88,7 @@ def verify(
8888
OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face).
8989
9090
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
91-
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv).
91+
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
9292
9393
distance_metric (string): Metric for measuring similarity. Options: 'cosine',
9494
'euclidean', 'euclidean_l2' (default is cosine).
@@ -168,7 +168,7 @@ def analyze(
168168
Set to False to avoid the exception for low-resolution images (default is True).
169169
170170
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
171-
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv).
171+
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
172172
173173
distance_metric (string): Metric for measuring similarity. Options: 'cosine',
174174
'euclidean', 'euclidean_l2' (default is cosine).
@@ -272,7 +272,7 @@ def find(
272272
Set to False to avoid the exception for low-resolution images (default is True).
273273
274274
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
275-
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv).
275+
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
276276
277277
align (boolean): Perform alignment based on the eye positions (default is True).
278278
@@ -348,7 +348,7 @@ def represent(
348348
(default is True).
349349
350350
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
351-
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv).
351+
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
352352
353353
align (boolean): Perform alignment based on the eye positions (default is True).
354354
@@ -406,7 +406,7 @@ def stream(
406406
OpenFace, DeepFace, DeepID, Dlib, ArcFace, SFace and GhostFaceNet (default is VGG-Face).
407407
408408
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
409-
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv).
409+
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
410410
411411
distance_metric (string): Metric for measuring similarity. Options: 'cosine',
412412
'euclidean', 'euclidean_l2' (default is cosine).
@@ -454,7 +454,7 @@ def extract_faces(
454454
as a string, numpy array (BGR), or base64 encoded images.
455455
456456
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
457-
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv).
457+
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
458458
459459
enforce_detection (boolean): If no face is detected in an image, raise an exception.
460460
Set to False to avoid the exception for low-resolution images (default is True).
@@ -520,7 +520,7 @@ def detectFace(
520520
added to resize the image (default is (224, 224)).
521521
522522
detector_backend (string): face detector backend. Options: 'opencv', 'retinaface',
523-
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' (default is opencv).
523+
'mtcnn', 'ssd', 'dlib', 'mediapipe', 'yolov8' or 'skip' (default is opencv).
524524
525525
enforce_detection (boolean): If no face is detected in an image, raise an exception.
526526
Set to False to avoid the exception for low-resolution images (default is True).

deepface/api/src/modules/core/routes.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from flask import Blueprint, request
22
from deepface.api.src.modules.core import service
3-
from deepface.commons.logger import Logger
3+
from deepface.commons import logger as log
44

5-
logger = Logger(module="api/src/routes.py")
5+
logger = log.get_singletonish_logger()
66

77
blueprint = Blueprint("routes", __name__)
88

deepface/basemodels/ArcFace.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import os
22
import gdown
33
from deepface.commons import package_utils, folder_utils
4-
from deepface.commons.logger import Logger
54
from deepface.models.FacialRecognition import FacialRecognition
65

7-
logger = Logger(module="basemodels.ArcFace")
6+
from deepface.commons import logger as log
7+
8+
logger = log.get_singletonish_logger()
89

910
# pylint: disable=unsubscriptable-object
1011

deepface/basemodels/DeepID.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import os
22
import gdown
33
from deepface.commons import package_utils, folder_utils
4-
from deepface.commons.logger import Logger
54
from deepface.models.FacialRecognition import FacialRecognition
5+
from deepface.commons import logger as log
66

7-
logger = Logger(module="basemodels.DeepID")
7+
logger = log.get_singletonish_logger()
88

99
tf_version = package_utils.get_tf_major_version()
1010

deepface/basemodels/Dlib.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
import gdown
55
import numpy as np
66
from deepface.commons import folder_utils
7-
from deepface.commons.logger import Logger
87
from deepface.models.FacialRecognition import FacialRecognition
8+
from deepface.commons import logger as log
99

10-
logger = Logger(module="basemodels.DlibResNet")
10+
logger = log.get_singletonish_logger()
1111

1212
# pylint: disable=too-few-public-methods
1313

deepface/basemodels/Facenet.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import os
22
import gdown
33
from deepface.commons import package_utils, folder_utils
4-
from deepface.commons.logger import Logger
54
from deepface.models.FacialRecognition import FacialRecognition
5+
from deepface.commons import logger as log
66

7-
logger = Logger(module="basemodels.Facenet")
7+
logger = log.get_singletonish_logger()
88

99
# --------------------------------
1010
# dependency configuration

deepface/basemodels/FbDeepFace.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
import zipfile
33
import gdown
44
from deepface.commons import package_utils, folder_utils
5-
from deepface.commons.logger import Logger
65
from deepface.models.FacialRecognition import FacialRecognition
6+
from deepface.commons import logger as log
77

8-
logger = Logger(module="basemodels.FbDeepFace")
8+
logger = log.get_singletonish_logger()
99

1010
# --------------------------------
1111
# dependency configuration

deepface/basemodels/GhostFaceNet.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
# project dependencies
99
from deepface.commons import package_utils, folder_utils
1010
from deepface.models.FacialRecognition import FacialRecognition
11-
from deepface.commons.logger import Logger
11+
from deepface.commons import logger as log
1212

13-
logger = Logger(module="basemodels.GhostFaceNet")
13+
logger = log.get_singletonish_logger()
1414

1515
tf_major = package_utils.get_tf_major_version()
1616
if tf_major == 1:

deepface/basemodels/OpenFace.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22
import gdown
33
import tensorflow as tf
44
from deepface.commons import package_utils, folder_utils
5-
from deepface.commons.logger import Logger
65
from deepface.models.FacialRecognition import FacialRecognition
6+
from deepface.commons import logger as log
77

8-
logger = Logger(module="basemodels.OpenFace")
8+
logger = log.get_singletonish_logger()
99

1010
tf_version = package_utils.get_tf_major_version()
1111
if tf_version == 1:

deepface/basemodels/SFace.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
1+
# built-in dependencies
12
import os
23
from typing import Any, List
34

5+
# 3rd party dependencies
46
import numpy as np
57
import cv2 as cv
68
import gdown
79

10+
# project dependencies
811
from deepface.commons import folder_utils
9-
from deepface.commons.logger import Logger
1012
from deepface.models.FacialRecognition import FacialRecognition
13+
from deepface.commons import logger as log
1114

12-
logger = Logger(module="basemodels.SFace")
15+
logger = log.get_singletonish_logger()
1316

1417
# pylint: disable=line-too-long, too-few-public-methods
1518

deepface/basemodels/VGGFace.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
from deepface.commons import package_utils, folder_utils
66
from deepface.modules import verification
77
from deepface.models.FacialRecognition import FacialRecognition
8-
from deepface.commons.logger import Logger
8+
from deepface.commons import logger as log
99

10-
logger = Logger(module="basemodels.VGGFace")
10+
logger = log.get_singletonish_logger()
1111

1212
# ---------------------------------------
1313

deepface/commons/folder_utils.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import os
22
from pathlib import Path
3-
from deepface.commons.logger import Logger
3+
from deepface.commons import logger as log
44

5-
logger = Logger(module="deepface/commons/folder_utils.py")
5+
logger = log.get_singletonish_logger()
66

77

88
def initialize_folder() -> None:

deepface/commons/logger.py

+13
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,16 @@ def critical(self, message):
3939

4040
def dump_log(self, message):
4141
print(f"{str(datetime.now())[2:-7]} - {message}")
42+
43+
44+
def get_singletonish_logger():
45+
# singleton design pattern
46+
global model_obj
47+
48+
if not "model_obj" in globals():
49+
model_obj = {}
50+
51+
if "logger" not in model_obj.keys():
52+
model_obj["logger"] = Logger(module="Singleton")
53+
54+
return model_obj["logger"]

deepface/commons/package_utils.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import tensorflow as tf
77

88
# package dependencies
9-
from deepface.commons.logger import Logger
9+
from deepface.commons import logger as log
1010

11-
logger = Logger(module="commons.package_utils")
11+
logger = log.get_singletonish_logger()
1212

1313

1414
def get_tf_major_version() -> int:

deepface/detectors/DetectorWrapper.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@
1313
Yolo,
1414
YuNet,
1515
)
16-
from deepface.commons.logger import Logger
16+
from deepface.commons import logger as log
1717

18-
logger = Logger(module="deepface/detectors/DetectorWrapper.py")
18+
logger = log.get_singletonish_logger()
1919

2020

2121
def build_model(detector_backend: str) -> Any:

deepface/detectors/Dlib.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import numpy as np
66
from deepface.commons import folder_utils
77
from deepface.models.Detector import Detector, FacialAreaRegion
8-
from deepface.commons.logger import Logger
8+
from deepface.commons import logger as log
99

10-
logger = Logger(module="detectors.DlibWrapper")
10+
logger = log.get_singletonish_logger()
1111

1212

1313
class DlibClient(Detector):

deepface/detectors/Ssd.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
from deepface.detectors import OpenCv
88
from deepface.commons import folder_utils
99
from deepface.models.Detector import Detector, FacialAreaRegion
10-
from deepface.commons.logger import Logger
10+
from deepface.commons import logger as log
1111

12-
logger = Logger(module="detectors.SsdWrapper")
12+
logger = log.get_singletonish_logger()
1313

1414
# pylint: disable=line-too-long, c-extension-no-member
1515

deepface/detectors/Yolo.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
import gdown
55
from deepface.models.Detector import Detector, FacialAreaRegion
66
from deepface.commons import folder_utils
7-
from deepface.commons.logger import Logger
7+
from deepface.commons import logger as log
88

9-
logger = Logger()
9+
logger = log.get_singletonish_logger()
1010

1111
# Model's weights paths
1212
PATH = "/.deepface/weights/yolov8n-face.pt"

deepface/detectors/YuNet.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1+
# built-in dependencies
12
import os
23
from typing import Any, List
4+
5+
# 3rd party dependencies
36
import cv2
47
import numpy as np
58
import gdown
9+
10+
# project dependencies
611
from deepface.commons import folder_utils
712
from deepface.models.Detector import Detector, FacialAreaRegion
8-
from deepface.commons.logger import Logger
13+
from deepface.commons import logger as log
914

10-
logger = Logger(module="detectors.YunetWrapper")
15+
logger = log.get_singletonish_logger()
1116

1217

1318
class YuNetClient(Detector):

deepface/extendedmodels/Age.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
import numpy as np
44
from deepface.basemodels import VGGFace
55
from deepface.commons import package_utils, folder_utils
6-
from deepface.commons.logger import Logger
76
from deepface.models.Demography import Demography
7+
from deepface.commons import logger as log
88

9-
logger = Logger(module="extendedmodels.Age")
9+
logger = log.get_singletonish_logger()
1010

1111
# ----------------------------------------
1212
# dependency configurations

deepface/extendedmodels/Emotion.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1+
# built-in dependencies
12
import os
3+
4+
# 3rd party dependencies
25
import gdown
36
import numpy as np
47
import cv2
8+
9+
# project dependencies
510
from deepface.commons import package_utils, folder_utils
6-
from deepface.commons.logger import Logger
711
from deepface.models.Demography import Demography
12+
from deepface.commons import logger as log
813

9-
logger = Logger(module="extendedmodels.Emotion")
14+
logger = log.get_singletonish_logger()
1015

1116
# -------------------------------------------
1217
# pylint: disable=line-too-long

deepface/extendedmodels/Gender.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1+
# built-in dependencies
12
import os
3+
4+
# 3rd party dependencies
25
import gdown
36
import numpy as np
7+
8+
# project dependencies
49
from deepface.basemodels import VGGFace
510
from deepface.commons import package_utils, folder_utils
6-
from deepface.commons.logger import Logger
711
from deepface.models.Demography import Demography
12+
from deepface.commons import logger as log
813

9-
logger = Logger(module="extendedmodels.Gender")
14+
logger = log.get_singletonish_logger()
1015

1116
# -------------------------------------
1217
# pylint: disable=line-too-long

deepface/extendedmodels/Race.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1+
# built-in dependencies
12
import os
3+
4+
# 3rd party dependencies
25
import gdown
36
import numpy as np
7+
8+
# project dependencies
49
from deepface.basemodels import VGGFace
510
from deepface.commons import package_utils, folder_utils
6-
from deepface.commons.logger import Logger
711
from deepface.models.Demography import Demography
12+
from deepface.commons import logger as log
813

9-
logger = Logger(module="extendedmodels.Race")
14+
logger = log.get_singletonish_logger()
1015

1116
# --------------------------
1217
# pylint: disable=line-too-long

0 commit comments

Comments
 (0)