brain-tumor / app.py
nuckingfutz's picture
Update app.py
8843f25
raw history blame
No virus
1.79 kB
import pickle
import numpy as np
import pandas as pd
import gradio as gr
from PIL import Image, ImageOps
model = pickle.load(open("catboost.pkl", "rb"))
def classify_image(image):
image = Image.fromarray(image)
labels = ['Brain Tumor Present', 'No Brain Tumor']
image = image.resize((120, 120))
image = ImageOps.grayscale(image)
image = np.array(image).reshape((1, -1))
res = {labels[0]:float(model.predict_proba(image)[0][1]), labels[1]: float(model.predict_proba(image)[0][0])}
if model.predict_proba(image)[0][0] < 0.5:
pred = "The MRI image contains a Brain Tumor"
symptoms = "Possible Symptoms : New or increasingly strong headaches, blurred vision, loss of balance, confusion and seizures (In some cases, there may be no symptoms as well)"
else:
pred = "The MRI image does not have a Brain Tumor"
symptoms = "Possible Symptoms : None"
return pred, res, symptoms
label1 = gr.outputs.Label(label="Prediction")
label2 = gr.outputs.Label(label="Confidence Score")
label3 = gr.outputs.Label(label="Symptoms")
image = gr.inputs.Image()
interface = gr.Interface(title = "Brain Tumor Classifier",
description="This an Online tool representing AI for a good cause, this online AI powered web application is built by Rauhan Ahmed Siddiqui, using this tool, one could know whether his/her brain MRI report contains a tumor or not with great accuracy, no matter how difficult it is to see that from a human eye.",
fn=classify_image,
inputs=image,
outputs=[label1, label2, label3],
examples=[["1 no.jpg"],["3 no.jpg"],["Y4.jpg"],["21no.jpg"],["Y6.jpg"]],
interpretation=None,
layout="unaligned",
theme='dark-grass')
interface.launch()