Spaces:
Build error
Build error
import gradio as gr | |
from gradio.outputs import Label | |
import cv2 | |
import requests | |
import os | |
import numpy as np | |
from ultralytics import YOLO | |
import yolov5 | |
# Image download | |
# file_urls = [ | |
# ] | |
# def download_file(url, save_name): | |
# url = url | |
# if not os.path.exists(save_name): | |
# file = requests.get(url) | |
# open(save_name, 'wb').write(file.content) | |
# for i, url in enumerate(file_urls): | |
# download_file( | |
# file_urls[i], | |
# f"image_{i}.jpg" | |
# ) | |
# Function for inference | |
def yolov5_inference( | |
image: gr.inputs.Image = None, | |
model_path: gr.inputs.Dropdown = None, | |
image_size: gr.inputs.Slider = 640, | |
conf_threshold: gr.inputs.Slider = 0.25, | |
iou_threshold: gr.inputs.Slider = 0.45 ): | |
# Loading Yolo V5 model | |
model = yolov5.load(model_path, device="cpu") | |
# Setting model configuration | |
model.conf = conf_threshold | |
model.iou = iou_threshold | |
# Inference | |
results = model([image], size=image_size) | |
# Cropping the predictions | |
crops = results.crop(save=False) | |
img_crops = [] | |
for i in range(len(crops)): | |
img_crops.append(crops[i]["im"][..., ::-1]) | |
return results.render()[0], img_crops | |
# gradio Input | |
inputs = [ | |
gr.inputs.Image(type="pil", label="Input Image"), | |
gr.inputs.Dropdown(["Damage_Vehicle_Y5.pt","yolov5s.pt", "yolov5m.pt", "yolov5l.pt", "yolov5x.pt"], label="Model", default = 'Crime_Y5.pt'), | |
gr.inputs.Slider(minimum=320, maximum=1280, default=640, step=32, label="Image Size"), | |
gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.25, step=0.05, label="Confidence Threshold"), | |
gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.45, step=0.05, label="IOU Threshold"), | |
] | |
# gradio Output | |
outputs = gr.outputs.Image(type="filepath", label="Output Image") | |
outputs_crops = gr.Gallery(label="Object crop") | |
title = "Vehicle damage detection" | |
# gradio examples: "Image", "Model", "Image Size", "Confidence Threshold", "IOU Threshold" | |
examples = [['1.jpg', 'Damage_Vehicle_Y5.pt', 640, 0.35, 0.45] | |
,['2.jpg', 'Damage_Vehicle_Y5.pt', 640, 0.35, 0.45] | |
,['3.jpg', 'Damage_Vehicle_Y5.pt', 640, 0.35, 0.45]] | |
# gradio app launch | |
demo_app = gr.Interface( | |
fn=yolov5_inference, | |
inputs=inputs, | |
outputs=[outputs,outputs_crops], | |
title=title, | |
examples=examples, | |
cache_examples=True, | |
live=True, | |
theme='huggingface', | |
) | |
demo_app.launch(debug=True, enable_queue=True, width=50, height=50) |