Files
2024-06-29 18:50:22 +08:00

2.3 KiB

tags
tags
Face

Face Analysis Models

Documentation

  • Class name: FaceAnalysisModels
  • Category: FaceAnalysis
  • Output node: False

The FaceAnalysisModels node is designed to load and configure face analysis models based on specified libraries and providers. It abstracts the complexity of initializing face detection and recognition models, offering a streamlined way to prepare these models for further face analysis tasks.

Input types

Required

  • library
    • Specifies the library to use for face analysis, influencing which face detection and recognition models are loaded and configured.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str
  • provider
    • Determines the computational backend (e.g., CPU, CUDA) for the face analysis models, affecting performance and compatibility.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str

Output types

  • analysis_models
    • Comfy dtype: ANALYSIS_MODELS
    • Outputs a configured face analysis model, ready for performing tasks such as face detection, landmark detection, and face recognition.
    • Python dtype: dict

Usage tips

  • Infra type: CPU
  • Common nodes: unknown

Source code

class FaceAnalysisModels:
    @classmethod
    def INPUT_TYPES(s):
        return {"required": {
            "library": (INSTALLED_LIBRARIES, ),
            "provider": (["CPU", "CUDA", "DirectML", "OpenVINO", "ROCM", "CoreML"], ),
        }}

    RETURN_TYPES = ("ANALYSIS_MODELS", )
    FUNCTION = "load_models"
    CATEGORY = "FaceAnalysis"

    def load_models(self, library, provider):
        out = {}

        if library == "insightface":
            out = {
                "library": library,
                "detector": FaceAnalysis(name="buffalo_l", root=INSIGHTFACE_DIR, providers=[provider + 'ExecutionProvider',])
            }
            out["detector"].prepare(ctx_id=0, det_size=(640, 640))
        else:
            out = {
                "library": library,
                "detector": dlib.get_frontal_face_detector(),
                "shape_predict": dlib.shape_predictor(os.path.join(DLIB_DIR, "shape_predictor_68_face_landmarks.dat")),
                "face_recog": dlib.face_recognition_model_v1(os.path.join(DLIB_DIR, "dlib_face_recognition_resnet_model_v1.dat")),
            }
        

        return (out, )