CoolFace
Apppublic

elie77/transferlearning

sourceHugging Facemitupdated 2y agoView on Hugging Face
0likes
app.py210 linesDownload Raw Back to root
1import streamlit as st2import tensorflow as tf3import numpy as np4import pandas as pd5import plotly.express as px6from PIL import Image7 8# 📌 Charger le modèle9@st.cache_resource10def load_model():11    return tf.keras.models.load_model("kidney_disease_model2.h5")12 13# 📌 Classes du modèle14class_names = ["Cyst", "Normal", "Stone", "Tumor"]15 16# 📌 Fonction de prédiction17def predict(image, model):18    image = image.resize((224, 224))19    img_array = np.array(image) / 255.020    img_array = np.expand_dims(img_array, axis=0)21    predictions = model.predict(img_array)[0]22    predicted_class = np.argmax(predictions)23    confidence = predictions[predicted_class]24    return class_names[predicted_class], confidence25 26# 📌 Configuration de la page27st.set_page_config(page_title="Détection Maladies Rénales", page_icon="🩺", layout="wide")28st.markdown(29    """30    <style>31    /* Appliquer le dégradé uniquement à la barre latérale */32    [data-testid="stSidebar"] {33        background: linear-gradient(to bottom, #ffffff, #0044cc);34        color: black;35    }36    37    .container {38        width: 60%;39        margin: auto;40    }41    42.block {43    background: linear-gradient(to bottom, #ffffff, #ffffff);44    padding: 20px;45    border-radius: 10px;46    box-shadow: 0px 4px 6px rgba(0, 68, 204, 0.5); /* Ombre bleue */47    margin-bottom: 20px;48    animation: pop-in 0.5s ease-out;49    transition: transform 0.3s ease, box-shadow 0.3s ease;50}51    52    .block:hover {53        transform: translateY(-5px);54        box-shadow: 0px 8px 12px rgba(0, 0, 0, 0.2);55    }56 57    @keyframes pop-in {58        from {transform: scale(0.9); opacity: 0;}59        to {transform: scale(1); opacity: 1;}60    }61    </style>62    """,63    unsafe_allow_html=True64)65 66# 📌 Barre latérale67st.sidebar.title("🔍 Navigation")68page = st.sidebar.radio("Aller vers", ["Accueil", "Détection", "À Propos"])69 70# 📌 Accueil71if page == "Accueil":72    st.title("🩺 Détection des Maladies Rénales")73    st.markdown("<div class='container'>", unsafe_allow_html=True)74    75    st.markdown("""76<div class='block'>77    <h3> 📌 Maladies détectées </h3>78    <ul>79        <li>Cyst (Kystes rénaux)</li>80        <li>Normal (Aucun problème détecté)</li>81        <li>Stone (Calculs rénaux)</li>82        <li>Tumor (Tumeur rénale)</li>83    </ul>84</div>85""", unsafe_allow_html=True)86    st.markdown("</div>", unsafe_allow_html=True)87    st.markdown("""88<div class='block'>89    <h3> 🏥 Pourquoi utiliser cette application ? </h3>90<ul>91    <li><strong>Détection rapide</strong> grâce à l'IA</li>92    <li><strong>Facilité d'utilisation</strong> pour tous</li>93    <li><strong>Informations détaillées</strong> sur chaque maladie rénale</li>94    <li><strong>Suivi et prévention</strong> pour une meilleure santé rénale</li>95</ul>96</div>97""", unsafe_allow_html=True)98    99    100 101    st.markdown("""102<div class='block'>103    <h3> 💡 Conseils pour une bonne santé rénale</h3>104<ul>105    <li>Boire suffisamment d'eau chaque jour 💧</li>106    <li>Éviter la consommation excessive de sel et d'aliments transformés 🍔</li>107    <li>Faire de l'exercice régulièrement 🏃‍♂️</li>108    <li>Consulter un médecin en cas de douleur ou de symptômes persistants 🏥</li>109</ul>110</div>111""", unsafe_allow_html=True)112    113    114    115    st.markdown("</div>", unsafe_allow_html=True)116    st.image("kidney_banner2.png", use_column_width=True)117    st.markdown("</div>", unsafe_allow_html=True)118 119# 📌 Détection120st.title("🔍 Analyse d'une image")121 122# Affichage du GIF en attendant l'upload123st.image("detect.gif", use_column_width=False, width=600)124 125# Upload de l'image126uploaded_file = st.file_uploader("📂 Choisissez une image (JPG, PNG, JPEG)", type=["jpg", "png", "jpeg"])127 128if uploaded_file is not None:129    image = Image.open(uploaded_file)130 131    # 📌 Bouton pour afficher les résultats AU-DESSUS de l'image132    if st.button("🔍 Voir les résultats"):133        with st.expander("📝 Résultats de l'analyse", expanded=True):134            model = load_model()135            class_name, confidence = predict(image, model)136 137            st.success(f"🩺 **Classe prédite : {class_name}** ({confidence*100:.2f}%)")138 139            # 📌 Explications médicales140            if class_name == "Cyst":141                st.info("🔬 **Les kystes rénaux** sont des sacs remplis de liquide dans les reins. Ils sont généralement bénins.")142            elif class_name == "Stone":143                st.info("⚠️ **Les calculs rénaux** sont des dépôts minéraux durs qui peuvent provoquer des douleurs sévères.")144            elif class_name == "Tumor":145                st.warning("🚨 **Une tumeur rénale** peut être bénigne ou maligne. Il est conseillé de consulter un médecin.")146            else:147                st.success("✅ **Aucun problème détecté.** Continuez à surveiller votre santé !")148 149    # 📌 Affichage de l'image chargée en dessous du bouton150    st.image(image, caption="🖼️ Image chargée", use_column_width=True, width=250)151# 📌 À Propos de Nous152elif page == "À Propos":153    st.title("ℹ️ À Propos de Nous")154    st.image("st.gif", use_column_width=False, width=300)155    # 📌 Présentation du modèle ResNet50156    st.markdown("""157    <div class='block'>158        <h3>🧠 Le Modèle : ResNet50</h3>159        <p>Notre application utilise <strong>ResNet50</strong>, un réseau de neurones convolutif profond 160        conçu pour la classification d’images. ResNet50 est puissant grâce à ses couches résiduelles qui 161        améliorent l'apprentissage et réduisent le problème de gradient évanescent.</p>162    </div>163    """, unsafe_allow_html=True)164    165    # 📌 Résultats de l'entraînement166    st.markdown("""167    <div class='block'>168        <h3>📈 Résultats de l'entraînement</h3>169        <ul>170            <li><strong>Nombre d’époques :</strong> 8</li>171            <li><strong>Précision finale :</strong> 64.00%</li>172            <li><strong>Perte finale :</strong> 0.8676</li>173            <li><strong>Précision de validation :</strong> 64.00%</li>174            <li><strong>Perte de validation :</strong> 0.8636</li>175        </ul>176    </div>177    """, unsafe_allow_html=True)178 179    # 📌 À propos du créateur180    st.markdown("""181    <div class='block'>182        <h3>👨‍💻 Créateur de l'Application</h3>183        <p>Cette application a été développée par <strong>Bea Elie </strong>, un passionné d'IA et de développement 184        d'applications intelligentes. Mon objectif est de rendre la détection des maladies rénales plus 185        accessible grâce à la technologie.</p>186    </div>187    """, unsafe_allow_html=True)188    189# 📌 Affichage de ta photo et contact dans un bloc centré190    st.markdown("""191    <div style="192        display: flex;193        flex-direction: column;194        justify-content: center;195        align-items: center;196        text-align: center;197        background: linear-gradient(to left, #ffffff, #B1AFEB, #ffffff);198        padding: 20px;199        border-radius: 10px;200        box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);201        width: 50%;202        margin: auto;203    ">204        <h3>BEA ELIE</h3>205        <h3>📩 Contact</h3>206        <p><strong>Email :</strong> <a href='mailto:beaelie239@gmail.com'>beaelie239@gmail.com</a></p>207    </div>208""", unsafe_allow_html=True)209 210