Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from utils import cargar_etiquetas, normalizar_nombre, validar_datos_estudiante | |
| from dataset import cargar_datasets | |
| from evaluation import ( | |
| ORDEN_LEADERBOARD_POR_DEFECTO, | |
| evaluate_interface, | |
| obtener_tablas_leaderboard, | |
| ) | |
| OPCIONES_ORDEN_LEADERBOARD = [ | |
| ("Mejores primero", "mejores"), | |
| ("Peores primero", "peores"), | |
| ("M谩s recientes", "recientes"), | |
| ("M谩s antiguos", "antiguos"), | |
| ] | |
| # Cargar etiquetas | |
| etiquetas, num_clases, codigo = cargar_etiquetas() | |
| # Cargar dataset | |
| test_dataloader, sr_dataloader = cargar_datasets(codigo) | |
| def interface_wrapper( | |
| nombre, | |
| matricula, | |
| model_file, | |
| model_type, | |
| orden_clasificacion, | |
| orden_sr, | |
| ): | |
| nombre = normalizar_nombre(nombre) | |
| matricula = (matricula or "").strip() | |
| error_validacion = validar_datos_estudiante(nombre, matricula) | |
| if error_validacion: | |
| raise gr.Error(error_validacion) | |
| return evaluate_interface( | |
| nombre, | |
| matricula, | |
| model_file, | |
| model_type, | |
| orden_clasificacion, | |
| orden_sr, | |
| num_clases, | |
| test_dataloader, | |
| sr_dataloader, | |
| ) | |
| def cargar_tablas_iniciales(orden_clasificacion, orden_sr): | |
| tabla_clasificacion, tabla_sr = obtener_tablas_leaderboard( | |
| orden_clasificacion, orden_sr | |
| ) | |
| return "", "", "", tabla_clasificacion, tabla_sr | |
| def actualizar_leaderboards(orden_clasificacion, orden_sr): | |
| return obtener_tablas_leaderboard(orden_clasificacion, orden_sr) | |
| with gr.Blocks(title="Evaluador de modelos") as demo: | |
| gr.Markdown( | |
| "# Evaluador de modelos\nCarga un modelo de clasificaci贸n o super-resoluci贸n. " | |
| ) | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| nombre = gr.Textbox(label="Nombre completo") | |
| matricula = gr.Textbox(label="Matr铆cula") | |
| model_type = gr.Dropdown( | |
| choices=[ | |
| ("Clasificaci贸n", "clasificacion"), | |
| ("Super-resoluci贸n", "sr"), | |
| ], | |
| value="clasificacion", | |
| label="Tipo de modelo", | |
| ) | |
| model_file = gr.File(label="Archivo del modelo (.safetensor)") | |
| evaluar = gr.Button("Evaluar", variant="primary") | |
| with gr.Column(scale=1): | |
| metric_output = gr.Textbox(label="M茅trica") | |
| sha_output = gr.Textbox(label="SHA256 del modelo") | |
| score_output = gr.Textbox(label="Calificaci贸n") | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| orden_clasificacion = gr.Dropdown( | |
| choices=OPCIONES_ORDEN_LEADERBOARD, | |
| value=ORDEN_LEADERBOARD_POR_DEFECTO, | |
| label="Orden leaderboard clasificaci贸n", | |
| ) | |
| leaderboard_cls = gr.Dataframe( | |
| headers=[ | |
| "Nombre", | |
| "Matr铆cula", | |
| "Accuracy", | |
| "Puntaje", | |
| "SHA256", | |
| "Duplicado", | |
| "Fecha y hora (RD, 12h)", | |
| ], | |
| datatype=["str", "str", "str", "number", "str", "str", "str"], | |
| row_count=(0, "dynamic"), | |
| label="Leaderboard Clasificaci贸n", | |
| ) | |
| with gr.Column(scale=1): | |
| orden_sr = gr.Dropdown( | |
| choices=OPCIONES_ORDEN_LEADERBOARD, | |
| value=ORDEN_LEADERBOARD_POR_DEFECTO, | |
| label="Orden leaderboard super-resoluci贸n", | |
| ) | |
| leaderboard_sr = gr.Dataframe( | |
| headers=[ | |
| "Nombre", | |
| "Matr铆cula", | |
| "PSNR", | |
| "Puntaje", | |
| "SHA256", | |
| "Duplicado", | |
| "Fecha y hora (RD, 12h)", | |
| ], | |
| datatype=["str", "str", "str", "number", "str", "str", "str"], | |
| row_count=(0, "dynamic"), | |
| label="Leaderboard Super-resoluci贸n", | |
| ) | |
| demo.load( | |
| fn=cargar_tablas_iniciales, | |
| inputs=[orden_clasificacion, orden_sr], | |
| outputs=[ | |
| metric_output, | |
| sha_output, | |
| score_output, | |
| leaderboard_cls, | |
| leaderboard_sr, | |
| ], | |
| ) | |
| orden_clasificacion.change( | |
| fn=actualizar_leaderboards, | |
| inputs=[orden_clasificacion, orden_sr], | |
| outputs=[leaderboard_cls, leaderboard_sr], | |
| ) | |
| orden_sr.change( | |
| fn=actualizar_leaderboards, | |
| inputs=[orden_clasificacion, orden_sr], | |
| outputs=[leaderboard_cls, leaderboard_sr], | |
| ) | |
| evaluar.click( | |
| fn=interface_wrapper, | |
| inputs=[ | |
| nombre, | |
| matricula, | |
| model_file, | |
| model_type, | |
| orden_clasificacion, | |
| orden_sr, | |
| ], | |
| outputs=[ | |
| metric_output, | |
| sha_output, | |
| score_output, | |
| leaderboard_cls, | |
| leaderboard_sr, | |
| ], | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |