Kesheratmex
Remove auth param (Gradio) & set OMP_NUM_THREADS
48aa787
raw
history blame
1.65 kB
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()