Spaces:
Running
Running
Commit
·
d545606
1
Parent(s):
d2d1a78
Fix: resolved model access methodology
Browse files
app.py
CHANGED
@@ -12,7 +12,6 @@ from PIL import Image
|
|
12 |
import gradio as gr
|
13 |
from ultralytics import YOLO
|
14 |
|
15 |
-
# Load a COCO-pretrained YOLOv3n model
|
16 |
# Global Color Palette
|
17 |
COLORS = np.random.uniform(0, 255, size=(80, 3))
|
18 |
|
@@ -47,7 +46,7 @@ def load_yolo_model(version="yolov5"):
|
|
47 |
if version == "yolov5":
|
48 |
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)
|
49 |
elif version == "yolov8":
|
50 |
-
model = YOLO("yolov8n.pt") # YOLOv8 is part of the
|
51 |
elif version == "yolov10":
|
52 |
model = torch.hub.load('ultralytics/yolov5', 'yolov5m', pretrained=True) # Placeholder for YOLOv10 (use an appropriate version if available)
|
53 |
else:
|
@@ -57,7 +56,6 @@ def load_yolo_model(version="yolov5"):
|
|
57 |
model.cpu()
|
58 |
return model
|
59 |
|
60 |
-
# Main function for Grad-CAM visualization
|
61 |
# Main function for Grad-CAM visualization
|
62 |
def process_image(image, yolo_versions=["yolov5"]):
|
63 |
image = np.array(image)
|
@@ -76,7 +74,7 @@ def process_image(image, yolo_versions=["yolov5"]):
|
|
76 |
for yolo_version in yolo_versions:
|
77 |
# Load the model based on YOLO version
|
78 |
model = load_yolo_model(yolo_version)
|
79 |
-
target_layers = [model.model
|
80 |
|
81 |
# Run YOLO detection
|
82 |
results = model([rgb_img])
|
@@ -102,20 +100,21 @@ def process_image(image, yolo_versions=["yolov5"]):
|
|
102 |
|
103 |
return result_images
|
104 |
|
|
|
105 |
interface = gr.Interface(
|
106 |
fn=process_image,
|
107 |
inputs=[
|
108 |
gr.Image(type="pil", label="Upload an Image"),
|
109 |
gr.CheckboxGroup(
|
110 |
-
choices=["yolov5",
|
111 |
value=["yolov5"], # Set the default value (YOLOv5 checked by default)
|
112 |
label="Select Model(s)",
|
113 |
)
|
114 |
],
|
115 |
-
outputs
|
116 |
-
title="
|
117 |
description="XAI: Upload an image to visualize object detection of your models.."
|
118 |
)
|
119 |
|
120 |
if __name__ == "__main__":
|
121 |
-
interface.launch()
|
|
|
12 |
import gradio as gr
|
13 |
from ultralytics import YOLO
|
14 |
|
|
|
15 |
# Global Color Palette
|
16 |
COLORS = np.random.uniform(0, 255, size=(80, 3))
|
17 |
|
|
|
46 |
if version == "yolov5":
|
47 |
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)
|
48 |
elif version == "yolov8":
|
49 |
+
model = YOLO("yolov8n.pt") # YOLOv8 is part of the ultralytics library
|
50 |
elif version == "yolov10":
|
51 |
model = torch.hub.load('ultralytics/yolov5', 'yolov5m', pretrained=True) # Placeholder for YOLOv10 (use an appropriate version if available)
|
52 |
else:
|
|
|
56 |
model.cpu()
|
57 |
return model
|
58 |
|
|
|
59 |
# Main function for Grad-CAM visualization
|
60 |
def process_image(image, yolo_versions=["yolov5"]):
|
61 |
image = np.array(image)
|
|
|
74 |
for yolo_version in yolo_versions:
|
75 |
# Load the model based on YOLO version
|
76 |
model = load_yolo_model(yolo_version)
|
77 |
+
target_layers = [model.model[-1]] # Fix: Access the correct last layer in YOLOv8
|
78 |
|
79 |
# Run YOLO detection
|
80 |
results = model([rgb_img])
|
|
|
100 |
|
101 |
return result_images
|
102 |
|
103 |
+
# Gradio interface
|
104 |
interface = gr.Interface(
|
105 |
fn=process_image,
|
106 |
inputs=[
|
107 |
gr.Image(type="pil", label="Upload an Image"),
|
108 |
gr.CheckboxGroup(
|
109 |
+
choices=["yolov5", "yolov8", "yolov10"],
|
110 |
value=["yolov5"], # Set the default value (YOLOv5 checked by default)
|
111 |
label="Select Model(s)",
|
112 |
)
|
113 |
],
|
114 |
+
outputs=gr.Gallery(label="Results", elem_id="gallery", rows=2, height=500),
|
115 |
+
title="Visualizing the key image features that drive decisions with our explainable AI tool.",
|
116 |
description="XAI: Upload an image to visualize object detection of your models.."
|
117 |
)
|
118 |
|
119 |
if __name__ == "__main__":
|
120 |
+
interface.launch()
|