mirror of
https://github.com/serengil/deepface.git
synced 2025-06-04 02:20:06 +00:00
Merge pull request #1310 from serengil/feat-task-1708-exception-messages-refactored-for-1339
Feat task 1708 exception messages refactored for 1339
This commit is contained in:
commit
f2c2bb27e4
@ -8,7 +8,7 @@ class Logger:
|
||||
A Logger class for logging messages with a specific log level.
|
||||
|
||||
The class follows the singleton design pattern, ensuring that only one
|
||||
instance of the Logger is created. The parameters of the first instance
|
||||
instance of the Logger is created. The parameters of the first instance
|
||||
are preserved across all instances.
|
||||
"""
|
||||
|
||||
@ -21,7 +21,7 @@ class Logger:
|
||||
|
||||
def __init__(self):
|
||||
if not hasattr(self, "_singleton_initialized"):
|
||||
self._singleton_initialized = True # to prevent multiple initializations
|
||||
self._singleton_initialized = True # to prevent multiple initializations
|
||||
log_level = os.environ.get("DEEPFACE_LOG_LEVEL", str(logging.INFO))
|
||||
try:
|
||||
self.log_level = int(log_level)
|
||||
|
@ -115,22 +115,21 @@ def verify(
|
||||
}
|
||||
|
||||
def extract_embeddings_and_facial_areas(
|
||||
img_path: Union[str, np.ndarray, List[float]],
|
||||
index: int
|
||||
) -> Tuple[List[List[float]], List[dict]]:
|
||||
img_path: Union[str, np.ndarray, List[float]], index: int
|
||||
) -> Tuple[List[List[float]], List[dict]]:
|
||||
"""
|
||||
Extracts facial embeddings and corresponding facial areas from an
|
||||
image or returns pre-calculated embeddings.
|
||||
|
||||
Depending on the type of img_path, the function either extracts
|
||||
facial embeddings from the provided image
|
||||
facial embeddings from the provided image
|
||||
(via a path or NumPy array) or verifies that the input is a list of
|
||||
pre-calculated embeddings and validates them.
|
||||
|
||||
Args:
|
||||
img_path (Union[str, np.ndarray, List[float]]):
|
||||
- A string representing the file path to an image,
|
||||
- A NumPy array containing the image data,
|
||||
img_path (Union[str, np.ndarray, List[float]]):
|
||||
- A string representing the file path to an image,
|
||||
- A NumPy array containing the image data,
|
||||
- Or a list of pre-calculated embedding values (of type `float`).
|
||||
index (int): An index value used in error messages and logging
|
||||
to identify the number of the image.
|
||||
@ -150,7 +149,7 @@ def verify(
|
||||
|
||||
if silent is False:
|
||||
logger.warn(
|
||||
"You passed 1st image as pre-calculated embeddings."
|
||||
f"You passed {index}-th image as pre-calculated embeddings."
|
||||
"Please ensure that embeddings have been calculated"
|
||||
f" for the {model_name} model."
|
||||
)
|
||||
@ -158,7 +157,7 @@ def verify(
|
||||
if len(img_path) != dims:
|
||||
raise ValueError(
|
||||
f"embeddings of {model_name} should have {dims} dimensions,"
|
||||
f" but it has {len(img_path)} dimensions input"
|
||||
f" but {index}-th image has {len(img_path)} dimensions input"
|
||||
)
|
||||
|
||||
img_embeddings = [img_path]
|
||||
|
@ -153,7 +153,7 @@ def test_verify_with_precalculated_embeddings_for_incorrect_model():
|
||||
|
||||
with pytest.raises(
|
||||
ValueError,
|
||||
match="embeddings of Facenet should have 128 dimensions, but it has 4096 dimensions input",
|
||||
match="embeddings of Facenet should have 128 dimensions, but 1-th image has 4096 dimensions input",
|
||||
):
|
||||
_ = DeepFace.verify(
|
||||
img1_path=img1_embedding, img2_path=img2_embedding, model_name="Facenet", silent=True
|
||||
@ -171,4 +171,18 @@ def test_verify_for_broken_embeddings():
|
||||
match="When passing img1_path as a list, ensure that all its items are of type float.",
|
||||
):
|
||||
_ = DeepFace.verify(img1_path=img1_embeddings, img2_path=img2_embeddings)
|
||||
logger.info("✅ test verify for broken embeddings content is done")
|
||||
logger.info("✅ test verify for broken embeddings content is done")
|
||||
|
||||
|
||||
def test_verify_for_nested_embeddings():
|
||||
"""
|
||||
batch embeddings not supported
|
||||
"""
|
||||
img1_embeddings = [[1, 2, 3], [4, 5, 6]]
|
||||
img2_path = "dataset/img1.jpg"
|
||||
|
||||
with pytest.raises(
|
||||
ValueError,
|
||||
match="When passing img1_path as a list, ensure that all its items are of type float",
|
||||
):
|
||||
_ = DeepFace.verify(img1_path=img1_embeddings, img2_path=img2_path)
|
||||
|
Loading…
x
Reference in New Issue
Block a user