File size: 1,828 Bytes
e0d86b8
9dc172d
 
 
b11e0ce
e0d86b8
 
 
9dc172d
 
 
e0d86b8
 
 
9dc172d
e0d86b8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from fastai.vision.all import *
from huggingface_hub import from_pretrained_fastai
import gradio as gr

# ------------------------------
# 1. Cargar el modelo desde Hugging Face
# -------------------------------
repo_id = "AdrianRevi/Practica1Blindness"  # Cambiar si es necesario
learner = from_pretrained_fastai(repo_id)
labels = learner.dls.vocab

# -------------------------------
# 2. Función de predicción
# -------------------------------
def predict(img):
    try:
        pred, pred_idx, probs = learner.predict(img)
        return {labels[i]: float(probs[i]) for i in range(len(labels))}
    except Exception as e:
        return {"Error": str(e)}

# -------------------------------
# 3. Interfaz Gradio
# -------------------------------
title = "👁️ Clasificador de Ceguera con FastAI"
description = """
Esta aplicación utiliza un modelo de **Aprendizaje Profundo** entrenado con `fastai` para predecir el **grado de ceguera** en imágenes de retina.

📌 El modelo fue entrenado en Google Colab y desplegado en Hugging Face Spaces mediante `from_pretrained_fastai`.

🔍 Puedes subir tu propia imagen o usar uno de los ejemplos de la galería.

📷 La imagen se redimensiona automáticamente a 128x128 píxeles (tamaño de entrada del modelo).
"""
examples = ['20068.jpg', '20084.jpg']  # Archivos locales en el Space

# -------------------------------
# 4. Crear y lanzar interfaz
# -------------------------------
demo = gr.Interface(
    fn=predict,
    inputs=gr.Image(type="pil", shape=(128, 128), label="Sube una imagen de retina"),
    outputs=gr.Label(num_top_classes=3, label="Predicción (Top 3)"),
    examples=examples,
    title=title,
    description=description,
    allow_flagging="never",
    live=False,
    theme="default",
)

if __name__ == "__main__":
    demo.launch(show_error=True)