adding max_faces argument to represent

This commit is contained in:
Sefik Ilkin Serengil 2024-07-17 17:00:55 +01:00
parent 7a5f24955a
commit c66804717c
4 changed files with 24 additions and 8 deletions

View File

@ -359,6 +359,7 @@ def represent(
expand_percentage: int = 0,
normalization: str = "base",
anti_spoofing: bool = False,
max_faces: Optional[int] = None,
) -> List[Dict[str, Any]]:
"""
Represent facial images as multi-dimensional vector embeddings.
@ -390,6 +391,8 @@ def represent(
anti_spoofing (boolean): Flag to enable anti spoofing (default is False).
max_faces (int): Set a limit on the number of faces to be processed (default is None).
Returns:
results (List[Dict[str, Any]]): A list of dictionaries, each containing the
following fields:
@ -415,6 +418,7 @@ def represent(
expand_percentage=expand_percentage,
normalization=normalization,
anti_spoofing=anti_spoofing,
max_faces=max_faces,
)
@ -483,7 +487,7 @@ def extract_faces(
align: bool = True,
expand_percentage: int = 0,
grayscale: bool = False,
color_face: str = 'rgb',
color_face: str = "rgb",
normalize_face: bool = True,
anti_spoofing: bool = False,
) -> List[Dict[str, Any]]:

View File

@ -31,6 +31,7 @@ def represent():
enforce_detection=input_args.get("enforce_detection", True),
align=input_args.get("align", True),
anti_spoofing=input_args.get("anti_spoofing", False),
max_faces=input_args.get("max_faces"),
)
logger.debug(obj)

View File

@ -1,5 +1,6 @@
# built-in dependencies
import traceback
from typing import Optional
# project dependencies
from deepface import DeepFace
@ -14,6 +15,7 @@ def represent(
enforce_detection: bool,
align: bool,
anti_spoofing: bool,
max_faces: Optional[int] = None,
):
try:
result = {}
@ -24,6 +26,7 @@ def represent(
enforce_detection=enforce_detection,
align=align,
anti_spoofing=anti_spoofing,
max_faces=max_faces,
)
result["results"] = embedding_objs
return result

View File

@ -1,5 +1,5 @@
# built-in dependencies
from typing import Any, Dict, List, Union
from typing import Any, Dict, List, Union, Optional
# 3rd party dependencies
import numpy as np
@ -19,6 +19,7 @@ def represent(
expand_percentage: int = 0,
normalization: str = "base",
anti_spoofing: bool = False,
max_faces: Optional[int] = None,
) -> List[Dict[str, Any]]:
"""
Represent facial images as multi-dimensional vector embeddings.
@ -46,6 +47,8 @@ def represent(
anti_spoofing (boolean): Flag to enable anti spoofing (default is False).
max_faces (int): Set a limit on the number of faces to be processed (default is None).
Returns:
results (List[Dict[str, Any]]): A list of dictionaries, each containing the
following fields:
@ -94,7 +97,7 @@ def represent(
]
# ---------------------------------
for img_obj in img_objs:
for idx, img_obj in enumerate(img_objs):
if anti_spoofing is True and img_obj.get("is_real", True) is False:
raise ValueError("Spoof detected in the given image.")
img = img_obj["face"]
@ -117,10 +120,15 @@ def represent(
embedding = model.forward(img)
resp_obj = {}
resp_obj["embedding"] = embedding
resp_obj["facial_area"] = region
resp_obj["face_confidence"] = confidence
resp_objs.append(resp_obj)
resp_objs.append(
{
"embedding": embedding,
"facial_area": region,
"face_confidence": confidence,
}
)
if max_faces is not None and max_faces > 0 and max_faces > idx + 1:
break
return resp_objs