Spaces:
Sleeping
Sleeping
Commit
·
979f955
1
Parent(s):
abce576
Debug: param extraction issue
Browse files
yolov8.py
CHANGED
@@ -41,11 +41,7 @@ def generate_cam_image(model, target_layers, tensor, rgb_img, boxes):
|
|
41 |
cam = EigenCAM(model, target_layers)
|
42 |
grayscale_cam = cam(tensor)[0, :, :]
|
43 |
img_float = np.float32(rgb_img) / 255
|
44 |
-
|
45 |
-
# Generate Grad-CAM
|
46 |
cam_image = show_cam_on_image(img_float, grayscale_cam, use_rgb=True)
|
47 |
-
|
48 |
-
# Renormalize Grad-CAM inside bounding boxes
|
49 |
renormalized_cam = np.zeros(grayscale_cam.shape, dtype=np.float32)
|
50 |
for x1, y1, x2, y2 in boxes:
|
51 |
renormalized_cam[y1:y2, x1:x2] = scale_cam_image(grayscale_cam[y1:y2, x1:x2].copy())
|
@@ -56,27 +52,19 @@ def generate_cam_image(model, target_layers, tensor, rgb_img, boxes):
|
|
56 |
|
57 |
|
58 |
def xai_yolov8n(image):
|
59 |
-
# Load YOLOv8n model
|
60 |
model = YOLO('yolov8n.pt') # Load YOLOv8n pre-trained weights
|
61 |
model.eval()
|
62 |
model.cpu()
|
63 |
|
64 |
target_layers = [model.model.model[-2]] # Grad-CAM target layer
|
65 |
-
|
66 |
-
# Run YOLO detection
|
67 |
results = model([image])
|
68 |
-
|
|
|
69 |
detections_img = draw_detections(boxes, colors, names, image.copy())
|
70 |
-
|
71 |
-
# Prepare input tensor for Grad-CAM
|
72 |
img_float = np.float32(image) / 255
|
73 |
transform = transforms.ToTensor()
|
74 |
tensor = transform(img_float).unsqueeze(0)
|
75 |
-
|
76 |
-
# Grad-CAM visualization
|
77 |
cam_image, renormalized_cam_image = generate_cam_image(model, target_layers, tensor, image, boxes)
|
78 |
-
|
79 |
-
# Combine results
|
80 |
final_image = np.hstack((image, cam_image, renormalized_cam_image))
|
81 |
caption = "Results using YOLOv8n"
|
82 |
return Image.fromarray(final_image), caption
|
|
|
41 |
cam = EigenCAM(model, target_layers)
|
42 |
grayscale_cam = cam(tensor)[0, :, :]
|
43 |
img_float = np.float32(rgb_img) / 255
|
|
|
|
|
44 |
cam_image = show_cam_on_image(img_float, grayscale_cam, use_rgb=True)
|
|
|
|
|
45 |
renormalized_cam = np.zeros(grayscale_cam.shape, dtype=np.float32)
|
46 |
for x1, y1, x2, y2 in boxes:
|
47 |
renormalized_cam[y1:y2, x1:x2] = scale_cam_image(grayscale_cam[y1:y2, x1:x2].copy())
|
|
|
52 |
|
53 |
|
54 |
def xai_yolov8n(image):
|
|
|
55 |
model = YOLO('yolov8n.pt') # Load YOLOv8n pre-trained weights
|
56 |
model.eval()
|
57 |
model.cpu()
|
58 |
|
59 |
target_layers = [model.model.model[-2]] # Grad-CAM target layer
|
|
|
|
|
60 |
results = model([image])
|
61 |
+
print(results)
|
62 |
+
boxes, colors, names = parse_detections(results[0])
|
63 |
detections_img = draw_detections(boxes, colors, names, image.copy())
|
|
|
|
|
64 |
img_float = np.float32(image) / 255
|
65 |
transform = transforms.ToTensor()
|
66 |
tensor = transform(img_float).unsqueeze(0)
|
|
|
|
|
67 |
cam_image, renormalized_cam_image = generate_cam_image(model, target_layers, tensor, image, boxes)
|
|
|
|
|
68 |
final_image = np.hstack((image, cam_image, renormalized_cam_image))
|
69 |
caption = "Results using YOLOv8n"
|
70 |
return Image.fromarray(final_image), caption
|