Spaces:
Sleeping
Sleeping
import gradio as gr | |
from PIL import Image | |
import numpy as np | |
from fpdf import FPDF | |
import os | |
# Fonction de simulation pour les prédictions | |
def simulation_prediction(image): | |
# Simule une segmentation d'image (remplacer par un modèle réel) | |
segmented_image = np.array(image) # Image segmentée (pour la démo, la même image) | |
pred_class = "Mélanome (simulé)" | |
confidence = "95% (simulé)" | |
return segmented_image, pred_class, confidence | |
# Fonction pour générer un rapport de diagnostic en PDF | |
def generate_report(pred_class, confidence): | |
"""Génère un rapport PDF basé sur les prédictions.""" | |
rapport = f"### Rapport de Diagnostic\n\n**Prédiction :** {pred_class}\n\n**Confiance :** {confidence}\n\n" | |
rapport += "Ceci est un rapport simulé. Dans la version finale, le modèle fournira des prédictions réelles." | |
# Créer un PDF | |
pdf = FPDF() | |
pdf.add_page() | |
pdf.set_font("Arial", size=12) | |
pdf.multi_cell(0, 10, rapport) | |
# Enregistrer le fichier PDF | |
pdf_filename = "rapport_diagnostic.pdf" | |
pdf.output(pdf_filename) | |
return rapport, pdf_filename # Retourner le rapport en texte et le nom du fichier PDF | |
# Créer l'interface Gradio | |
with gr.Blocks() as demo: | |
# Afficher le nom de l'application | |
gr.Markdown("<h1 style='text-align: center; font-size: 3em; font-weight: bold;'>DERMATO STUDIO</h1>") | |
# Ajouter une description de la plateforme, centrée | |
gr.Markdown(""" | |
<div style='text-align: center;'> | |
"DERMATO STUDIO" est une plateforme innovante dédiée à l'analyse des lésions cutanées. | |
Grâce à des algorithmes avancés de détection et de classification, | |
nous offrons aux utilisateurs la possibilité de télécharger des images de lésions cutanées | |
et d'obtenir une analyse rapide et précise. | |
Notre objectif est de fournir un rapport de diagnostic complet qui aide à | |
sensibiliser et à guider les utilisateurs dans leurs démarches de santé. | |
</div> | |
""", elem_id="description") | |
# Section de téléchargement d'image | |
with gr.Row(): | |
with gr.Column(): | |
image_input = gr.Image(label="Téléchargez une image de lésion cutanée", type="pil") | |
analyze_button = gr.Button("Analyser") | |
with gr.Column(): | |
result_label = gr.Label(label="Prédiction : ") | |
confidence_label = gr.Label(label="Confiance : ") | |
# Section pour afficher l'image segmentée | |
segmented_image_output = gr.Image(label="Image Segmentée") | |
# Section pour afficher le rapport de diagnostic | |
report_output = gr.Markdown(value="### Le rapport de diagnostic apparaîtra ici.") | |
download_report = gr.File(label="Télécharger le rapport", type="filepath") | |
# Simuler la prédiction, la segmentation d'image et la génération de rapport lorsque le bouton est cliqué | |
analyze_button.click( | |
fn=simulation_prediction, | |
inputs=image_input, | |
outputs=[segmented_image_output, result_label, confidence_label] | |
) | |
analyze_button.click( | |
fn=generate_report, | |
inputs=[result_label, confidence_label], | |
outputs=[report_output, download_report] | |
) | |
# Lancer l'interface de démonstration | |
demo.launch() | |