Spaces:
Build error
Build error
| 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.") | |