detection-RGB / utils.py
kevinconka's picture
1st working version
e921d65
raw
history blame
1.2 kB
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