StarLord69's picture
Update app.py
8b11c4d verified
Raw History Blame Contribute Delete
1.24 kB
import gradio as gr
from PIL import Image
import numpy as np
from ultralytics import YOLO
from pillow_heif import register_heif_opener
# Register HEIF opener to handle .HEIC files
register_heif_opener()
def load_model():
return YOLO('yolov8x.pt')
model = load_model()
def process_image(input_image):
if input_image is None:
return None
# Convert input to PIL Image if it's not already
if not isinstance(input_image, Image.Image):
input_image = Image.open(input_image)
# Convert PIL Image to numpy array
np_image = np.array(input_image)
# Ensure the image is 3D
if len(np_image.shape) == 2:
np_image = np.stack((np_image,)*3, axis=-1)
# Run YOLO model
results = model(np_image)
# Plot results on image
plotted_img = results[0].plot()
# Convert numpy array back to PIL Image
output_image = Image.fromarray(plotted_img)
return output_image
iface = gr.Interface(
fn=process_image,
inputs=gr.Image(type="pil"),
outputs=gr.Image(type="pil"),
title="Object Detection with YOLO",
description="Upload an image and the model will detect objects."
)
if __name__ == "__main__":
iface.launch(share=False)