Edupy commited on
Commit
593614a
·
1 Parent(s): b83a408

Usando from_pretrained_fastai para carga limpia

Browse files
Files changed (1) hide show
  1. app.py +20 -13
app.py CHANGED
@@ -3,19 +3,29 @@ import gradio as gr
3
  from fastai.vision.all import *
4
  from huggingface_hub import from_pretrained_fastai
5
  import torch, os
 
6
 
7
- # Optimizaciones de CPU para el servidor
 
 
 
 
 
 
 
 
 
 
8
  os.environ.setdefault("OMP_NUM_THREADS", "1")
9
  torch.set_num_threads(1)
10
 
11
- # --- REEMPLAZA CON TU REPO_ID ---
12
- # Ejemplo: "Edupy/pokemon-1class-classifier-26"
13
  learn = from_pretrained_fastai("Edupy/pokemon-1class-classifier-26")
14
 
15
- try:
16
- learn.to_fp32()
17
- except:
18
- pass
19
 
20
  labels = learn.dls.vocab
21
 
@@ -24,16 +34,13 @@ def predict(img):
24
  pred, pred_idx, probs = learn.predict(img)
25
  return {labels[i]: float(probs[i]) for i in range(len(labels))}
26
 
27
- title = "Detector de Tipos Pokémon"
28
- description = "Modelo profesional cargado desde el Hub para identificar tipos elementales."
29
-
30
  demo = gr.Interface(
31
  fn=predict,
32
  inputs=gr.Image(type="pil"),
33
  outputs=gr.Label(num_top_classes=3),
34
- title=title,
35
- description=description
36
  )
37
 
38
- # Configuración de cola para evitar que el Space se cuelgue con muchas peticiones
39
  demo.queue(max_size=8).launch(show_error=True, debug=True)
 
3
  from fastai.vision.all import *
4
  from huggingface_hub import from_pretrained_fastai
5
  import torch, os
6
+ import __main__
7
 
8
+ # 1. REDEFINIMOS LAS FUNCIONES AQUÍ MISMO
9
+ # Estas son las funciones que el modelo "recuerda" de tu entrenamiento
10
+ def get_x(i): return None
11
+ def get_y(i): return None
12
+
13
+ # 2. LAS ASIGNAMOS AL MÓDULO PRINCIPAL
14
+ # Esto es lo que permite que load_learner las encuentre
15
+ __main__.get_x = get_x
16
+ __main__.get_y = get_y
17
+
18
+ # Configuraciones de rendimiento para el servidor
19
  os.environ.setdefault("OMP_NUM_THREADS", "1")
20
  torch.set_num_threads(1)
21
 
22
+ # 3. CARGAMOS EL MODELO
23
+ # Ahora from_pretrained_fastai no dará el error "res"
24
  learn = from_pretrained_fastai("Edupy/pokemon-1class-classifier-26")
25
 
26
+ # Pasar a FP32 por si el modelo se guardó en semi-precisión (ahorra errores en CPU)
27
+ try: learn.to_fp32()
28
+ except: pass
 
29
 
30
  labels = learn.dls.vocab
31
 
 
34
  pred, pred_idx, probs = learn.predict(img)
35
  return {labels[i]: float(probs[i]) for i in range(len(labels))}
36
 
37
+ # 4. INTERFAZ DE GRADIO
 
 
38
  demo = gr.Interface(
39
  fn=predict,
40
  inputs=gr.Image(type="pil"),
41
  outputs=gr.Label(num_top_classes=3),
42
+ title="Detector de Tipos Pokémon",
43
+ description="Sube una imagen de un Pokémon para predecir su tipo principal."
44
  )
45
 
 
46
  demo.queue(max_size=8).launch(show_error=True, debug=True)