ericjedha commited on
Commit
474e45e
·
verified ·
1 Parent(s): b5433d0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -0
app.py CHANGED
@@ -390,7 +390,45 @@ def generate_gradcam_ui_progressive(progress=gr.Progress()):
390
  import traceback
391
  traceback.print_exc()
392
  return None, f"❌ Erreur: {e}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
393
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
394
 
395
  # ---- INTERFACE GRADIO ----
396
  example_paths = ["ISIC_0024627.jpg", "ISIC_0025539.jpg", "ISIC_0031410.jpg"]
 
390
  import traceback
391
  traceback.print_exc()
392
  return None, f"❌ Erreur: {e}"
393
+
394
+ def generate_gradcam_ui(progress=gr.Progress()):
395
+ global current_image, current_predictions
396
+ if current_image is None or current_predictions is None:
397
+ return None, "❌ Aucun résultat précédent — lance d'abord l'analyse rapide."
398
+
399
+ try:
400
+ ensemble_probs = current_predictions["ensemble"]
401
+ top_class_idx = int(np.argmax(ensemble_probs))
402
+
403
+ candidates = []
404
+ if model_xcept is not None:
405
+ candidates.append(("xception", model_xcept, current_predictions["xception"][top_class_idx]))
406
+ if model_resnet50 is not None:
407
+ candidates.append(("resnet50", model_resnet50, current_predictions["resnet50"][top_class_idx]))
408
+ if model_densenet is not None:
409
+ candidates.append(("densenet201", model_densenet, current_predictions["densenet201"][top_class_idx]))
410
+
411
+ if not candidates:
412
+ return None, "❌ Aucun modèle disponible pour Grad-CAM."
413
+
414
+ explainer_model_name, explainer_model, conf = max(candidates, key=lambda t: t[2])
415
+ explainer_layer = LAST_CONV_LAYERS.get(explainer_model_name)
416
 
417
+ # Utilisez make_gradcam_with_delays pour une progression fluide
418
+ gradcam_img = make_gradcam_with_delays(
419
+ current_image,
420
+ explainer_model,
421
+ explainer_layer,
422
+ class_index=top_class_idx,
423
+ progress=progress
424
+ )
425
+
426
+ return gradcam_img, f"✅ Grad-CAM généré avec {explainer_model_name} (confiance: {conf:.1%})"
427
+
428
+ except Exception as e:
429
+ import traceback
430
+ traceback.print_exc()
431
+ return None, f"❌ Erreur: {e}"
432
 
433
  # ---- INTERFACE GRADIO ----
434
  example_paths = ["ISIC_0024627.jpg", "ISIC_0025539.jpg", "ISIC_0031410.jpg"]