| import torch | |
| from model import DeepfakeDetector | |
| import os | |
| DEVICE = torch.device("cuda" if torch.cuda.is_available() else "cpu") | |
| MODEL_PATH = os.path.join(os.path.dirname(__file__), "model.pth") | |
| _model = None | |
| def load_model(): | |
| global _model | |
| if _model is not None: | |
| return _model | |
| model = DeepfakeDetector() | |
| checkpoint = torch.load(MODEL_PATH, map_location=DEVICE) | |
| model.load_state_dict(checkpoint['model_state_dict']) | |
| model.to(DEVICE) | |
| model.eval() | |
| _model = model | |
| return model | |
| def run_inference(frames_tensor): | |
| model = load_model() | |
| if frames_tensor.dim() != 5: | |
| raise ValueError("Expected shape: (B, T, C, H, W)") | |
| frames_tensor = frames_tensor.to(DEVICE) | |
| with torch.no_grad(): | |
| output = model(frames_tensor) | |
| prediction = torch.argmax(output, dim=1).item() | |
| return prediction |