|
from ultralytics import YOLO |
|
import matplotlib.pyplot as plt |
|
import gradio as gr |
|
import cv2 |
|
import numpy as np |
|
import random |
|
import seaborn as sns |
|
from PIL import Image |
|
import io |
|
def predict(path:str): |
|
model = YOLO("yolov8n.yaml") |
|
model = YOLO("best.pt") |
|
image = cv2.imread(path) |
|
|
|
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) |
|
results = model.predict(source=path) |
|
paleta= sns.color_palette("bright", 17) |
|
fig = plt.figure() |
|
vectObjs = results[0].masks.xy |
|
resNumClase = results[0].boxes.cls.numpy().astype(int) |
|
conf = results[0].boxes.conf.numpy() |
|
for i in range(len(vectObjs)): |
|
objDet = vectObjs[i].astype(int) |
|
color = (paleta[i][0]*255, paleta[i][1]*255, paleta[i][2]*255) |
|
image = cv2.polylines(image, [objDet], True, color, 4) |
|
plt.text(objDet[0][0], objDet[0][1], results[0].names[resNumClase[i]]+" "+ str(conf[i]), bbox=dict(facecolor=paleta[i], alpha=0.5)) |
|
|
|
plt.imshow(image) |
|
plt.axis('off') |
|
return plt |
|
gr.Interface(fn=predict, |
|
inputs=gr.components.Image(type="filepath", label="Input"), |
|
outputs=gr.Plot(label="Resultado de detección de objetos con regularizacion")).launch() |
|
|