Spaces:
Running
on
Zero
Running
on
Zero
import gradio as gr | |
import PIL.Image as Image | |
from ultralytics import YOLO | |
import spaces | |
import os | |
from huggingface_hub import hf_hub_download | |
# Helper function to download models from Hugging Face | |
def get_model_path(model_name): | |
model_cache_path = hf_hub_download( | |
repo_id="atalaydenknalbant/budgerigar_yolo_models", | |
filename=model_name | |
) | |
return model_cache_path | |
def yolo_inference(images, model_id, conf_threshold, iou_threshold, max_detection): | |
model_path = get_model_path(model_id) # Download model | |
model = YOLO(model_path) | |
results = model.predict( | |
source=images, | |
conf=conf_threshold, | |
iou=iou_threshold, | |
imgsz=640, | |
max_det=max_detection, | |
show_labels=True, | |
show_conf=True, | |
) | |
# Process results and convert to PIL Image | |
for r in results: | |
image_array = r.plot() | |
image = Image.fromarray(image_array[..., ::-1]) | |
return image | |
# Define Gradio interface | |
interface = gr.Interface( | |
fn=yolo_inference, | |
inputs=[ | |
gr.Image(type="pil", label="Upload Image"), | |
gr.Dropdown( | |
choices=['budgerigar_yolo11x.pt', 'budgerigar_yolov9e.pt'], | |
label="Model Name", | |
value="budgerigar_yolo11x.pt", | |
), | |
gr.Slider(minimum=0, maximum=1, value=0.25, label="Confidence Threshold"), | |
gr.Slider(minimum=0, maximum=1, value=0.45, label="IoU Threshold"), | |
gr.Slider(minimum=1, maximum=300, step=1, value=300, label="Max Detection"), | |
], | |
outputs=gr.Image(type="pil", label="Annotated Image"), | |
cache_examples=True, | |
title="Budgerigar Gender Determination", | |
description="Pretrained YOLO models for determining budgerigar gender based on cere color variations. Upload image(s) for inference", | |
examples=[ | |
["Male.png", "budgerigar_yolov9e.pt", 0.25, 0.45, 300], | |
["Female.png", "budgerigar_yolo11x.pt", 0.25, 0.45, 300], | |
], | |
) | |
interface.launch() |