rugarce commited on
Commit
66036df
路
verified 路
1 Parent(s): d35e452

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -0
app.py ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from fastai.vision.all import *
3
+ import numpy as np
4
+
5
+ # --- 1. Definimos la clase personalizada (Obligatorio para cargar el modelo) ---
6
+ # Tiene que llamarse IGUAL que en tu notebook
7
+ class TargetMaskConvertTransform(ItemTransform):
8
+ def __init__(self):
9
+ pass
10
+ def encodes(self, x):
11
+ return x # En inferencia no necesitamos hacer nada con la m谩scara
12
+
13
+ # --- 2. Funciones auxiliares para cargar el modelo ---
14
+ # Si usaste alguna funci贸n externa para get_y, def铆nela como 'pass' o lambda
15
+ def get_y_fn(x): return x
16
+ def ParentSplitter(x): return x
17
+
18
+ # --- 3. Cargar el modelo ---
19
+ learn = load_learner('model.pkl')
20
+
21
+ # --- 4. Definir la funci贸n de predicci贸n ---
22
+ def predict(img):
23
+ # FastAI predice y devuelve: (pred_mask, pred_idx, probabilities)
24
+ pred_mask, _, _ = learn.predict(img)
25
+
26
+ # Convertimos a numpy para colorear
27
+ mask_data = np.array(pred_mask, dtype=np.uint8)
28
+
29
+ # --- Coloreado manual (Igual que hicimos en el notebook) ---
30
+ # Creamos una imagen RGB vac铆a
31
+ h, w = mask_data.shape
32
+ color_mask = np.zeros((h, w, 3), dtype=np.uint8)
33
+
34
+ # Aplicamos la paleta de colores
35
+ # 0:Fondo(Negro), 1:Hojas(Verde), 2:Madera(Marr贸n), 3:Poste(Gris), 4:Uvas(Morado)
36
+ color_mask[mask_data == 1] = [0, 255, 0] # Verde
37
+ color_mask[mask_data == 2] = [139, 69, 19] # Marr贸n
38
+ color_mask[mask_data == 3] = [192, 192, 192] # Gris
39
+ color_mask[mask_data == 4] = [128, 0, 128] # Morado
40
+
41
+ # Retornamos la imagen coloreada
42
+ return color_mask
43
+
44
+ # --- 5. Interfaz Gradio ---
45
+ title = "Segmentaci贸n de Racimos de Uva 馃崌"
46
+ description = "Sube una foto de un vi帽edo y el modelo detectar谩: Uvas (Morado), Hojas (Verde), Madera (Marr贸n) y Postes (Gris)."
47
+ examples = [] # Puedes subir fotos de ejemplo si quieres
48
+
49
+ iface = gr.Interface(
50
+ fn=predict,
51
+ inputs=gr.Image(type="pil"),
52
+ outputs=gr.Image(type="numpy"),
53
+ title=title,
54
+ description=description
55
+ )
56
+
57
+ iface.launch()