|
import gradio as gr |
|
import numpy as np |
|
from tensorflow.keras.models import load_model |
|
from PIL import Image |
|
|
|
model = load_model("final/brain_tumor_fine_tune.h5") |
|
model.load_weights("final/brain_tumor_fine_tune.h5") |
|
|
|
|
|
class_names = [ |
|
'glioma', |
|
'meningioma', |
|
'notumor', |
|
'pituitary', |
|
] |
|
|
|
def classify_tumor(input_image): |
|
|
|
img = Image.fromarray(input_image) |
|
resized_img = img.resize((299, 299)) |
|
img = np.asarray(resized_img) |
|
img = np.expand_dims(img, axis=0) |
|
img = img / 255 |
|
prediction = model.predict(img) |
|
|
|
confidences = {class_names[i]: float(prediction[0][i]) for i in range(len(class_names))} |
|
|
|
return {class_name: conf for class_name, conf in sorted(confidences.items(), key=lambda x: x[1], reverse=True)} |
|
|
|
iface = gr.Interface( |
|
fn=classify_tumor, |
|
inputs=gr.Image(type="numpy"), |
|
outputs=gr.Label(num_top_classes=5), |
|
title="Brain Tumor Classification", |
|
description="Upload an image of a Brain to classify its tumor.", |
|
theme=gr.themes.Soft() |
|
) |
|
|
|
|
|
iface.launch(share=True) |