Spaces:
Running
Running
| from __future__ import annotations | |
| from pathlib import Path | |
| from PIL import Image | |
| from app.services.image_detector import ImageDetector | |
| from app.services.gradcam_service import generate_gradcam as _generate_gradcam | |
| def generate_gradcam( | |
| detector: ImageDetector, | |
| image: Image.Image, | |
| verification_id: str, | |
| outputs_dir: Path, | |
| ) -> dict[str, Any]: | |
| if not detector.is_loaded or detector.model is None: | |
| return { | |
| "checked": False, | |
| "status": "not_available", | |
| "method": "Grad-CAM", | |
| "heatmap_url": None, | |
| "overlay_url": None, | |
| "boxed_image_url": None, | |
| "hotspots": [], | |
| "warning": "Classifier is not loaded; Grad-CAM was skipped.", | |
| } | |
| tmp = outputs_dir / f"{verification_id}_gradcam_input.jpg" | |
| image.convert("RGB").save(tmp, quality=95) | |
| return _generate_gradcam(detector.model, str(tmp), detector.transform, detector.device, 1, str(outputs_dir), verification_id) | |