Carlos012 commited on
Commit
6d3d2bb
路
1 Parent(s): 8bf8c8a

feat (interfaz): Actualizar rutas de acceso a modelo

Browse files
Files changed (1) hide show
  1. app.py +21 -11
app.py CHANGED
@@ -27,6 +27,12 @@ TAMANIO_MAXIMO_MB = 20
27
  RESOLUCION = (224, 224)
28
  DISPOSITIVO = "cuda" if torch.cuda.is_available() else "cpu"
29
 
 
 
 
 
 
 
30
  # Transformaciones de imagen
31
  TRANSFORMACION = transforms.Compose(
32
  [
@@ -40,10 +46,9 @@ TRANSFORMACION = transforms.Compose(
40
  @dataclass
41
  class ConfigModelo:
42
  repo_id: str = "Carlos012/vit_papas"
43
- nombre_archivo: str = ""
44
  num_clases: int = 2
45
  modelo_base: str = "vit_base_patch16_224"
46
- nombre_display: str = "Modelo FT"
47
 
48
 
49
  class ClasificadorPapasViT(nn.Module):
@@ -70,10 +75,11 @@ class GestorModelo:
70
  try:
71
  # Intentar usar token de variable de entorno
72
  token = os.getenv("HF_TOKEN")
73
-
 
74
  ruta_modelo = hf_hub_download(
75
  repo_id=self.config.repo_id,
76
- filename=self.config.nombre_archivo,
77
  token=token,
78
  repo_type="model",
79
  )
@@ -117,10 +123,16 @@ class GestorModelo:
117
 
118
  print(f"Modelo cargado exitosamente en {DISPOSITIVO}")
119
  return True
120
-
121
  except Exception as e:
122
  print(f"Error al cargar modelo: {e}")
123
  return False
 
 
 
 
 
 
124
 
125
  @staticmethod
126
  def _reshape_transform(tensor: torch.Tensor) -> torch.Tensor:
@@ -164,10 +176,10 @@ class ProcesadorImagen:
164
 
165
  return True, "OK"
166
 
 
167
  def procesar_con_modelo(
168
  self, imagen_path: str, gestor: GestorModelo, nombre_modelo: str
169
  ) -> Dict:
170
- """Procesa una imagen con un modelo espec铆fico"""
171
  # Cargar modelo si es necesario
172
  if gestor.modelo is None:
173
  if not gestor.cargar_modelo():
@@ -212,8 +224,8 @@ class ProcesadorImagen:
212
  except Exception as e:
213
  return {"error": f"Error en {nombre_modelo}: {str(e)}"}
214
 
 
215
  def procesar(self, imagen_path: str) -> Dict:
216
- """Procesa imagen con ambos modelos y retorna comparaci贸n"""
217
  tiempo_inicio = time.time()
218
 
219
  # Validar imagen
@@ -252,12 +264,10 @@ class ProcesadorImagen:
252
 
253
  # Instancias globales de los gestores
254
  config_ft = ConfigModelo(
255
- nombre_archivo="modelo_v3_hibrido/fine_tuning_parcial/vit_papas_pesos_ft.pt",
256
- nombre_display="Modelo FT",
257
  )
258
  config_tl = ConfigModelo(
259
- nombre_archivo="modelo_v3_hibrido/transfer_learning/vit_papas_pesos_tl.pt",
260
- nombre_display="Modelo TL",
261
  )
262
  gestor_ft = GestorModelo(config_ft)
263
  gestor_tl = GestorModelo(config_tl)
 
27
  RESOLUCION = (224, 224)
28
  DISPOSITIVO = "cuda" if torch.cuda.is_available() else "cpu"
29
 
30
+ RUTAS_MODELOS = {
31
+ "Modelo_FT": "modelo_v3_hibrido/fine_tuning_parcial/vit_papas_pesos_ft.pt",
32
+ "Modelo_TL": "modelo_v3_hibrido/transfer_learning/vit_papas_pesos_tl.pt",
33
+ }
34
+
35
+
36
  # Transformaciones de imagen
37
  TRANSFORMACION = transforms.Compose(
38
  [
 
46
  @dataclass
47
  class ConfigModelo:
48
  repo_id: str = "Carlos012/vit_papas"
49
+ nombre_modelo: str = ""
50
  num_clases: int = 2
51
  modelo_base: str = "vit_base_patch16_224"
 
52
 
53
 
54
  class ClasificadorPapasViT(nn.Module):
 
75
  try:
76
  # Intentar usar token de variable de entorno
77
  token = os.getenv("HF_TOKEN")
78
+ nombre_modelo = self._resolver_nombre_modelo()
79
+
80
  ruta_modelo = hf_hub_download(
81
  repo_id=self.config.repo_id,
82
+ filename=nombre_modelo,
83
  token=token,
84
  repo_type="model",
85
  )
 
123
 
124
  print(f"Modelo cargado exitosamente en {DISPOSITIVO}")
125
  return True
126
+
127
  except Exception as e:
128
  print(f"Error al cargar modelo: {e}")
129
  return False
130
+
131
+ def _resolver_nombre_modelo(self) -> str:
132
+ # utiliza el nombre del modelo para resolver la ruta en HF Hub
133
+ ruta = RUTAS_MODELOS.get(self.config.nombre_modelo, self.config.nombre_modelo)
134
+ # normalizar ruta para evitar problemas de formato
135
+ return ruta.strip().lstrip("/\").replace("\", "/")
136
 
137
  @staticmethod
138
  def _reshape_transform(tensor: torch.Tensor) -> torch.Tensor:
 
176
 
177
  return True, "OK"
178
 
179
+ # funci贸n para procesar la imagen con un modelo espec铆fico
180
  def procesar_con_modelo(
181
  self, imagen_path: str, gestor: GestorModelo, nombre_modelo: str
182
  ) -> Dict:
 
183
  # Cargar modelo si es necesario
184
  if gestor.modelo is None:
185
  if not gestor.cargar_modelo():
 
224
  except Exception as e:
225
  return {"error": f"Error en {nombre_modelo}: {str(e)}"}
226
 
227
+ # funci贸n para procesar la imagen con ambos modelos y comparar resultados
228
  def procesar(self, imagen_path: str) -> Dict:
 
229
  tiempo_inicio = time.time()
230
 
231
  # Validar imagen
 
264
 
265
  # Instancias globales de los gestores
266
  config_ft = ConfigModelo(
267
+ nombre_modelo="Modelo_FT",
 
268
  )
269
  config_tl = ConfigModelo(
270
+ nombre_modelo="Modelo_TL",
 
271
  )
272
  gestor_ft = GestorModelo(config_ft)
273
  gestor_tl = GestorModelo(config_tl)