Spaces:
Sleeping
Sleeping
import os | |
import requests | |
from io import BytesIO | |
import numpy as np | |
from PIL import Image | |
import yolov5 | |
from yolov5.utils.plots import Annotator, colors | |
import gradio as gr | |
def load_model(model_path, img_size=640): | |
HF_TOKEN = os.getenv("HF_TOKEN") | |
if HF_TOKEN is not None: # assume SECRET variable is set | |
model = yolov5.load(model_path, hf_token=HF_TOKEN) | |
else: | |
model = yolov5.load(model_path) | |
model.img_size = img_size # add img_size attribute | |
return model | |
def load_image_from_url(url): | |
if not url: # empty or None | |
return gr.Image(interactive=True) | |
try: | |
response = requests.get(url, timeout=5) | |
image = Image.open(BytesIO(response.content)) | |
except Exception as e: | |
raise gr.Error("Unable to load image from URL") from e | |
return image.convert("RGB") | |
def inference(model, image): | |
results = model(image, size=model.img_size) | |
annotator = Annotator(np.asarray(image)) | |
for *box, _, cls in reversed(results.pred[0]): | |
# label = f'{model.names[int(cls)]} {conf:.2f}' | |
# print(f'{cls} {conf:.2f} {box}') | |
annotator.box_label(box, "", color=colors(cls, True)) | |
return annotator.im | |