Spaces:
Sleeping
Sleeping
import streamlit as st | |
import numpy as np | |
import tensorflow as tf | |
from tensorflow.keras.preprocessing import image | |
from PIL import Image | |
# ------------------------------ | |
# Load the trained model | |
# ------------------------------ | |
def load_model(): | |
return tf.keras.models.load_model("model.h5") | |
model = load_model() | |
# Class labels from your notebook | |
CLASS_LABELS = ["Glioma", "Meningioma", "No Tumor", "Pituitary Tumor"] | |
# ------------------------------ | |
# Image Preprocessing | |
# ------------------------------ | |
def preprocess_image(img): | |
"""Preprocess the image to match the model's input requirements.""" | |
img = img.resize((224, 224)) # Resize to model input size | |
img = img.convert("RGB") # Ensure RGB mode | |
img_array = np.array(img) / 255.0 # Normalize pixel values | |
img_array = np.expand_dims(img_array, axis=0) # Add batch dimension | |
return img_array | |
# ------------------------------ | |
# Streamlit UI | |
# ------------------------------ | |
st.title("🧠 Brain Tumor Detection with Deep Learning") | |
st.write("Upload an MRI scan (JPG, PNG) to check for a brain tumor.") | |
uploaded_file = st.file_uploader("Choose an MRI scan...", type=["jpg", "png", "jpeg"]) | |
if uploaded_file is not None: | |
# Display the uploaded image | |
image = Image.open(uploaded_file) | |
st.image(image, caption="Uploaded MRI Scan", use_column_width=True) | |
# Preprocess the image | |
img_array = preprocess_image(image) | |
# Make prediction | |
prediction = model.predict(img_array) | |
predicted_class = np.argmax(prediction, axis=1)[0] | |
confidence = np.max(prediction) | |
# Display result | |
st.subheader("🩺 Prediction Results") | |
st.write(f"**Predicted Class:** {CLASS_LABELS[predicted_class]}") | |
st.write(f"**Confidence Score:** {confidence:.2f}") | |
# Provide interpretation | |
if predicted_class == 2: | |
st.success("✅ No Brain Tumor Detected.") | |
else: | |
st.error(f"🚨 Brain Tumor Detected: **{CLASS_LABELS[predicted_class]}**. Consult a doctor.") | |