Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from ultralytics import YOLO | |
| from PIL import Image | |
| import numpy as np | |
| # Load the YOLOv9 model | |
| model = YOLO('best.pt') # Make sure best.pt is in the same folder | |
| def detect(image): | |
| results = model(image) | |
| annotated_frame = results[0].plot() # Draw predictions on the image | |
| # Get detection results | |
| detections = [] | |
| for r in results: | |
| boxes = r.boxes | |
| for box in boxes: | |
| x1, y1, x2, y2 = box.xyxy[0].tolist() # Get box coordinates | |
| conf = float(box.conf[0]) # Get confidence | |
| cls = int(box.cls[0]) # Get class | |
| class_name = model.names[cls] # Get class name | |
| detections.append({ | |
| 'class': cls, | |
| 'class_name': class_name, | |
| 'confidence': conf, | |
| 'box': [x1, y1, x2, y2] | |
| }) | |
| return Image.fromarray(annotated_frame), detections | |
| # Launch the Gradio interface | |
| gr.Interface( | |
| fn=detect, | |
| inputs=gr.Image(type="pil"), | |
| outputs=[ | |
| gr.Image(type="pil", label="Detected Image"), | |
| gr.JSON(label="Detection Results") | |
| ], | |
| title="YOLOv9 (Ultralytics) Object Detection", | |
| description="Upload an image to run object detection using your custom YOLOv9 model. The results will show both the annotated image and the detection details including class names.", | |
| ).launch() | |