Merge pull request #1317 from kremnik/dataclass

Dataclass
This commit is contained in:
Sefik Ilkin Serengil 2024-08-23 08:57:12 +01:00 committed by GitHub
commit 0022131bf6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,6 @@
from typing import List, Tuple, Optional from typing import List, Tuple, Optional
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from dataclasses import dataclass
import numpy as np import numpy as np
# Notice that all facial detector models must be inherited from this class # Notice that all facial detector models must be inherited from this class
@ -27,63 +28,42 @@ class Detector(ABC):
pass pass
@dataclass
class FacialAreaRegion: class FacialAreaRegion:
"""
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.
"""
x: int x: int
y: int y: int
w: int w: int
h: int h: int
left_eye: Tuple[int, int] left_eye: Optional[Tuple[int, int]] = None
right_eye: Tuple[int, int] right_eye: Optional[Tuple[int, int]] = None
confidence: float confidence: Optional[float] = None
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
@dataclass
class DetectedFace: class DetectedFace:
"""
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
"""
img: np.ndarray img: np.ndarray
facial_area: FacialAreaRegion facial_area: FacialAreaRegion
confidence: float 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