Spaces:
Sleeping
Sleeping
File size: 2,895 Bytes
e9c4110 4ff2734 58c3a68 ba84d55 4ff2734 24441b8 4ff2734 c226c74 4ff2734 4db9925 3f3dc92 d1bdf0a 5a8efd8 06ed3eb ca114f3 e638fa5 7371c8e 89fe585 2f51013 89fe585 58c3a68 3f6822c 89fe585 0a7b91b 58c3a68 3f6822c 883a28a | 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 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | import gradio as gr
import numpy as np
from PIL import Image
from fastai.vision.all import *
from huggingface_hub import from_pretrained_fastai
import pathlib
# Cargar el modelo preentrenado
repo_id = "ignaciobfp/moonboard_difficulty"
learner = from_pretrained_fastai(repo_id)
labels = learner.dls.vocab
# Funci贸n para realizar predicciones
def predict(img):
pred,pred_idx,probs = learner.predict(img)
return {labels[i]: float(probs[i]) for i in range(len(labels))}
def row_to_image(presas, ano, inclinacion):
m, n = 20, 18
image_matrix = np.zeros((n, m, 3), dtype=np.uint8)
for presa in presas:
letra, numero = presa[0], int(presa[1:])
valor = 1 # Se asume que todas las presas marcadas son blancas
image_matrix[numero-1, ord(letra) - ord('A')] = [255 * valor, 255 * valor, 255 * valor]
ano_scaled = (ano - 2016) / (2019 - 2016)
grey_intensity_ano = int(ano_scaled * (255 - 50) + 50)
image_matrix[:, -7:-5] = [grey_intensity_ano, grey_intensity_ano, grey_intensity_ano]
inclinacion_scaled = (inclinacion - 25) / (40 - 25)
grey_intensity_inclinacion = int(inclinacion_scaled * (100) + 100)
image_matrix[:, -3:-1] = [grey_intensity_inclinacion, grey_intensity_inclinacion, grey_intensity_inclinacion]
image_matrix_padded = np.pad(image_matrix, ((3, 3), (2, 2), (0, 0)), mode='constant')
image_pil = Image.fromarray(image_matrix_padded, 'RGB')
new_size = (image_pil.width * 3, image_pil.height * 3)
resized_image_pil = image_pil.resize(new_size, resample=Image.NEAREST)
return resized_image_pil
def mostrar_parametros(ano, inclinacion, *seleccion):
# Imprimir en el log la variable seleccion
print("Seleccion:", seleccion)
# Asegurarse de que la selecci贸n sea una lista plana
seleccion_plana = [item for sublist in seleccion for item in sublist]
imagen = row_to_image(seleccion_plana, int(ano), int(inclinacion))
return (imagen, predict(imagen))
# Generar todas las combinaciones posibles de letras y n煤meros
letras = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"]
numeros = list(map(str, range(1, 19)))
combinaciones = [f"{letra}{numero}" for numero in numeros for letra in letras]
# Dividir las combinaciones en listas de 11 elementos (A-K)
combinaciones_por_filas = [combinaciones[i:i+11] for i in range(0, len(combinaciones), 11)]
# Crear la interfaz
inputs = [
gr.Dropdown(["2016", "2017", "2019"], label="A帽o"),
gr.Dropdown(["25", "40"], label="Inclinaci贸n"),
]
# Agregar un CheckboxGroup para cada fila (del 1 al 18)
for i, fila in enumerate(combinaciones_por_filas, start=1):
inputs.append(gr.CheckboxGroup(fila, label=f"Fila {i}", scale=4, min_width=2000))
iface = gr.Interface(
fn=mostrar_parametros,
inputs=inputs,
outputs=[gr.Image(label="Output"), gr.Label("Predicci贸n del Modelo")],
)
iface.launch(share=False)
|