ColinceTatsa commited on
Commit
91b28ea
·
verified ·
1 Parent(s): 7e1ed90

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +73 -0
app.py ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import torch
3
+ from torchvision import transforms
4
+ from PIL import Image
5
+ import torch.nn.functional as F
6
+ import pickle
7
+ import pandas as pd
8
+ me = ['Acceuil','Analyse Medicale']
9
+ p = st.sidebar.selectbox('menu', me)
10
+
11
+ @st.cache_resource # Pour éviter de recharger le modècdle à chaque interaction
12
+ def charger_modele_pytorch():
13
+ modele = torch.load('TATSA_Model1_TransfLr_py.pth', map_location=device) # Charge le modèle
14
+ #modele.eval() # Important : mettez le modèle en mode évaluation
15
+ return modele
16
+ #chemin_modele = charger_modele_pytorch()
17
+ #chemin_modele = st.text_input("Chemin vers le modèle (.pth)", "pytorch1.pth")
18
+
19
+ if torch.cuda.is_available():
20
+ device = st.selectbox("Utiliser le GPU ou le CPU ?", ["GPU", "CPU"], index=0)
21
+ device = torch.device("cuda" if device == "GPU" else "cpu")
22
+ else:
23
+ #st.write("Aucun GPU détecté. Utilisation du CPU.")
24
+ device = torch.device("cpu")
25
+
26
+ modele_charge = charger_modele_pytorch()
27
+
28
+ # Transformation des images (Doit être la même que celle utilisée à l'entraînement)
29
+ transform = transforms.Compose([
30
+ transforms.Resize((224, 224)), # Modifier selon la taille utilisée à l'entraînement
31
+ transforms.ToTensor(),
32
+ transforms.Normalize((0.5),0.5)])
33
+ if p == 'Acceuil':
34
+ st.title('EXAMEN SEMESTRE I, DE TRANSFERT LEARNING')
35
+ st.subheader('MASTER 2 IABD')
36
+ st.subheader('TATSA TCHINDA Colince')
37
+
38
+ elif p=='Analyse Medicale':
39
+ st.title('TRANSFERT LEARNING')
40
+ upload_file = st.sidebar.file_uploader('Choisissez une image',type=['jpg','jpeg','png'])
41
+
42
+ if upload_file:
43
+ image = Image.open(upload_file).convert("RGB")
44
+ st.image(image, caption="Image chargée", use_container_width=True)
45
+
46
+ # Prétraitement de l'image
47
+ img_tensor = transform(image).unsqueeze(0) # Ajout d'une dimension batch
48
+ #bouton1 = st.sidebar.button('Resultat')
49
+ #bouton2 = st.sidebar.buttonRadio('Probabilites')
50
+ classes_p = {'HEALTHY': 0,'BRAIN_TUMOR': 1}
51
+
52
+ def output_proba():
53
+ output = modele_charge(img_tensor)
54
+ probabilities = F.softmax(output, dim=1)
55
+ return output, probabilities
56
+
57
+ if st.sidebar.checkbox("resultat"):
58
+ # Prédiction
59
+ with torch.no_grad():
60
+ output,_ =output_proba()
61
+ predicted_class = torch.argmax(output, dim=1).item()
62
+
63
+ for key, value in classes_p.items():
64
+ if value == predicted_class:
65
+ st.title(f'Categorie de ➤ {key}')
66
+ if st.sidebar.checkbox("prob"):
67
+
68
+ _,probabilities = output_proba()
69
+ df = pd.DataFrame({"Classe": classes_p.keys(),"Probabilité": probabilities.tolist()[0]})
70
+
71
+ st.write("Probabilités :")
72
+ st.dataframe(df)
73
+