Spaces:
Runtime error
Runtime error
| from typing import List, Tuple, Optional | |
| from abc import ABC, abstractmethod | |
| import numpy as np | |
| # Notice that all facial detector models must be inherited from this class | |
| # pylint: disable=unnecessary-pass, too-few-public-methods | |
| class Detector(ABC): | |
| def detect_faces(self, img: np.ndarray) -> List["FacialAreaRegion"]: | |
| """ | |
| Interface for detect and align face | |
| Args: | |
| img (np.ndarray): pre-loaded image as numpy array | |
| Returns: | |
| results (List[FacialAreaRegion]): A list of FacialAreaRegion objects | |
| where each object contains: | |
| - facial_area (FacialAreaRegion): The facial area region represented | |
| as x, y, w, h, left_eye and right_eye. left eye and right eye are | |
| eyes on the left and right respectively with respect to the person | |
| instead of observer. | |
| """ | |
| pass | |
| class FacialAreaRegion: | |
| x: int | |
| y: int | |
| w: int | |
| h: int | |
| left_eye: Tuple[int, int] | |
| right_eye: Tuple[int, int] | |
| confidence: float | |
| def __init__( | |
| self, | |
| x: int, | |
| y: int, | |
| w: int, | |
| h: int, | |
| left_eye: Optional[Tuple[int, int]] = None, | |
| right_eye: Optional[Tuple[int, int]] = None, | |
| confidence: Optional[float] = None, | |
| ): | |
| """ | |
| Initialize a Face object. | |
| Args: | |
| x (int): The x-coordinate of the top-left corner of the bounding box. | |
| y (int): The y-coordinate of the top-left corner of the bounding box. | |
| w (int): The width of the bounding box. | |
| h (int): The height of the bounding box. | |
| left_eye (tuple): The coordinates (x, y) of the left eye with respect to | |
| the person instead of observer. Default is None. | |
| right_eye (tuple): The coordinates (x, y) of the right eye with respect to | |
| the person instead of observer. Default is None. | |
| confidence (float, optional): Confidence score associated with the face detection. | |
| Default is None. | |
| """ | |
| self.x = x | |
| self.y = y | |
| self.w = w | |
| self.h = h | |
| self.left_eye = left_eye | |
| self.right_eye = right_eye | |
| self.confidence = confidence | |
| class DetectedFace: | |
| img: np.ndarray | |
| facial_area: FacialAreaRegion | |
| confidence: float | |
| def __init__(self, img: np.ndarray, facial_area: FacialAreaRegion, confidence: float): | |
| """ | |
| Initialize detected face object. | |
| Args: | |
| img (np.ndarray): detected face image as numpy array | |
| facial_area (FacialAreaRegion): detected face's metadata (e.g. bounding box) | |
| confidence (float): confidence score for face detection | |
| """ | |
| self.img = img | |
| self.facial_area = facial_area | |
| self.confidence = confidence | |