Spaces:
Sleeping
Sleeping
File size: 1,835 Bytes
caff61e bccf53b dc80d48 4fa263e caff61e b5a364c e82b28e b5a364c b86c5b1 8378a4b 36e1064 b5a364c ab96246 8378a4b ab96246 e82b28e a32f6c3 b86c5b1 a32f6c3 b5a364c eaa57e7 a32f6c3 eaa57e7 a32f6c3 35669c6 eaa57e7 a32f6c3 b5a364c eaa57e7 b86c5b1 b5a364c eaa57e7 b5a364c eaa57e7 b86c5b1 ab96246 a32f6c3 ab96246 b5a364c eaa57e7 a32f6c3 eaa57e7 b5a364c b86c5b1 46e3370 ab96246 |
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 55 56 57 |
import torch
import numpy as np
import gradio as gr
from PIL import Image
# Device configuration
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
# Load YOLOv5 model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True).to(device)
# Set model confidence threshold
model.conf = 0.5
if device.type == 'cuda':
model.half()
def process_frame(image):
"""Process a video frame or image and apply YOLOv5 object detection."""
if image is None:
return None
try:
image_pil = Image.fromarray(image)
with torch.no_grad():
results = model(image_pil)
rendered_images = results.render()
return np.array(rendered_images[0]) if rendered_images else image
except Exception as e:
print(f"Error processing frame: {e}")
return image
# Create Gradio UI
with gr.Blocks(title="Real-Time Object Detection") as app:
gr.Markdown("# Real-Time Object Detection")
with gr.Tabs():
# ๐ท Live Webcam Tab
with gr.TabItem("๐ท Live Camera"):
with gr.Row():
webcam_input = gr.Video(label="Live Feed")
live_output = gr.Image(label="Processed Feed")
webcam_input.change(process_frame, inputs=webcam_input, outputs=live_output)
# ๐ผ๏ธ Image Upload Tab (With Submit Button)
with gr.TabItem("๐ผ๏ธ Image Upload"):
with gr.Row():
upload_input = gr.Image(type="numpy", label="Upload Image")
submit_button = gr.Button("Submit")
upload_output = gr.Image(label="Detection Result")
submit_button.click(process_frame, inputs=upload_input, outputs=upload_output)
app.queue().launch(server_name="0.0.0.0", server_port=7860, share=False)
|