File size: 2,236 Bytes
f2353a5 ec94c79 bd724df ec94c79 f2353a5 ec94c79 f6d650d f2353a5 ec94c79 f6d650d 9c5f706 ec94c79 f6d650d f2353a5 ec94c79 f2353a5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
import streamlit as st
import numpy as np
from tensorflow.keras.models import load_model
from PIL import Image
# Cargar los modelos
model_cnn = load_model('MNIST_conv.h5') # Modelo convolucional
model_mlp = load_model('MNIST.h5') # Modelo no convolucional
model_cnn_v2 = load_model('mnist_conv (1).h5')
# Diccionario de etiquetas para Fashion-MNIST
class_labels = {
0: "Cero",
1: "Uno",
2: "Dos",
3: "Tres",
4: "Cuatro",
5: "Cinco",
6: "Seis",
7: "Siete",
8: "Ocho",
9: "Nueve"
}
# Funci贸n para preparar la imagen
def prepare_image(image):
image = image.convert('L') # Convertir a escala de grises
image = image.resize((28, 28)) # Redimensionar a 28x28
image_array = np.array(image) # Convertir a array numpy
image_array = image_array / 255.0 # Normalizar a [0, 1]
image_array = image_array.reshape(1, 28, 28, 1) # Cambiar la forma a (1, 28, 28, 1)
return image_array
# T铆tulo de la aplicaci贸n
st.title("Predicci贸n de Moda con Modelos")
# Selecci贸n del modelo
model_choice = st.selectbox("Selecciona el modelo:", ("Modelo Convolucional", "Modelo No Convolucional", "Modelo Convolucional (10 epocas mas (30))"))
# Subida de imagen
uploaded_file = st.file_uploader("Sube una imagen de 28x28 en escala de grises", type=["png", "jpg", "jpeg"])
# Bot贸n para realizar la predicci贸n
if uploaded_file is not None:
# Mostrar la imagen subida
image = Image.open(uploaded_file)
st.image(image, caption='Imagen subida', use_column_width=True)
# Preparar la imagen para la predicci贸n
prepared_image = prepare_image(image)
# Realizar la predicci贸n seg煤n el modelo seleccionado
if model_choice == "Modelo Convolucional":
prediction = model_cnn.predict(prepared_image)
elif model_choice == "Modelo No Convolucional":
prediction = model_mlp.predict(prepared_image)
else:
prediction = model_cnn_v2.predict(prepared_image)
predicted_class = np.argmax(prediction, axis=1)[0] # Obtener la clase con mayor probabilidad
# Obtener la etiqueta correspondiente
predicted_label = class_labels[predicted_class]
# Mostrar el resultado
st.success(f"La predicci贸n es: {predicted_label}") |