Spaces:
Sleeping
Sleeping
File size: 1,654 Bytes
48aa787 576a657 12ce9c5 48aa787 576a657 48aa787 576a657 48aa787 576a657 48aa787 576a657 48aa787 12ce9c5 576a657 48aa787 576a657 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
import gradio as gr, tempfile, shutil, os, sys
from ultralytics import YOLO
import os
# Evita el error de OpenMP
os.environ["OMP_NUM_THREADS"] = "1"
# ────────────────────────────
# Modelo
# ────────────────────────────
model = YOLO("best.pt") # se carga una vez al arrancar
def infer(video):
"Corre la detección sobre el vídeo subido y devuelve el vídeo con boxes"
tmp = tempfile.mkdtemp()
inp = os.path.join(tmp, "in.mp4")
shutil.copy(video, inp)
res = model.predict(source=inp, save=True, conf=0.25, iou=0.45)
return os.path.join(res.save_dir, "in.mp4")
def show_classes():
"Devuelve las clases aprendidas por el modelo"
return ", ".join(model.names)
# ────────────────────────────
# UI en Blocks
# ────────────────────────────
with gr.Blocks(title="Kesherat · Inspección de palas eólicas") as demo:
gr.Markdown("## Inspección de palas eólicas con YOLO")
video_in = gr.Video(label="Sube tu video de inspección")
video_out = gr.Video(label="Video con defectos detectados")
btn_detect = gr.Button("Detectar defectos")
btn_detect.click(fn=infer, inputs=video_in, outputs=video_out)
btn_classes = gr.Button("Mostrar clases del modelo")
txt_classes = gr.Textbox(label="Clases cargadas", interactive=False)
btn_classes.click(fn=show_classes, outputs=txt_classes)
if __name__ == "__main__":
# lanza la app en el Space
demo.launch()
|