Update app.py
Browse files
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"]
|