Merge pull request #757 from Vincent-Stragier/analyze_raise_on_empty_actions

Raise error on empty or erroneous `actions` parameter in `analyze()` closes #729
This commit is contained in:
Sefik Ilkin Serengil 2023-06-23 16:41:17 +01:00 committed by GitHub
commit 77b57f66af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -41,7 +41,6 @@ if tf_version == 2:
def build_model(model_name):
"""
This function builds a deepface model
Parameters:
@ -96,7 +95,6 @@ def verify(
align=True,
normalization="base",
):
"""
This function verifies an image pair is same person or different persons. In the background,
verification function represents facial images as vectors and then calculates the similarity
@ -235,7 +233,6 @@ def analyze(
align=True,
silent=False,
):
"""
This function analyzes facial attributes including age, gender, emotion and race.
In the background, analysis function builds convolutional neural network models to
@ -299,7 +296,19 @@ def analyze(
if isinstance(actions, str):
actions = (actions,)
# check if actions is not an iterable or empty.
if not hasattr(actions, "__getitem__") or not actions:
raise ValueError("`actions` must be a list of strings.")
actions = list(actions)
# For each action, check if it is valid
for action in actions:
if action not in ("emotion", "age", "gender", "race"):
raise ValueError(
f"Invalid action passed ({repr(action)})). "
"Valid actions are `emotion`, `age`, `gender`, `race`."
)
# ---------------------------------
# build models
models = {}
@ -398,7 +407,6 @@ def find(
normalization="base",
silent=False,
):
"""
This function applies verification several times and find the identities in a database
@ -448,7 +456,6 @@ def find(
file_name = file_name.replace("-", "_").lower()
if path.exists(db_path + "/" + file_name):
if not silent:
print(
f"WARNING: Representations for images in {db_path} folder were previously stored"
@ -616,7 +623,6 @@ def represent(
align=True,
normalization="base",
):
"""
This function represents facial images as vectors. The function uses convolutional neural
networks models to generate vector embeddings.
@ -710,7 +716,6 @@ def stream(
time_threshold=5,
frame_threshold=5,
):
"""
This function applies real time face recognition and facial attribute analysis
@ -765,7 +770,6 @@ def extract_faces(
align=True,
grayscale=False,
):
"""
This function applies pre-processing stages of a face recognition pipeline
including detection and alignment