Spaces:
Sleeping
Sleeping
import numpy as np | |
import pandas as pd | |
import cv2 | |
import gradio as gr | |
import torch | |
from ultralyticsplus import YOLO, render_result | |
import matplotlib.pyplot as plt | |
# Creating a function to perform predictions | |
def prediction(image: gr.Image = None, | |
image_size: gr.Slider = 640, | |
conf_threshold: gr.Slider = 0.4, | |
iou_threshold: gr.Slider = 0.50): | |
model = YOLO("best.pt") | |
results = model.predict( | |
source=image, | |
conf=conf_threshold, | |
iou=iou_threshold, | |
imgsz=image_size | |
) | |
image = cv2.imread(image) | |
for result in results[0].obb: | |
point_1_x = float(result.xyxyxyxy[0][0][0]) | |
point_1_y = float(result.xyxyxyxy[0][0][1]) | |
point_2_x = float(result.xyxyxyxy[0][1][0]) | |
point_2_y = float(result.xyxyxyxy[0][1][1]) | |
point_3_x = float(result.xyxyxyxy[0][2][0]) | |
point_3_y = float(result.xyxyxyxy[0][2][1]) | |
point_4_x = float(result.xyxyxyxy[0][3][0]) | |
point_4_y = float(result.xyxyxyxy[0][3][1]) | |
cls = int(result.cls) | |
if cls == 1: | |
color = (0, 255, 0) | |
else: | |
color = (255, 0, 0) | |
conf = float(result.conf) | |
text = f"{cls} : {np.round(conf) * 100}%" | |
points = np.array([[point_1_x, point_1_y], | |
[point_2_x, point_2_y], | |
[point_3_x, point_3_y], | |
[point_4_x, point_4_y]], np.int32) | |
points = points.reshape((-1, 1, 2)) | |
cv2.polylines(image, [points], isClosed = True, color = color, thickness = 2) | |
return image | |
inputs = [ | |
gr.Image(type="filepath", label="Select an image"), | |
gr.Slider(minimum=320, maximum=1280, value=640, step=32, label="Image Size"), | |
gr.Slider(minimum=0.0, maximum=1.0, value=0.25, step=0.05, label="Confidence Threshold"), | |
gr.Slider(minimum=0.0, maximum=1.0, value=0.45, step=0.05, label="IOU Threshold") | |
] | |
outputs = gr.Image(type = "filepath", label="Output Image") | |
yolo_app = gr.Interface( | |
fn = prediction, | |
inputs = inputs, | |
outputs = outputs, | |
title = "VPS Model" | |
) | |
yolo_app.launch(debug = True, share = True) | |