ninafr8175 commited on
Commit
c00bf8d
·
1 Parent(s): 6c28497

app update 2

Browse files
Files changed (1) hide show
  1. app.py +65 -16
app.py CHANGED
@@ -8,16 +8,7 @@ from inference import ( # fonctions importées du fichier in
8
  )
9
 
10
  # -----------------------------------------------------------
11
- # Configuration de la page
12
- # -----------------------------------------------------------
13
- st.set_page_config(
14
- page_title="Fire Detection Dashboard", # titre de l’onglet du navigateur
15
- page_icon="🔥", # icône (emoji)
16
- layout="centered" # mise en page centrée
17
- )
18
-
19
- # -----------------------------------------------------------
20
- # Déclaration des modèles potentiels
21
  # -----------------------------------------------------------
22
  ALL_MODEL_FILES = {
23
  "Modèle Efficientnet Baseline": "efficientnet_fire.pt",
@@ -35,7 +26,33 @@ if len(MODEL_FILES) == 0:
35
  st.stop()
36
 
37
  # -----------------------------------------------------------
38
- # Sidebar : choix du modèle + infos et paramètres
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  # -----------------------------------------------------------
40
  st.sidebar.title("⚙️ Paramètres")
41
 
@@ -82,16 +99,30 @@ def load_app_model(model_path: str):
82
 
83
  model, device, transform = load_app_model(selected_model_path)
84
 
 
 
 
85
  # -----------------------------------------------------------
86
- # Titre principal
87
  # -----------------------------------------------------------
88
  st.title("🔥 Fire Detection Dashboard")
 
89
  st.markdown(
90
  """
91
  Ce prototype permet de tester un modèle de détection de feu
92
- sur des images individuelles.
 
 
 
 
 
 
93
 
94
- _Charger une image pour obtenir une prédiction._
 
 
 
 
95
  """
96
  )
97
 
@@ -144,9 +175,9 @@ else:
144
  )
145
 
146
  # -------------------------------------------------------
147
- # Détails supplémentaires (dans un expander)
148
  # -------------------------------------------------------
149
- with st.expander("🔍 Détails techniques (optionnel)"):
150
  st.markdown(
151
  f"""
152
  - Modèle utilisé : **{selected_model_name}**
@@ -159,3 +190,21 @@ Si `prob_fire >= seuil` → prédiction = *fire*,
159
  sinon → *no_fire*.
160
  """
161
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  )
9
 
10
  # -----------------------------------------------------------
11
+ # Modèles disponibles (théoriques)
 
 
 
 
 
 
 
 
 
12
  # -----------------------------------------------------------
13
  ALL_MODEL_FILES = {
14
  "Modèle Efficientnet Baseline": "efficientnet_fire.pt",
 
26
  st.stop()
27
 
28
  # -----------------------------------------------------------
29
+ # Métriques par modèle remplir plus tard si besoin)
30
+ # Clé = chemin du fichier de poids (ex: 'efficientnet_fire.pt')
31
+ # -----------------------------------------------------------
32
+ MODEL_METRICS = {
33
+ # "efficientnet_fire.pt": {
34
+ # "accuracy": 0.94,
35
+ # "precision": 0.92,
36
+ # "recall": 0.89,
37
+ # "f1": 0.90,
38
+ # "fp": 12,
39
+ # "fn": 4,
40
+ # },
41
+ # "efficientnet_fire_2.pt": {...},
42
+ # "inception3_fire.pt": {...},
43
+ }
44
+
45
+ # -----------------------------------------------------------
46
+ # Configuration de la page
47
+ # -----------------------------------------------------------
48
+ st.set_page_config(
49
+ page_title="Fire Detection Dashboard", # titre de l’onglet du navigateur
50
+ page_icon="🔥", # icône (emoji)
51
+ layout="centered" # mise en page centrée
52
+ )
53
+
54
+ # -----------------------------------------------------------
55
+ # Sidebar : choix du modèle + paramètres
56
  # -----------------------------------------------------------
57
  st.sidebar.title("⚙️ Paramètres")
58
 
 
99
 
100
  model, device, transform = load_app_model(selected_model_path)
101
 
102
+ # Récupération éventuelle des métriques pour ce modèle
103
+ metrics = MODEL_METRICS.get(selected_model_path, None)
104
+
105
  # -----------------------------------------------------------
106
+ # Titre principal + guide d’utilisation
107
  # -----------------------------------------------------------
108
  st.title("🔥 Fire Detection Dashboard")
109
+
110
  st.markdown(
111
  """
112
  Ce prototype permet de tester un modèle de détection de feu
113
+ sur des images individuelles.
114
+ """
115
+ )
116
+
117
+ st.markdown(
118
+ """
119
+ ### 🧭 Guide d’utilisation
120
 
121
+ 1. 🧠 **Choisissez le modèle** dans la barre latérale
122
+ 2. 🖼️ **Chargez une image** - JPG, JPEG, PNG - Maximum 200MB
123
+ 3. 🔍 **Obtenez la prédiction** (FEU / PAS DE FEU DÉTECTÉ + probabilité)
124
+ 4. 📊 **Comparez les modèles** pour explorer leurs différences
125
+ 5. ⚙️ **Ajustez le seuil** pour un modèle +/- strict
126
  """
127
  )
128
 
 
175
  )
176
 
177
  # -------------------------------------------------------
178
+ # Détails techniques (expander)
179
  # -------------------------------------------------------
180
+ with st.expander("🔍 Détails techniques"):
181
  st.markdown(
182
  f"""
183
  - Modèle utilisé : **{selected_model_name}**
 
190
  sinon → *no_fire*.
191
  """
192
  )
193
+
194
+ # -------------------------------------------------------
195
+ # Performances du modèle (expander conditionnel)
196
+ # -------------------------------------------------------
197
+ if metrics is not None:
198
+ with st.expander("📊 Performances du modèle (validation)"):
199
+ st.markdown(
200
+ f"""
201
+ | Metric | Value |
202
+ |----------------------|-------|
203
+ | Accuracy | {metrics.get('accuracy', 'non disponible')} |
204
+ | Precision (fire) | {metrics.get('precision', 'non disponible')} |
205
+ | Recall (fire) | {metrics.get('recall', 'non disponible')} |
206
+ | F1-score (fire) | {metrics.get('f1', 'non disponible')} |
207
+ | False Positives (FP) | {metrics.get('fp', 'non disponible')} |
208
+ | False Negatives (FN) | {metrics.get('fn', 'non disponible')} |
209
+ """
210
+ )