# common dependencies import os import warnings import logging from typing import Any, Dict, List, Tuple, Union, Optional # this has to be set before importing tensorflow os.environ["TF_USE_LEGACY_KERAS"] = "1" # pylint: disable=wrong-import-position # 3rd party dependencies import numpy as np import pandas as pd import tensorflow as tf # package dependencies from deepface.commons import package_utils, folder_utils from deepface.modules import ( recognition, demography, ) # users should install tf_keras package if they are using tf 2.16 or later versions package_utils.validate_for_keras3() # create required folders if necessary to store model weights folder_utils.initialize_folder() def analyze( img_path: Union[str, np.ndarray], actions: Union[tuple, list] = ("emotion", "age", "gender", "race"), enforce_detection: bool = True, detector_backend: str = "opencv", align: bool = True, expand_percentage: int = 0, silent: bool = False, ) -> List[Dict[str, Any]]: return demography.analyze( img_path=img_path, actions=actions, enforce_detection=enforce_detection, detector_backend=detector_backend, align=align, expand_percentage=expand_percentage, silent=silent, ) def find( img_path: Union[str, np.ndarray], db_path: str, model_name: str = "VGG-Face", distance_metric: str = "cosine", enforce_detection: bool = True, detector_backend: str = "opencv", align: bool = True, expand_percentage: int = 0, threshold: Optional[float] = None, normalization: str = "base", silent: bool = False, ) -> List[pd.DataFrame]: return recognition.find( img_path=img_path, db_path=db_path, model_name=model_name, distance_metric=distance_metric, enforce_detection=enforce_detection, detector_backend=detector_backend, align=align, expand_percentage=expand_percentage, threshold=threshold, normalization=normalization, silent=silent, )