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)