from collections import namedtuple from typing import Any, Literal, Callable, List, Tuple, Dict, TypedDict import numpy Bbox = numpy.ndarray[Any, Any] Kps = numpy.ndarray[Any, Any] Score = float Embedding = numpy.ndarray[Any, Any] Face = namedtuple('Face', [ 'bbox', 'kps', 'score', 'embedding', 'normed_embedding', 'gender', 'age' ]) Frame = numpy.ndarray[Any, Any] Matrix = numpy.ndarray[Any, Any] Padding = Tuple[int, int, int, int] Update_Process = Callable[[], None] Process_Frames = Callable[[str, List[str], Update_Process], None] Template = Literal['arcface_v1', 'arcface_v2', 'ffhq'] ProcessMode = Literal['output', 'preview', 'stream'] FaceSelectorMode = Literal['reference', 'one', 'many'] FaceAnalyserOrder = Literal['left-right', 'right-left', 'top-bottom', 'bottom-top', 'small-large', 'large-small', 'best-worst', 'worst-best'] FaceAnalyserAge = Literal['child', 'teen', 'adult', 'senior'] FaceAnalyserGender = Literal['male', 'female'] FaceDetectorModel = Literal['retinaface', 'yunet'] FaceRecognizerModel = Literal['arcface_blendface', 'arcface_inswapper', 'arcface_simswap'] TempFrameFormat = Literal['jpg', 'png'] OutputVideoEncoder = Literal['libx264', 'libx265', 'libvpx-vp9', 'h264_nvenc', 'hevc_nvenc'] ModelValue = Dict[str, Any] OptionsWithModel = TypedDict('OptionsWithModel', { 'model' : ModelValue })