Spaces:
Sleeping
Sleeping
File size: 2,261 Bytes
baacefd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
import streamlit as st
import tensorflow as tf
from tensorflow.keras.preprocessing import image
import numpy as np
from PIL import Image
import base64
# Load the pre-trained brain tumor segmentation model
model_path = 'brain_tumor_segmentation_model.h5' # Replace with your actual model path
model = tf.keras.models.load_model(model_path)
img_size = (256, 256) # Adjust based on your model's input size
st.set_page_config(
page_title="Brain Tumor Segmentation App",
page_icon=":brain:",
layout="wide"
)
custom_style = """
<style>
div[data-testid="stToolbar"],
div[data-testid="stDecoration"],
div[data-testid="stStatusWidget"],
#MainMenu,
header,
footer {
visibility: hidden;
height: 0%;
}
</style>
"""
st.markdown(custom_style, unsafe_allow_html=True)
def preprocess_image(img):
img = img.resize(img_size)
img_array = image.img_to_array(img)
img_array = img_array / 255.0
img_array = np.expand_dims(img_array, axis=0)
return img_array
def predict_tumor_segmentation(img):
img_array = preprocess_image(img)
segmentation_mask = model.predict(img_array)
segmentation_mask = np.squeeze(segmentation_mask, axis=0)
return segmentation_mask
def display_segmentation_result(original_image, segmentation_mask):
original_image = np.array(original_image)
segmentation_mask = (segmentation_mask > 0.5).astype(np.uint8) * 255
segmentation_mask = Image.fromarray(segmentation_mask, 'L')
st.image([original_image, segmentation_mask], caption=['Original Image', 'Segmentation Mask'], use_column_width=True)
def main():
st.title("Brain Tumor Segmentation App")
uploaded_file = st.file_uploader("Upload an MRI image for tumor segmentation...", type=["jpg", "png", "jpeg"])
if uploaded_file is not None:
original_image = Image.open(uploaded_file)
st.image(original_image, caption="Uploaded Image", use_column_width=True)
st.markdown("## Tumor Segmentation Result")
# Perform segmentation
segmentation_mask = predict_tumor_segmentation(original_image)
# Display the segmentation result
display_segmentation_result(original_image, segmentation_mask)
if __name__ == "__main__":
main()
|