Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from ultralytics import YOLO | |
| import cv2 | |
| import numpy as np | |
| # Load your YOLO model (replace with your model path) | |
| model = YOLO("MPOX.pt") | |
| def detect_mpox(image): | |
| # Run YOLO prediction | |
| results = model.predict(source=image, conf=0.25) | |
| # Extract detections | |
| detections = results[0].boxes | |
| num_detected = len(detections) | |
| # Draw bounding boxes on image | |
| img = np.array(image) | |
| for box in detections: | |
| x1, y1, x2, y2 = map(int, box.xyxy[0]) | |
| confidence = float(box.conf[0]) | |
| cls = int(box.cls[0]) | |
| # Draw rectangle and label | |
| cv2.rectangle(img, (x1, y1), (x2, y2), (0, 0, 255), 2) | |
| label = f"MPOX {confidence:.2f}" | |
| cv2.putText(img, label, (x1, y1 - 10), | |
| cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 0, 255), 2) | |
| # Confirmed case if any detection | |
| status = "Confirmed Case" if num_detected > 2 else "Not Confirmed" | |
| return img, f"Number of MPOX detected: {num_detected}\nStatus: {status}" | |
| # Build Gradio interface | |
| interface = gr.Interface( | |
| fn=detect_mpox, | |
| inputs=gr.Image(type="pil", label="Upload Body Image"), | |
| outputs=[ | |
| gr.Image(type="numpy", label="Detection Result"), | |
| gr.Textbox(label="Detection Summary") | |
| ], | |
| title="MPOX Detection Prototype", | |
| description="Upload a body image to detect and visualize MPOX lesions using YOLO." | |
| ) | |
| if __name__ == "__main__": | |
| interface.launch() | |