ericjedha commited on
Commit
0c06537
·
verified ·
1 Parent(s): 2cac01c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -6
app.py CHANGED
@@ -177,13 +177,19 @@ def predict_single(img_input, weights=(0.45, 0.25, 0.3), normalize=True):
177
  preds = {}
178
  if model_xcept is not None:
179
  preds['xception'] = model_xcept.predict(img_x, verbose=0)[0]
180
- print("Xception (Gradio):", preds['xception'])
 
 
181
  if model_resnet50 is not None:
182
  preds['resnet50'] = model_resnet50.predict(img_r, verbose=0)[0]
183
- print("ResNet (Gradio):", preds['resnet50'])
 
 
184
  if model_densenet is not None:
185
  preds['densenet201'] = model_densenet.predict(img_d, verbose=0)[0]
186
- print("DenseNet (Gradio):", preds['densenet201'])
 
 
187
 
188
  # Combinaison pondérée
189
  ensemble = np.zeros(len(CLASS_NAMES), dtype=np.float32)
@@ -191,24 +197,40 @@ def predict_single(img_input, weights=(0.45, 0.25, 0.3), normalize=True):
191
  if 'resnet50' in preds: ensemble += weights[1] * preds['resnet50']
192
  if 'densenet201' in preds: ensemble += weights[2] * preds['densenet201']
193
 
194
- print("Ensemble avant mel boost (Gradio):", ensemble)
 
 
195
  print("Ensemble sum avant mel boost (Gradio):", np.sum(ensemble))
196
 
197
  # Ajustement pour "mel"
198
  mel_idx = label_to_index['mel']
199
  if 'densenet201' in preds:
 
200
  ensemble[mel_idx] = 0.5 * ensemble[mel_idx] + 0.5 * preds['densenet201'][mel_idx]
201
- print(f"Mel boost (Gradio): {0.5 * ensemble[mel_idx] + 0.5 * preds['densenet201'][mel_idx]}")
 
 
 
 
202
 
203
  if normalize:
 
204
  ensemble = _renorm_safe(ensemble)
205
- print("Ensemble final (Gradio):", ensemble)
 
 
206
  print("Ensemble sum final (Gradio):", np.sum(ensemble))
207
 
 
 
 
 
 
208
  preds['ensemble'] = ensemble
209
  return preds
210
 
211
 
 
212
  # ---- Helpers Grad-CAM ----
213
  LAST_CONV_LAYERS = {
214
  "xception": "block14_sepconv2_act",
 
177
  preds = {}
178
  if model_xcept is not None:
179
  preds['xception'] = model_xcept.predict(img_x, verbose=0)[0]
180
+ print("\n--- Xception (Gradio) ---")
181
+ for i, (class_name, prob) in enumerate(zip(CLASS_NAMES, preds['xception'])):
182
+ print(f"{class_name}: {prob*100:.2f}%")
183
  if model_resnet50 is not None:
184
  preds['resnet50'] = model_resnet50.predict(img_r, verbose=0)[0]
185
+ print("\n--- ResNet (Gradio) ---")
186
+ for i, (class_name, prob) in enumerate(zip(CLASS_NAMES, preds['resnet50'])):
187
+ print(f"{class_name}: {prob*100:.2f}%")
188
  if model_densenet is not None:
189
  preds['densenet201'] = model_densenet.predict(img_d, verbose=0)[0]
190
+ print("\n--- DenseNet (Gradio) ---")
191
+ for i, (class_name, prob) in enumerate(zip(CLASS_NAMES, preds['densenet201'])):
192
+ print(f"{class_name}: {prob*100:.2f}%")
193
 
194
  # Combinaison pondérée
195
  ensemble = np.zeros(len(CLASS_NAMES), dtype=np.float32)
 
197
  if 'resnet50' in preds: ensemble += weights[1] * preds['resnet50']
198
  if 'densenet201' in preds: ensemble += weights[2] * preds['densenet201']
199
 
200
+ print("\n--- Ensemble avant mel boost (Gradio) ---")
201
+ for i, (class_name, prob) in enumerate(zip(CLASS_NAMES, ensemble)):
202
+ print(f"{class_name}: {prob*100:.2f}%")
203
  print("Ensemble sum avant mel boost (Gradio):", np.sum(ensemble))
204
 
205
  # Ajustement pour "mel"
206
  mel_idx = label_to_index['mel']
207
  if 'densenet201' in preds:
208
+ old_mel_prob = ensemble[mel_idx]
209
  ensemble[mel_idx] = 0.5 * ensemble[mel_idx] + 0.5 * preds['densenet201'][mel_idx]
210
+ print(f"\nMel boost (Gradio): {old_mel_prob*100:.2f}% -> {ensemble[mel_idx]*100:.2f}%")
211
+
212
+ print("\n--- Ensemble après mel boost (Gradio) ---")
213
+ for i, (class_name, prob) in enumerate(zip(CLASS_NAMES, ensemble)):
214
+ print(f"{class_name}: {prob*100:.2f}%")
215
 
216
  if normalize:
217
+ ensemble_before_norm = ensemble.copy()
218
  ensemble = _renorm_safe(ensemble)
219
+ print("\n--- Ensemble final après normalisation (Gradio) ---")
220
+ for i, (class_name, prob) in enumerate(zip(CLASS_NAMES, ensemble)):
221
+ print(f"{class_name}: {prob*100:.2f}%")
222
  print("Ensemble sum final (Gradio):", np.sum(ensemble))
223
 
224
+ # Afficher l'impact de la normalisation
225
+ print("\n--- Impact de la normalisation ---")
226
+ for i, (class_name, prob_before, prob_after) in enumerate(zip(CLASS_NAMES, ensemble_before_norm, ensemble)):
227
+ print(f"{class_name}: {prob_before*100:.2f}% -> {prob_after*100:.2f}%")
228
+
229
  preds['ensemble'] = ensemble
230
  return preds
231
 
232
 
233
+
234
  # ---- Helpers Grad-CAM ----
235
  LAST_CONV_LAYERS = {
236
  "xception": "block14_sepconv2_act",