classifier / app.py
lalitov's picture
Update app.py
e3046c9 verified
Raw History Blame Contribute Delete
2.08 kB
import streamlit as st
import tensorflow as tf
import numpy as np
from skimage import exposure
from skimage.io import imread
from skimage.transform import resize
from skimage.filters import sobel
# Funci贸n para cargar y preprocesar la imagen
def load_and_preprocess_image(image):
# Descargar datos de imagen
img = imread(image)
# Aseg煤rate de que el tama帽o de la imagen coincida con el modelo
img = resize(img, (224, 224))
# Mejora de contraste
img_contrast_enhanced = exposure.equalize_adapthist(img)
# Detecci贸n de bordes
#img_edges = sobel(img_contrast_enhanced)
img_final = np.expand_dims(img_contrast_enhanced, axis=0)
return img_final
# Funci贸n para procesar la imagen con el modelo
def process_image(image):
# Carga del modelo
model = tf.keras.models.load_model('model.h5') # modelo entrenado respaldado, archivo .h5
# Preprocesamiento de la imagen
processed_image = load_and_preprocess_image(image)
# Predicci贸n
result = model.predict(processed_image)[0][0]
predicted_class = 'Maligno' if result >= 0.5 else 'Benigno'
return predicted_class
# Configuraci贸n de la barra lateral
st.sidebar.title('Clasificador de C谩ncer de Piel') # t铆tulo de la barra
st.sidebar.image('logo.png', width=50) # icono de la barra
st.sidebar.markdown('[Github](https://github.com/lalovaltierra/MIA)') # link
# Configuraci贸n del cuerpo principal
st.title('Selecciona una im谩gen') # t铆tulo del cuerpo principal
uploaded_image = st.file_uploader('',type=['jpg', 'jpeg', 'png']) # input para imagen
# Mostrar la imagen cargada y el resultado del procesamiento
col1, col2 = st.columns(2) # se generan dos columnas
col2.subheader("Resultado de la clasificaci贸n") #t铆tulo de la columna 2
if uploaded_image is not None: # si hay imagen
with col1:
# Mostrar la imagen
st.image(uploaded_image, caption='Imagen cargada', width=200)
with col2:
# Procesar la imagen
result = process_image(uploaded_image)
st.text(f'{result}')