Spaces:
Sleeping
Sleeping
| """ | |
| Model loading for the deepfake detector. | |
| """ | |
| from dataclasses import dataclass | |
| from typing import Optional | |
| from transformers import ( | |
| AutoImageProcessor, | |
| SiglipForImageClassification, | |
| ViTImageProcessor, | |
| ViTForImageClassification, | |
| ) | |
| from app.core.detector.config import SIGLIP_MODEL_NAME, VIT_MODEL_NAME, DEVICE | |
| class SiglipResources: | |
| """Container for the SigLIP model and processor.""" | |
| model: SiglipForImageClassification | |
| processor: AutoImageProcessor | |
| class ViTResources: | |
| """Container for the ViT model and processor.""" | |
| model: ViTForImageClassification | |
| processor: ViTImageProcessor | |
| _siglip_resources: Optional[SiglipResources] = None | |
| _vit_resources: Optional[ViTResources] = None | |
| def get_siglip_model() -> SiglipResources: | |
| """ | |
| Get or load the merged SigLIP detector model. | |
| Returns: | |
| SiglipResources: Loaded model and processor (cached singleton). | |
| """ | |
| global _siglip_resources | |
| if _siglip_resources is None: | |
| print("Loading SigLIP Model...") | |
| siglip_processor = AutoImageProcessor.from_pretrained(SIGLIP_MODEL_NAME) | |
| siglip_model = SiglipForImageClassification.from_pretrained(SIGLIP_MODEL_NAME) | |
| siglip_model = siglip_model.to(DEVICE) | |
| siglip_model.eval() | |
| _siglip_resources = SiglipResources( | |
| model=siglip_model, | |
| processor=siglip_processor, | |
| ) | |
| return _siglip_resources | |
| def get_vit_model() -> ViTResources: | |
| """ | |
| Get or load the merged ViT detector model. | |
| Returns: | |
| ViTResources: Loaded model and processor (cached singleton). | |
| """ | |
| global _vit_resources | |
| if _vit_resources is None: | |
| print("Loading ViT Model...") | |
| vit_processor = ViTImageProcessor.from_pretrained(VIT_MODEL_NAME) | |
| vit_model = ViTForImageClassification.from_pretrained(VIT_MODEL_NAME) | |
| vit_model = vit_model.to(DEVICE) | |
| vit_model.eval() | |
| _vit_resources = ViTResources( | |
| model=vit_model, | |
| processor=vit_processor, | |
| ) | |
| return _vit_resources | |