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}")