import streamlit as st import numpy as np import keras from keras.preprocessing import image from huggingface_hub import from_pretrained_keras import random # Remove whitespace from the top of the page reduce_header_height_style = """ """ st.markdown(reduce_header_height_style, unsafe_allow_html=True) def predict_image(file_name): IMAGE_HEIGHT, IMAGE_WIDTH = 299, 299 categories = ['Normal', 'Tuberculose'] img = img_orig = image.load_img(file_name, target_size = (IMAGE_HEIGHT, IMAGE_WIDTH)) img = image.img_to_array(img) img = np.expand_dims(img, axis = 0) img = img/255.0 pred = st.session_state.model.predict(img) classe = np.argmax(pred) nome_classe = categories[classe] prob = np.max(pred) # col1.image(img_orig, width=450) mensagem = "Previsão: " + categories[classe] + ' - ' + str(round(prob * 100)) + '%' str_prob = ' - ' + f"{(prob*100):.3f}"[:-2] + '%' if int(classe) == 0: classe_prevista = ':blue[Normal]' else: classe_prevista = ':red[Tuberculose]' msg = 'Previsão: ' + classe_prevista + str_prob #col1.header(msg) #print(mensagem) return msg titulo = 'Classificação - Doenças Pulmonares' st.markdown(f'
{titulo}
', unsafe_allow_html=True) @st.cache_data def inicializa_modelo(): print('carregando o modelo...') file = "valencar/modelo_raios_x" model = from_pretrained_keras(file) print('modelo carregado.') return model def escolher_imagem(): imagens = ['CHNCXR_0342_1.png', 'CHNCXR_0022_0.png', 'CHNCXR_0006_0.png', 'CHNCXR_0004_0.png', 'CHNCXR_0338_1.png', 'CHNCXR_0340_1.png', 'CHNCXR_0020_0.png', 'CHNCXR_0019_0.png', 'CHNCXR_0024_0.png', 'CHNCXR_0344_1.png', 'CHNCXR_0002_0.png', 'CHNCXR_0327_1.png', 'CHNCXR_0346_1.png', 'CHNCXR_0005_0.png', 'CHNCXR_0021_0.png', 'CHNCXR_0341_1.png', 'CHNCXR_0339_1.png', 'CHNCXR_0023_0.png', 'CHNCXR_0343_1.png', 'CHNCXR_0007_0.png', 'CHNCXR_0003_0.png', 'CHNCXR_0347_1.png', 'CHNCXR_0345_1.png', 'CHNCXR_0025_0.png', 'CHNCXR_0018_0.png', 'CHNCXR_0001_0.png', 'CHNCXR_0328_1.png', 'CHNCXR_0350_1.png', 'CHNCXR_0014_0.png', 'CHNCXR_0331_1.png', 'CHNCXR_0349_1.png', 'CHNCXR_0016_0.png', 'CHNCXR_0333_1.png', 'CHNCXR_0337_1.png', 'CHNCXR_0012_0.png', 'CHNCXR_0335_1.png', 'CHNCXR_0010_0.png', 'CHNCXR_0009_0.png', 'CHNCXR_0332_1.png', 'CHNCXR_0017_0.png', 'CHNCXR_0351_1.png', 'CHNCXR_0329_1.png', 'CHNCXR_0348_1.png', 'CHNCXR_0330_1.png', 'CHNCXR_0015_0.png', 'CHNCXR_0011_0.png', 'CHNCXR_0334_1.png', 'CHNCXR_0008_0.png', 'CHNCXR_0013_0.png', 'CHNCXR_0336_1.png'] imagem = random.sample(imagens, k=1)[0] return imagem if 'model' not in st.session_state: with st.spinner('carregando o modelo...'): st.session_state.model = inicializa_modelo() with st.container(): col1 = st.container() if st.button('Raios-X Diversos'): nome_imagem = escolher_imagem() imagem = image.load_img(name_image) col1.image(imagem) col1.header(predict_image(nome_imagem)) file_upload = st.file_uploader("Carregue uma Imagem de Raios-X:", type="png") if file_upload is not None: imagem = image.load_img(file_upload) col1.image(imagem) col1.header(predict_image(file_upload)) else: name_image = "doencas_pulmonares.jpg" imagem = image.load_img(name_image) col1.image(imagem, width=700) st.write("") st.write("") st.write("") st.write("") st.write("") aviso = "ESTE RESULTADO NÃO SUBSTITUI A AVALIAÇÃO DO MÉDICO. Este é um sistema para auxílio diagnóstico de doenças usando deep learning. Todo o processamento é feito no seu dispositivo e as imagens não são enviadas para o seu servidor. Ao continuar, você assume toda a responsabilidade com o uso." st.markdown(f'
{aviso}
', unsafe_allow_html=True) st.write("") st.write("") st.write("") st.write("") st.write("") st.write("") st.write("") footer="\
\

Sistema de Apoio ao Diagnóstico de Doenças Pulmonares versão 1.0.2.
\ Desenvolvido por Prof. Dr. Vladimir Costa de Alencar e Equipe de Pesquisadores do LANA/UEPB.
\ Campina Grande, Paraíba, Brasil, 2024.
\ www.valencar.com

" st.markdown(footer, unsafe_allow_html=True) name_image = "LANA_Card.png" imagem = image.load_img(name_image) st.image(imagem, width=300)