Spaces:
Sleeping
Sleeping
File size: 1,557 Bytes
b764ffe e134b51 be425b2 682c5ed ec23149 682c5ed e134b51 be425b2 ec23149 4dee5e9 6cd21dc e134b51 ec23149 e134b51 6cd21dc e134b51 be425b2 6cd21dc 4dee5e9 6cd21dc e134b51 6cd21dc ec23149 6cd21dc ec23149 6cd21dc b764ffe 6cd21dc ec23149 b764ffe 6cd21dc ec23149 |
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 |
import gradio as gr
from ultralytics import YOLO
import spaces
import torch
# Load pre-trained YOLOv8 model
model = YOLO("yolov8x-doclaynet-epoch64-imgsz640-initiallr1e-4-finallr1e-5.pt")
# Get class names from model
class_names = model.names
@spaces.GPU(duration=60)
def process_image(image):
try:
# Process the image
results = model(source=image, save=False, show_labels=True, show_conf=True, show_boxes=True)
result = results[0] # Get the first result
# Extract annotated image and labels with class names
annotated_image = result.plot()
# Convert box.cls tensor to float before formatting
detected_areas_labels = "\n".join([
f"{class_names[int(box.cls.item())].upper()}: {box.conf:.2f}" for box in result.boxes
])
return annotated_image, detected_areas_labels
except Exception as e:
return None, f"Error processing image: {e}"
# Create the Gradio Interface
with gr.Blocks() as demo:
gr.Markdown("# Document Segmentation Demo (ZeroGPU)")
# Input Components
input_image = gr.Image(type="pil", label="Upload Image")
# Output Components
output_image = gr.Image(type="pil", label="Annotated Image")
output_text = gr.Textbox(label="Detected Areas and Labels")
# Button to trigger inference
btn = gr.Button("Run Document Segmentation")
btn.click(fn=process_image, inputs=input_image, outputs=[output_image, output_text])
# Launch the demo
demo.queue(max_size=1).launch() # Queue to handle concurrent requests
|