File size: 1,256 Bytes
60af537
d5e1bd6
60af537
d5e1bd6
60af537
d5e1bd6
71b8b5d
4ddc91d
d5e1bd6
60af537
f9e81bd
60af537
4ddc91d
 
d5e1bd6
 
71b8b5d
 
d5e1bd6
 
4ddc91d
60af537
d5e1bd6
60af537
 
4ddc91d
 
 
71b8b5d
d5e1bd6
9acd672
d5e1bd6
4ddc91d
b63af6d
d5e1bd6
 
60af537
 
 
d5e1bd6
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
32
33
34
35
36
37
38
39
40
import numpy as np
import cv2
from PIL import Image
import torchvision.transforms as transforms
import gradio as gr
from yolov5 import xai_yolov5
from yolov8 import xai_yolov8

def process_image(image, yolo_versions=["yolov5"]):
    image = np.array(image)
    image = cv2.resize(image, (640, 640))

    result_images = []
    for yolo_version in yolo_versions:
        if yolo_version == "yolov5":
            result_images.append(xai_yolov5(image))
        elif yolo_version == "yolov8":
            result_images.append(xai_yolov8(image))
        else:
            result_images.append((Image.fromarray(image), f"{yolo_version} not yet implemented."))
    return result_images


interface = gr.Interface(
    fn=process_image,
    inputs=[
        gr.Image(type="pil", label="Upload an Image"),
        gr.CheckboxGroup(
            choices=["yolov5", "yolov8", "yolov10"],
            value=["yolov5"],  # Set default selection to YOLOv5
            label="Select Model(s)",
        )
    ],
    outputs=gr.Gallery(label="Results", elem_id="gallery", rows=2, height=500),
    title="Explainable AI for YOLO Models",
    description="Upload an image to visualize YOLO object detection with Grad-CAM."
)

if __name__ == "__main__":
    interface.launch()