# Import librairies
import streamlit as st
import tensorflow as tf
import numpy as np
import requests
import json
import base64
import streamlit_elements as elements
import streamlit.components.v1 as components
from streamlit_elements import elements, mui, html
from tensorflow.keras.utils import load_img, img_to_array
from tensorflow.keras.preprocessing import image
from PIL import Image, ImageOps
from pathlib import Path
# Title
st.sidebar.image("images/logo.png", use_column_width=None)
# Load model
model = tf.keras.models.load_model("model/model.h5")
covid_classes = {'COVID19': 0, 'NORMAL': 1, 'PNEUMONIA': 2, 'TUBERCULOSIS': 3}
# Define sidebar options
tab1, tab2, tab3 = st.tabs(["Accueil","Prédiction","Contact"])
# Display content according to selected option
with tab1:
# Display home page with app description and logo
st.header('Bienvenue sur l\'application de classification d\'images de radiographies pulmonaires')
st.image('images/image3.png', caption='Convolutional Neural Networks')
#st.title('Bienvenue sur l\'application de classification d\'images de radiographies pulmonaires')
#st.markdown("
Bienvenue sur l'application de classification d'images de radiographies pulmonaires
", unsafe_allow_html=True)
st.markdown("Cette application utilise un modèle de machine learning pour prédire la classe d'une image parmi quatre catégories : COVID19, NORMAL, PNEUMONIA ou TUBERCULOSIS. Vous pouvez télécharger une ou plusieurs images de radiographies pulmonaires et obtenir les résultats de la prédiction en quelques secondes.
", unsafe_allow_html=True)
components.html(
"""
Tous droits réservés © Février 2024 Tayawelba Dawaï Hesed
""",
height=50
)
with tab2:
# Display prediction page with sidebar and main
# Sidebar
st.header("Prédiction")
#st.markdown("Prédiction
", unsafe_allow_html=True)
st.sidebar.header("Paramètre pour la prédiction")
upload_file = st.sidebar.file_uploader("Télécharger le fichier", type=['jpg', 'jpeg', 'png'], key="upload")
generate_pred = st.sidebar.button("Predict")
# Main
if upload_file:
# Display uploaded image
st.header("Image téléchargée")
st.image(upload_file, caption="Image", use_column_width=True)
# Predict label
if generate_pred:
# Preprocess image
test_image = image.load_img(upload_file, target_size=(64, 64))
image_array = img_to_array(test_image)
image_array = np.expand_dims(image_array, axis=0)
# Make prediction
prediction = model.predict(image_array)
classe = np.argmax(prediction, axis=1)
label = [key for key, value in covid_classes.items() if value == classe][0]
# Display result
st.header("Résultat de la prédiction")
st.write(f"L'image est classée comme {label}.")
components.html(
"""
Tous droits réservés © Février 2024 Tayawelba Dawaï Hesed
""",
height=70
)
with tab3:
# Définir les informations de contact
name = "TAYAWELBA DAWAI Hesed"
email = "hesedtayawelba@gmail.com"
phone = "+237 6 9340 1580"
address = "Yaoundé, Cameroun"
github = "https://github.com/Tayawelba"
huggingface = "https://huggingface.co/tayawelba"
linkedin = "https://www.linkedin.com/in/tayawelba-dawaï-hesed/"
# Créer la page "Contact"
st.header("Contact")
st.write(f"Bonjour, je m'appelle {name} et je suis un développeur web et un expert en machine learning. Si vous souhaitez me contacter, vous pouvez utiliser les moyens suivants :")
st.write(f"- Email : {email}")
st.write(f"- Téléphone : {phone}")
st.write(f"- Adresse : {address}")
st.write("Vous pouvez également me suivre sur les réseaux sociaux suivants :")
st.markdown(f'- GitHub : @Tayawelba
', unsafe_allow_html=True)
st.markdown(f'- Hugging Face : @tayawelba
', unsafe_allow_html=True)
st.markdown(f'- LinkedIn : Tayawelba Dawaï Hesed
', unsafe_allow_html=True)
st.write("Je serai ravi de discuter avec vous de vos projets, de vos idées ou de vos questions. N'hésitez pas à me contacter !")
components.html(
"""
Tous droits réservés © Février 2024 Tayawelba Dawaï Hesed
""",
height=20
)
# # Import librairies
# import streamlit as st
# import tensorflow as tf
# import numpy as np
# import requests
# import json
# import base64
# import streamlit_elements as elements
# import streamlit.components.v1 as components
# from streamlit_elements import elements, mui, html
# from tensorflow.keras.utils import load_img, img_to_array
# from tensorflow.keras.preprocessing import image
# from PIL import Image, ImageOps
# from pathlib import Path
# # Title
# st.sidebar.image("logo.png", use_column_width=None)
# # Load model
# model = tf.keras.models.load_model("model.h5")
# covid_classes = {'COVID19': 0, 'NORMAL': 1, 'PNEUMONIA': 2, 'TUBERCULOSIS': 3}
# # Define sidebar options
# sidebar_options = ["Accueil", "Prédiction", "Contact"]
# # Display sidebar and get selected option
# selected_option = st.sidebar.selectbox("MENU", sidebar_options)
# # Display content according to selected option
# if selected_option == "Accueil":
# # Display home page with app description and logo
# st.markdown("Bienvenue sur l'application de classification d'images
", unsafe_allow_html=True)
# st.markdown("Cette application utilise un modèle de machine learning pour prédire la classe d'une image parmi quatre catégories : COVID19, NORMAL, PNEUMONIA ou TUBERCULOSIS. Vous pouvez télécharger une ou plusieurs images de radiographies pulmonaires et obtenir les résultats de la prédiction en quelques secondes.
", unsafe_allow_html=True)
# components.html(
# """
#
# Tous droits réservés © Décembre 2023 Tayawelba Dawaï Hesed
#
# """,
# height=50
# )
# elif selected_option == "Prédiction":
# # Display prediction page with sidebar and main
# # Sidebar
# st.markdown("Prédiction
", unsafe_allow_html=True)
# st.sidebar.header("Options")
# num_images = st.sidebar.number_input("Nombre d'images à prédire", min_value=1, max_value=10, value=1)
# upload_files = st.sidebar.file_uploader("Télécharger des fichiers", type=['jpg', 'jpeg', 'png'], accept_multiple_files=True, key="upload")
# generate_pred = st.sidebar.button("Predict")
# # Main
# if upload_files:
# # Check if the number of uploaded files matches the number input
# if len(upload_files) != num_images:
# st.error(f"Veuillez télécharger exactement {num_images} image(s).")
# else:
# # Display uploaded images
# st.header("Images téléchargées")
# cols = st.columns(num_images)
# for i, file in enumerate(upload_files):
# cols[i].image(file, caption=f"Image {i+1}", use_column_width=True)
# # Predict labels
# if generate_pred:
# # Preprocess images
# test_images = [image.load_img(file, target_size=(64, 64)) for file in upload_files]
# image_arrays = [img_to_array(img) for img in test_images]
# image_arrays = np.array(image_arrays)
# # Make predictions
# predictions = model.predict(image_arrays)
# classes = np.argmax(predictions, axis=1)
# labels = [key for key, value in covid_classes.items() if value in classes]
# # Display results in a table
# st.header("Résultats de la prédiction")
# table_data = []
# for i, (file, label) in enumerate(zip(upload_files, labels)):
# # Resize image for table display
# img = Image.open(file)
# img = img.resize((64, 64))
# table_data.append([f"Image {i+1}", img, label])
# st.table(table_data)
# components.html(
# """
#
# Tous droits réservés © Décembre 2023 Tayawelba Dawaï Hesed
#
# """,
# height=70
# )
# elif selected_option == "Contact":
# # Définir une fonction pour encoder une image en base64
# def get_image_base64(image_path):
# with open(image_path, "rb") as image_file:
# return base64.b64encode(image_file.read()).decode()
# # Définir les informations de contact
# name = "TAYAWELBA DAWAI Hesed"
# email = "hesedtayawelba@gmail.com"
# phone = "+237 6 9340 1580"
# address = "Yaoundé, Cameroun"
# github = "https://github.com/Tayawelba"
# huggingface = "https://huggingface.co/tayawelba"
# linkedin = "https://www.linkedin.com/in/tayawelba-dawaï-hesed/"
# # Définir les logos des réseaux sociaux
# github_logo = get_image_base64("github.png")
# huggingface_logo = get_image_base64("huggingface.png")
# linkedin_logo = get_image_base64("linkedin.png")
# # Créer la page "Contact"
# st.title("Contact")
# st.write(f"Bonjour, je m'appelle {name} et je suis un développeur web et un expert en machine learning. Si vous souhaitez me contacter, vous pouvez utiliser les moyens suivants :")
# st.write(f"- Email : {email}")
# st.write(f"- Téléphone : {phone}")
# st.write(f"- Adresse : {address}")
# st.write("Vous pouvez également me suivre sur les réseaux sociaux suivants :")
# st.markdown(f'- GitHub : @Tayawelba
', unsafe_allow_html=True)
# st.markdown(f'- Hugging Face : @tayawelba
', unsafe_allow_html=True)
# st.markdown(f'- LinkedIn : Tayawelba Dawaï Hesed
', unsafe_allow_html=True)
# st.write("Je serai ravi de discuter avec vous de vos projets, de vos idées ou de vos questions. N'hésitez pas à me contacter !")
# components.html(
# """
#
# Tous droits réservés © Décembre 2023 Tayawelba Dawaï Hesed
#
# """,
# height=20
# )