Spaces:
Running
Running
File size: 1,770 Bytes
36e1064 caff61e e82b28e bccf53b dc80d48 c5a0ba8 caff61e 1195707 e82b28e 1195707 dc80d48 caff61e 36e1064 1195707 36e1064 a29d5e2 c5a0ba8 dc80d48 a29d5e2 dc80d48 1195707 e82b28e dc80d48 36e1064 dc80d48 1195707 dc80d48 36e1064 1195707 e82b28e 1195707 36e1064 1195707 a29d5e2 dc80d48 46e3370 1195707 e82b28e 1195707 e82b28e 46e3370 1195707 |
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
from ultralytics import YOLO
import torch
import cv2
import numpy as np
import gradio as gr
from PIL import Image
# Load YOLOv8 model
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = YOLO("yolov8x.pt") # Load a more powerful YOLOv8 model
model.to(device)
model.eval()
# Load COCO class labels
CLASS_NAMES = model.names # YOLO's built-in class names
def preprocess_image(image):
image = Image.fromarray(image)
image = image.convert("RGB")
return image
def detect_objects(image):
image = preprocess_image(image)
results = model.predict(image) # Run YOLO inference
# Convert results to bounding box format
image = np.array(image)
for result in results:
for box, cls, conf in zip(result.boxes.xyxy, result.boxes.cls, result.boxes.conf):
x1, y1, x2, y2 = map(int, box[:4])
class_name = CLASS_NAMES[int(cls)] # Get class name
confidence = conf.item() * 100 # Convert confidence to percentage
# Draw a bolder bounding box
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 4) # Increased thickness
# Larger text for class label
label = f"{class_name} ({confidence:.1f}%)"
cv2.putText(image, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX,
1, (0, 255, 0), 3, cv2.LINE_AA) # Larger text
return image
# Gradio UI with Submit button
iface = gr.Interface(
fn=detect_objects,
inputs=gr.Image(type="numpy", label="Upload Image"),
outputs=gr.Image(type="numpy", label="Detected Objects"),
title="Object Detection",
description="Use webcam or Upload an image to detect objects.",
allow_flagging="never" # Disables unwanted flags
)
iface.launch() |