CoolFace
Apppublic

ColinceTatsa/Colince_TransferLearning

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
app.py83 linesDownload Raw Back to root
1import streamlit as st2import torch3from torchvision import transforms4from PIL import Image5import torch.nn.functional as F6import pickle7import pandas as pd8 9me = ['Accueil','Analyse Medicale']10st.sidebar.image("logoMédical.jpg", width=500)11p = st.sidebar.selectbox('menu', me)12 13@st.cache_resource  # Pour éviter de recharger le modècdle à chaque interaction14def charger_modele_pytorch():15    modele = torch.load('TATSA_Model1_TransfLr_py.pth',map_location=device, weights_only=False)  # Charge le modèle16    modele.eval()  # Important : mettez le modèle en mode évaluation17    return modele18#chemin_modele = charger_modele_pytorch()19#chemin_modele = st.text_input("Chemin vers le modèle (.pth)", "pytorch1.pth")20 21if torch.cuda.is_available():22    device = st.selectbox("Utiliser le GPU ou le CPU ?", ["GPU", "CPU"], index=0)23    device = torch.device("cuda" if device == "GPU" else "cpu")24else:25    #st.write("Aucun GPU détecté. Utilisation du CPU.")26    device = torch.device("cpu")27 28modele_charge = charger_modele_pytorch()29 30    # Transformation des images (Doit être la même que celle utilisée à l'entraînement)31transform = transforms.Compose([32    transforms.Resize((224, 224)),  # Modifier selon la taille utilisée à l'entraînement33    transforms.ToTensor(),34    transforms.Normalize(mean=[0.485,0.456,0.406],std=[0.229,0.224,0.225])])35if p == 'Accueil':36    st.image("logoKeyce.jpg")37    st.title('KEYCE INFORMATIQUE')38    st.title('EXAMEN SEMESTRE I, DE TRANSFERT LEARNING')39    st.subheader('MASTER 2 IABD')40    st.subheader('TATSA TCHINDA Colince')41    42elif p=='Analyse Medicale':43    st.image("logoKeyce.jpg")44    im2 = Image.open("logoPytorch.jpg")45    taille_image = (800, 200)  # Définir la taille souhaitée46    im2_red = im2.resize(taille_image)47    st.image(im2_red)48    st.title('TRANSFERT LEARNING AVEC PYTORCH')49    upload_file = st.sidebar.file_uploader('Choisissez une image',type=['jpg','jpeg','png'])50    51    if upload_file:52        image = Image.open(upload_file).convert("RGB")53        st.image(image, caption="Image chargée", use_container_width=True)54 55        # Prétraitement de l'image56        img_tensor = transform(image).unsqueeze(0)  # Ajout d'une dimension batch57        #bouton1 = st.sidebar.button('Resultat')58        #bouton2 = st.sidebar.buttonRadio('Probabilites')59        classes_p = {'HEALTHY': 0,'BRAIN_TUMOR': 1}60 61        def output_proba():62            output = modele_charge(img_tensor)63            probabilities = F.softmax(output, dim=1)64            return output, probabilities65 66        if st.sidebar.checkbox("resultat"):67            # Prédiction68            with torch.no_grad():69                output,_ =output_proba()70            predicted_class = torch.argmax(output, dim=1).item()71            72            for key, value in classes_p.items():73                if value == predicted_class:74                    st.title(f'Categorie de ➤ {key}')75            if st.sidebar.checkbox("Probabilités"):76                        77                _,probabilities = output_proba()78                df = pd.DataFrame({"Classe": classes_p.keys(),"Probabilité": probabilities.tolist()[0]})79 80                st.write("Probabilités :")81                st.dataframe(df)82 83