AI-Naga/Container_Code_Detection
0
1import gradio as gr2from gradio.outputs import Label3import cv24import requests5import os6import numpy as np7 8from ultralytics import YOLO9import yolov510 11# Function for inference12def yolov5_inference(13 image: gr.inputs.Image = None,14 model_path: gr.inputs.Dropdown = None,15 image_size: gr.inputs.Slider = 640,16 conf_threshold: gr.inputs.Slider = 0.25,17 iou_threshold: gr.inputs.Slider = 0.45 ):18 19 # Loading Yolo V5 model20 model = yolov5.load(model_path, device="cpu")21 22 # Setting model configuration 23 model.conf = conf_threshold24 model.iou = iou_threshold25 26 # Inference27 results = model([image], size=image_size)28 29 # Cropping the predictions 30 crops = results.crop(save=False)31 img_crops = []32 for i in range(len(crops)):33 img_crops.append(crops[i]["im"][..., ::-1])34 return results.render()[0], img_crops35 36# gradio Input37inputs = [38 gr.inputs.Image(type="pil", label="Input Image"),39 gr.inputs.Dropdown(["Container_YOLOV5.pt"], label="Model", default = 'Container_YOLOV5.pt'),40 gr.inputs.Slider(minimum=320, maximum=1280, default=640, step=32, label="Image Size"),41 gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.25, step=0.05, label="Confidence Threshold"),42 gr.inputs.Slider(minimum=0.0, maximum=1.0, default=0.45, step=0.05, label="IOU Threshold"),43]44 45# gradio Output46outputs = gr.outputs.Image(type="filepath", label="Output Image")47outputs_crops = gr.Gallery(label="Object crop")48 49title = "Container code detection"50 51# gradio examples: "Image", "Model", "Image Size", "Confidence Threshold", "IOU Threshold"52examples = [['image_0.jpg', 'Container_YOLOV5.pt', 640, 0.35, 0.45]53 ,['image_1.jpg', 'Container_YOLOV5.pt', 640, 0.35, 0.45]54 ,['image_2.jpg', 'Container_YOLOV5.pt', 640, 0.35, 0.45],55 ]56 57# gradio app launch58demo_app = gr.Interface(59 fn=yolov5_inference,60 inputs=inputs,61 outputs=[outputs,outputs_crops],62 title=title,63 description="Scroll down for sample inputs !!!",64 examples=examples,65 cache_examples=False,66 live=True,67 theme='huggingface',68)69demo_app.launch(debug=True, enable_queue=True, width=50, height=50)