ByronSP commited on
Commit
d4f05c4
verified
1 Parent(s): a6059d1

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -9
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
- # Mostrar el resultado
46
- pred_label_name = class_names[pred_label]
47
- return f'Predicci贸n: {pred_label_name} con una probabilidad de {pred_prob:.2f}%'
 
 
 
 
 
 
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="Predicci贸n"), # Salida: texto con la predicci贸n
54
  title="Clasificador de im谩genes CIFAR-10",
55
- description="Sube una imagen de un avi贸n, autom贸vil o p谩jaro para clasificarla."
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