GianmarcoJTA commited on
Commit
8fecf79
verified
1 Parent(s): 3a7e457
Files changed (1) hide show
  1. app.py +50 -0
app.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import cv2
3
+ import numpy as np
4
+ from tensorflow.keras.models import load_model
5
+ from tensorflow.keras.applications.mobilenet_v2 import preprocess_input
6
+ import os
7
+
8
+ # Rutas relativas dentro del *Space* en Hugging Face
9
+ code_path = os.getcwd() # Obtiene el directorio actual donde est谩 el script
10
+ models_path = os.path.join(code_path, 'models')
11
+ haarcascade_path = os.path.join(code_path, 'haarcascades', 'haarcascade_frontalface_default.xml')
12
+
13
+ # Verificar si el archivo Haar Cascade existe
14
+ if not os.path.exists(haarcascade_path):
15
+ print(f'No se encontr贸 el archivo Haar Cascade en {haarcascade_path}. Aseg煤rate de subirlo correctamente.')
16
+ exit()
17
+
18
+ # Cargar el clasificador Haar Cascade para detecci贸n de rostros
19
+ face_cascade = cv2.CascadeClassifier(haarcascade_path)
20
+
21
+ # Cargar el modelo entrenado
22
+ modelo_guardado = os.path.join(models_path, 'modelo_estimacion_edad_mejor.h5')
23
+ if not os.path.exists(modelo_guardado):
24
+ print(f'No se encontr贸 el modelo en {modelo_guardado}. Por favor, entrena el modelo primero.')
25
+ exit()
26
+
27
+ modelo = load_model(modelo_guardado)
28
+ print('Modelo cargado exitosamente.')
29
+
30
+ # Funci贸n para realizar la predicci贸n
31
+ def estimar_edad(image):
32
+ # Convertir imagen a formato adecuado
33
+ rostro_resized = cv2.resize(image, (128, 128))
34
+ rostro_rgb = cv2.cvtColor(rostro_resized, cv2.COLOR_BGR2RGB)
35
+ rostro_expanded = np.expand_dims(rostro_rgb, axis=0)
36
+ rostro_preprocessed = preprocess_input(rostro_expanded)
37
+
38
+ # Realizar la predicci贸n de edad
39
+ edad_predicha = modelo.predict(rostro_preprocessed)[0][0]
40
+ edad_predicha = round(edad_predicha, 2)
41
+ return edad_predicha
42
+
43
+ # Crear interfaz con Gradio
44
+ interface = gr.Interface(fn=estimar_edad,
45
+ inputs=gr.inputs.Image(type="numpy"), # Entrada de imagen
46
+ outputs="text", # Salida del texto de la edad
47
+ live=True)
48
+
49
+ # Lanzar la interfaz
50
+ interface.launch()