ericjedha commited on
Commit
08f838e
·
verified ·
1 Parent(s): 28642c8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -9
app.py CHANGED
@@ -294,35 +294,49 @@ def quick_predict_ui(image_pil):
294
  except Exception as e:
295
  return f"Erreur: {e}", None, "❌ Erreur lors de l'analyse."
296
 
297
- def generate_gradcam_ui():
298
  global current_image, current_predictions
299
  if current_image is None or current_predictions is None:
300
  return None, "❌ Aucun résultat précédent — lance d'abord l'analyse rapide."
 
301
  try:
302
- #_update_progress(progress, 0, desc="Début de la génération Grad-CAM...")
303
  ensemble_probs = current_predictions["ensemble"]
304
  top_class_idx = int(np.argmax(ensemble_probs))
305
 
 
306
  candidates = []
307
- if model_xcept is not None: candidates.append(("xception", model_xcept, current_predictions["xception"][top_class_idx]))
308
- if model_resnet50 is not None: candidates.append(("resnet50", model_resnet50, current_predictions["resnet50"][top_class_idx]))
309
- if model_densenet is not None: candidates.append(("densenet201", model_densenet, current_predictions["densenet201"][top_class_idx]))
 
 
 
310
 
311
  if not candidates:
312
  return None, "❌ Aucun modèle disponible pour Grad-CAM."
313
 
 
314
  explainer_model_name, explainer_model, conf = max(candidates, key=lambda t: t[2])
315
  explainer_layer = LAST_CONV_LAYERS.get(explainer_model_name)
316
- #_update_progress(progress, 5, desc=f"Génération Grad-CAM avec {explainer_model_name}...")
317
 
318
- gradcam_img = make_gradcam(current_image, explainer_model, explainer_layer, class_index=top_class_idx)
 
 
 
 
 
 
 
319
 
320
- #_update_progress(progress, 100, desc="✅ Grad-CAM généré !")
321
  return gradcam_img, f"✅ Grad-CAM généré avec {explainer_model_name} (confiance: {conf:.1%})"
 
322
  except Exception as e:
323
- import traceback; traceback.print_exc()
 
324
  return None, f"❌ Erreur: {e}"
325
 
 
326
  # ---- INTERFACE GRADIO ----
327
  example_paths = ["ISIC_0024627.jpg", "ISIC_0025539.jpg", "ISIC_0031410.jpg"]
328
 
 
294
  except Exception as e:
295
  return f"Erreur: {e}", None, "❌ Erreur lors de l'analyse."
296
 
297
+ def generate_gradcam_ui(progress=gr.Progress()):
298
  global current_image, current_predictions
299
  if current_image is None or current_predictions is None:
300
  return None, "❌ Aucun résultat précédent — lance d'abord l'analyse rapide."
301
+
302
  try:
303
+ # On ne fait plus de mise à jour ici, make_gradcam gère tout
304
  ensemble_probs = current_predictions["ensemble"]
305
  top_class_idx = int(np.argmax(ensemble_probs))
306
 
307
+ # Sélection des modèles disponibles
308
  candidates = []
309
+ if model_xcept is not None:
310
+ candidates.append(("xception", model_xcept, current_predictions["xception"][top_class_idx]))
311
+ if model_resnet50 is not None:
312
+ candidates.append(("resnet50", model_resnet50, current_predictions["resnet50"][top_class_idx]))
313
+ if model_densenet is not None:
314
+ candidates.append(("densenet201", model_densenet, current_predictions["densenet201"][top_class_idx]))
315
 
316
  if not candidates:
317
  return None, "❌ Aucun modèle disponible pour Grad-CAM."
318
 
319
+ # Choix du meilleur modèle
320
  explainer_model_name, explainer_model, conf = max(candidates, key=lambda t: t[2])
321
  explainer_layer = LAST_CONV_LAYERS.get(explainer_model_name)
 
322
 
323
+ # Génération Grad-CAM avec la progression gérée en interne
324
+ gradcam_img = make_gradcam(
325
+ current_image,
326
+ explainer_model,
327
+ explainer_layer,
328
+ class_index=top_class_idx,
329
+ progress=progress
330
+ )
331
 
 
332
  return gradcam_img, f"✅ Grad-CAM généré avec {explainer_model_name} (confiance: {conf:.1%})"
333
+
334
  except Exception as e:
335
+ import traceback
336
+ traceback.print_exc()
337
  return None, f"❌ Erreur: {e}"
338
 
339
+
340
  # ---- INTERFACE GRADIO ----
341
  example_paths = ["ISIC_0024627.jpg", "ISIC_0025539.jpg", "ISIC_0031410.jpg"]
342