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) |