Update app.py
Browse files
app.py
CHANGED
|
@@ -8,7 +8,6 @@ import matplotlib.pyplot as plt
|
|
| 8 |
class_names = ['airplane', 'automobile', 'bird']
|
| 9 |
|
| 10 |
# Cargar el modelo preentrenado (aseg煤rate de que est茅 disponible en el Space)
|
| 11 |
-
# Por ejemplo, si el modelo est谩 en el mismo directorio:
|
| 12 |
model = tf.keras.models.load_model('final_model.keras')
|
| 13 |
|
| 14 |
# Definir las medias y desviaciones est谩ndar para la normalizaci贸n
|
|
@@ -26,7 +25,7 @@ def load_and_preprocess_image(image):
|
|
| 26 |
img = np.stack([img] * 3, axis=-1)
|
| 27 |
|
| 28 |
img = img.astype('float32') # Asegurarse de que la imagen sea de tipo float32
|
| 29 |
-
img = (img - mean) / std # Normalizar la imagen
|
| 30 |
|
| 31 |
# A帽adir una dimensi贸n adicional para representar el batch (1 imagen)
|
| 32 |
img = np.expand_dims(img, axis=0)
|
|
@@ -39,20 +38,24 @@ def predict_image(image):
|
|
| 39 |
|
| 40 |
# Hacer la predicci贸n
|
| 41 |
prediction = model.predict(img)
|
| 42 |
-
pred_label = np.argmax(prediction)
|
| 43 |
-
pred_prob = prediction[0][pred_label] * 100 # Probabilidad en porcentaje
|
| 44 |
|
| 45 |
-
#
|
| 46 |
-
|
| 47 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
|
| 49 |
# Crear la interfaz de Gradio
|
| 50 |
interface = gr.Interface(
|
| 51 |
fn=predict_image, # Funci贸n que realiza la predicci贸n
|
| 52 |
inputs=gr.Image(type="filepath", label="Sube una imagen"), # Entrada: imagen
|
| 53 |
-
outputs=gr.Textbox(label="
|
| 54 |
title="Clasificador de im谩genes CIFAR-10",
|
| 55 |
-
description="Sube una imagen de un avi贸n, autom贸vil o p谩jaro para
|
| 56 |
)
|
| 57 |
|
| 58 |
# Lanzar la aplicaci贸n
|
|
|
|
| 8 |
class_names = ['airplane', 'automobile', 'bird']
|
| 9 |
|
| 10 |
# Cargar el modelo preentrenado (aseg煤rate de que est茅 disponible en el Space)
|
|
|
|
| 11 |
model = tf.keras.models.load_model('final_model.keras')
|
| 12 |
|
| 13 |
# Definir las medias y desviaciones est谩ndar para la normalizaci贸n
|
|
|
|
| 25 |
img = np.stack([img] * 3, axis=-1)
|
| 26 |
|
| 27 |
img = img.astype('float32') # Asegurarse de que la imagen sea de tipo float32
|
| 28 |
+
img = (img / 255.0 - mean) / std # Normalizar la imagen
|
| 29 |
|
| 30 |
# A帽adir una dimensi贸n adicional para representar el batch (1 imagen)
|
| 31 |
img = np.expand_dims(img, axis=0)
|
|
|
|
| 38 |
|
| 39 |
# Hacer la predicci贸n
|
| 40 |
prediction = model.predict(img)
|
|
|
|
|
|
|
| 41 |
|
| 42 |
+
# Obtener las probabilidades de todas las clases
|
| 43 |
+
probabilities = tf.nn.softmax(prediction[0]).numpy()
|
| 44 |
+
|
| 45 |
+
# Crear un diccionario con las probabilidades de cada clase
|
| 46 |
+
results = {class_names[i]: float(probabilities[i]) * 100 for i in range(len(class_names))}
|
| 47 |
+
|
| 48 |
+
# Formatear el resultado como una cadena de texto
|
| 49 |
+
result_str = "\n".join([f"{class_name}: {prob:.2f}%" for class_name, prob in results.items()])
|
| 50 |
+
return result_str
|
| 51 |
|
| 52 |
# Crear la interfaz de Gradio
|
| 53 |
interface = gr.Interface(
|
| 54 |
fn=predict_image, # Funci贸n que realiza la predicci贸n
|
| 55 |
inputs=gr.Image(type="filepath", label="Sube una imagen"), # Entrada: imagen
|
| 56 |
+
outputs=gr.Textbox(label="Probabilidades"), # Salida: texto con las probabilidades
|
| 57 |
title="Clasificador de im谩genes CIFAR-10",
|
| 58 |
+
description="Sube una imagen de un avi贸n, autom贸vil o p谩jaro para ver las probabilidades de cada clase."
|
| 59 |
)
|
| 60 |
|
| 61 |
# Lanzar la aplicaci贸n
|