File size: 997 Bytes
247d0f4
 
 
 
 
 
 
fb6f7e3
247d0f4
 
 
 
 
 
 
 
fb6f7e3
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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)