ericjedha commited on
Commit
12f48ee
·
verified ·
1 Parent(s): 21ab0d4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -18
app.py CHANGED
@@ -638,23 +638,33 @@ def generate_gradcam_ui(progress=gr.Progress()):
638
  # ---- INTERFACE GRADIO ----
639
  example_paths = ["ISIC_0024627.jpg", "ISIC_0025539.jpg", "ISIC_0031410.jpg"]
640
 
 
 
 
641
  with gr.Blocks(theme=theme, title="Analyse de lésions", css=css) as demo:
642
  gr.Markdown("# 🔬 Skin Care : analyse de lésions cutanées")
643
-
644
  models_status = []
645
- if model_resnet50: models_status.append("☑ ResNet50")
646
- if model_densenet: models_status.append("☑ DenseNet201")
647
- if model_xcept: models_status.append("☑ Xception")
 
 
 
 
648
  gr.Markdown(f"**Avertissement 🚨** cette application est un projet d'étudiant et ne doit être utilisé qu'à titre informatif. Seul votre médecin est habilité à vous donner un diagnostic.")
649
  gr.Markdown(f"Ensemble de modèles utilisés : {', '.join(models_status) if models_status else 'AUCUN'}")
650
-
651
  with gr.Row():
652
  with gr.Column(scale=1):
653
  input_image = gr.Image(type="pil", label="📸 Uploader une image")
 
654
  with gr.Row():
655
  quick_btn = gr.Button("Étape 1️⃣ Analyse Rapide", variant="primary")
656
  gradcam_btn = gr.Button("Étape 2️⃣ Carte de chaleur", variant="secondary")
 
657
  gr.Examples(examples=example_paths, inputs=input_image)
 
658
  gr.HTML(value="""
659
  <details>
660
  <summary><b>Dataset utilisé ↓ ↑</b></summary>
@@ -663,47 +673,54 @@ with gr.Blocks(theme=theme, title="Analyse de lésions", css=css) as demo:
663
  <br>
664
  <details>
665
  <summary><b>RGPD & Digital Act ↓ ↑</b></summary>
666
- Ce dataset ne peut pas être utilisé pour des cas réels aujourd'hui notamment du fait qu'il ne comporte qu'essentiellement des peaux de populations européennes (allemands et autrichiens).
667
- Cette application ne collecte pas vos données personnelles. <b>Les images uploadées ne sont pas stockées</b>.
668
- La politique de Cookies 🍪 est gérée par <a href='https://huggingface.co/privacy'>Hugging Face disponible ici</a>.
669
  </details>
670
  """)
671
-
672
  with gr.Column(scale=2):
673
  output_label = gr.HTML(
674
  value='<h2 class="output-class">Pour obtenir un diagnostic, uploadez une image ou prenez une photo.</h2>',
675
  elem_classes="diagnostic-global"
676
  )
677
-
678
  gr.Markdown("### 💡 Explication")
679
  output_text = gr.HTML(
680
  value="",
681
  elem_classes="feedback-container"
682
  )
683
-
684
  output_warning = gr.HTML(
685
  value="",
686
  elem_classes="warning-container",
687
  visible=False
688
  )
689
-
 
 
 
 
 
 
 
690
  output_plot = gr.BarPlot(
691
- x=CLASS_NAMES, # Pré-remplir avec les classes (optionnel, peut être dynamique)
692
- y=[0] * len(CLASS_NAMES), # Valeurs initiales par défaut
 
693
  title="Probabilités par classe",
694
- y_title="Probabilité (%)",
695
  y_lim=[0, 100],
696
- height=450,
697
- y_title_format="{value:.1f}%"
698
  )
 
699
  output_gradcam = gr.Image(label="🔍 Visualisation Grad-CAM")
700
  output_status = gr.Textbox(label="Statut", interactive=False)
701
-
 
702
  quick_btn.click(
703
  fn=quick_predict_ui,
704
  inputs=input_image,
705
  outputs=[output_label, output_text, output_warning, output_plot, output_status]
706
  )
 
707
  gradcam_btn.click(
708
  fn=generate_gradcam_ui,
709
  inputs=[],
 
638
  # ---- INTERFACE GRADIO ----
639
  example_paths = ["ISIC_0024627.jpg", "ISIC_0025539.jpg", "ISIC_0031410.jpg"]
640
 
641
+ import pandas as pd
642
+ import gradio as gr
643
+
644
  with gr.Blocks(theme=theme, title="Analyse de lésions", css=css) as demo:
645
  gr.Markdown("# 🔬 Skin Care : analyse de lésions cutanées")
646
+
647
  models_status = []
648
+ if model_resnet50:
649
+ models_status.append("☑ ResNet50")
650
+ if model_densenet:
651
+ models_status.append("☑ DenseNet201")
652
+ if model_xcept:
653
+ models_status.append("☑ Xception")
654
+
655
  gr.Markdown(f"**Avertissement 🚨** cette application est un projet d'étudiant et ne doit être utilisé qu'à titre informatif. Seul votre médecin est habilité à vous donner un diagnostic.")
656
  gr.Markdown(f"Ensemble de modèles utilisés : {', '.join(models_status) if models_status else 'AUCUN'}")
657
+
658
  with gr.Row():
659
  with gr.Column(scale=1):
660
  input_image = gr.Image(type="pil", label="📸 Uploader une image")
661
+
662
  with gr.Row():
663
  quick_btn = gr.Button("Étape 1️⃣ Analyse Rapide", variant="primary")
664
  gradcam_btn = gr.Button("Étape 2️⃣ Carte de chaleur", variant="secondary")
665
+
666
  gr.Examples(examples=example_paths, inputs=input_image)
667
+
668
  gr.HTML(value="""
669
  <details>
670
  <summary><b>Dataset utilisé ↓ ↑</b></summary>
 
673
  <br>
674
  <details>
675
  <summary><b>RGPD & Digital Act ↓ ↑</b></summary>
676
+ Ce dataset ne peut pas être utilisé pour des cas réels aujourd'hui notamment du fait qu'il ne comporte qu'essentiellement des peaux de populations européennes (allemands et autrichiens). Cette application ne collecte pas vos données personnelles. <b>Les images uploadées ne sont pas stockées</b>. La politique de Cookies 🍪 est gérée par <a href='https://huggingface.co/privacy'>Hugging Face disponible ici</a>.
 
 
677
  </details>
678
  """)
679
+
680
  with gr.Column(scale=2):
681
  output_label = gr.HTML(
682
  value='<h2 class="output-class">Pour obtenir un diagnostic, uploadez une image ou prenez une photo.</h2>',
683
  elem_classes="diagnostic-global"
684
  )
685
+
686
  gr.Markdown("### 💡 Explication")
687
  output_text = gr.HTML(
688
  value="",
689
  elem_classes="feedback-container"
690
  )
691
+
692
  output_warning = gr.HTML(
693
  value="",
694
  elem_classes="warning-container",
695
  visible=False
696
  )
697
+
698
+ # CORRECTION : Configuration simplifiée du BarPlot
699
+ # Créer un DataFrame initial vide ou avec des valeurs par défaut
700
+ initial_df = pd.DataFrame({
701
+ 'Classes': CLASS_NAMES,
702
+ 'Probabilités (%)': [0] * len(CLASS_NAMES)
703
+ })
704
+
705
  output_plot = gr.BarPlot(
706
+ value=initial_df, # DataFrame initial
707
+ x="Classes", # Nom de la colonne x
708
+ y="Probabilités (%)", # Nom de la colonne y
709
  title="Probabilités par classe",
 
710
  y_lim=[0, 100],
711
+ height=450
 
712
  )
713
+
714
  output_gradcam = gr.Image(label="🔍 Visualisation Grad-CAM")
715
  output_status = gr.Textbox(label="Statut", interactive=False)
716
+
717
+ # Configuration des événements
718
  quick_btn.click(
719
  fn=quick_predict_ui,
720
  inputs=input_image,
721
  outputs=[output_label, output_text, output_warning, output_plot, output_status]
722
  )
723
+
724
  gradcam_btn.click(
725
  fn=generate_gradcam_ui,
726
  inputs=[],