Download roop/face_analyser.py from FTG21/rooop: direct link, hf CLI and curl.
- Browser
- Download file 814 Bytes
-
https://huggingface.co/spaces/FTG21/rooop/resolve/main/roop/face_analyser.py
- Command line
-
hf download hf://spaces/FTG21/rooop/roop/face_analyser.py
-
curl -L -o face_analyser.py https://huggingface.co/spaces/FTG21/rooop/resolve/main/roop/face_analyser.py
814 Bytes
| import threading | |
| from typing import Any | |
| import insightface | |
| import roop.globals | |
| from roop.typing import Frame | |
| FACE_ANALYSER = None | |
| THREAD_LOCK = threading.Lock() | |
| def get_face_analyser() -> Any: | |
| global FACE_ANALYSER | |
| with THREAD_LOCK: | |
| if FACE_ANALYSER is None: | |
| FACE_ANALYSER = insightface.app.FaceAnalysis(name='buffalo_l', providers=roop.globals.execution_providers) | |
| FACE_ANALYSER.prepare(ctx_id=0, det_size=(640, 640)) | |
| return FACE_ANALYSER | |
| def get_one_face(frame: Frame) -> Any: | |
| face = get_face_analyser().get(frame) | |
| try: | |
| return min(face, key=lambda x: x.bbox[0]) | |
| except ValueError: | |
| return None | |
| def get_many_faces(frame: Frame) -> Any: | |
| try: | |
| return get_face_analyser().get(frame) | |
| except IndexError: | |
| return None | |