File size: 2,083 Bytes
e75a639
ccbe493
7c0489b
3546d12
 
 
 
e75a639
7c0489b
 
3546d12
610ec6d
3546d12
610ec6d
 
3546d12
 
 
 
e3046c9
610ec6d
e3046c9
7aa593e
 
7c0489b
ccbe493
7c0489b
 
 
ccbe493
7c0489b
 
 
 
 
7aa593e
7c0489b
7aa593e
ccbe493
7aa593e
ccbe493
7c0489b
 
ccbe493
c751eaa
ccbe493
7c0489b
 
ccbe493
7057abd
7c0489b
57f0050
ccbe493
 
57f0050
610ec6d
 
57f0050
610ec6d
57f0050
 
7a171b3
 
 
610ec6d
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 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}')