__init__.py 1.0 KB

123456789101112131415161718192021222324252627
  1. from typing import Any
  2. from app.schemas import ModelType
  3. from .base import InferenceModel
  4. from .clip import MCLIPEncoder, OpenCLIPEncoder
  5. from .constants import is_insightface, is_mclip, is_openclip
  6. from .facial_recognition import FaceRecognizer
  7. from .image_classification import ImageClassifier
  8. def from_model_type(model_type: ModelType, model_name: str, **model_kwargs: Any) -> InferenceModel:
  9. match model_type:
  10. case ModelType.CLIP:
  11. if is_openclip(model_name):
  12. return OpenCLIPEncoder(model_name, **model_kwargs)
  13. elif is_mclip(model_name):
  14. return MCLIPEncoder(model_name, **model_kwargs)
  15. case ModelType.FACIAL_RECOGNITION:
  16. if is_insightface(model_name):
  17. return FaceRecognizer(model_name, **model_kwargs)
  18. case ModelType.IMAGE_CLASSIFICATION:
  19. return ImageClassifier(model_name, **model_kwargs)
  20. case _:
  21. raise ValueError(f"Unknown model type {model_type}")
  22. raise ValueError(f"Unknown ${model_type} model {model_name}")