|
|
|
|
| import io |
| import numpy as np |
| from PIL import Image |
| import streamlit as st |
| import tensorflow as tf |
| import matplotlib.pyplot as plt |
| from tensorflow import keras |
|
|
|
|
| st.title('Brain \U0001F9E0 Tumor Detector ') |
|
|
| st.subheader('Find out whether there is a tumor \U0001F534 (Glioma Meningioma Pituarie) in the brain (or) \ |
| not \U0001F7E2') |
|
|
|
|
|
|
|
|
| inp_t = st.file_uploader(label='Upload MRI here', accept_multiple_files=True) |
|
|
|
|
|
|
| def load_img(path): |
| |
| img_l = [] |
| for i in path: |
| img_byte = i.read() |
| img = Image.open(io.BytesIO(img_byte)) |
| img = img.resize((64, 64), Image.ANTIALIAS) |
| if img.mode != 'L': |
| img = img.convert('L') |
| img_arr = np.array(img, dtype='float32')/255 |
| img_arr = np.expand_dims(img_arr, axis=-1) |
| img_l.append(img_arr) |
| img = np.stack(img_l) |
| return img |
|
|
| |
|
|
|
|
| def pred(img): |
| |
| model = keras.models.load_model('model2_weights.h5') |
| result = model.predict(img) |
|
|
| return result |
|
|
|
|
|
|
| |
| if inp_t: |
| img = load_img(inp_t) |
| result = ['Glioma', 'Meningioma', 'no tumor', 'Pituarie'] |
|
|
| st.warning( |
| '** Uploaded {} images [View images in side Panel]'.format(img.shape[0])) |
|
|
| res = pred(img) |
| max_value = res[0][np.argmax(res)]*100 |
| if (result[np.argmax(res)] == 'no tumor'): |
| st.subheader("\U0001F7E2 Model predicts there is {} tumor with {:.2f} % confidence].\U0001F7E2".format(result[np.argmax(res)], max_value)) |
| else: |
| st.subheader("\U0001F534 Model predicts there is {} tumor with {:.2f} % confidence.\U0001F534 ".format(result[np.argmax(res)], max_value)) |
|
|
|
|
| st.write('\n') |
|
|
| st.image(inp_t, width = 400) |
|
|
| |
| st.markdown('---') |
| st.error( |
| 'Dont conclude by looking at predictions, just take them as a reference!!') |
|
|
|
|