File size: 1,536 Bytes
8c9f5a4
 
822173b
 
 
8c9f5a4
 
03ea931
8c9f5a4
822173b
 
 
ffcb0d4
 
8c9f5a4
52a79b1
 
 
 
822173b
52a79b1
c66cb35
c1b5e6b
 
f2dbf2d
ceac976
 
c66cb35
 
1863d1c
 
 
822173b
52a79b1
 
8c9f5a4
822173b
 
 
 
 
 
 
 
8c9f5a4
822173b
a013495
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
import gradio as gr
import numpy as np
from PIL import Image
import cv2
import tensorflow as tf  # Assuming you're using TensorFlow for loading your model

# Load your model
model = tf.keras.models.load_model("Brain_tumor_pred_large.h5")

def img_pred(upload):
    # Convert the Gradio input image to OpenCV format
    opencvImage = cv2.cvtColor(np.array(upload), cv2.COLOR_RGB2BGR)
    img = cv2.resize(opencvImage, (128, 128))
    img = img.reshape(1, 128, 128, 3)
    
    # Predict using the model and get confidence
    predictions = model.predict(img)[0]  # Get probabilities for each class
    predicted_class = np.argmax(predictions)  # Index of the predicted class
    confidence = predictions[predicted_class]  # Confidence of the predicted class
    
    # Determine if tumor is present
    if confidence < 0.20:
        if confidence <0.10:
            result="No Tumor"
            confidence=1
        else:
            result = "Uncertain"
    else:
        if predicted_class == 1:  # Assuming '1' is 'No Tumor'
            result = "No Tumor"
        else:
            result = "Tumor Detected"
    
    # Return result with confidence
    return f"The Model predicts: {result} with a confidence of {confidence:.2%}"

# Define Gradio interface
iface = gr.Interface(
    fn=img_pred,
    inputs=gr.Image(type="pil"),
    outputs="text",
    title="Brain Tumor Detection",
    description="Upload an MRI image to check if there is a tumor and determine the type if detected."
)

# Launch the app
iface.launch(share=True)