File size: 1,666 Bytes
4362f98 8d7e015 ae2057d 652d09f ae2057d ae22df9 652d09f ae2057d 652d09f ae2057d 652d09f ae2057d 652d09f ae2057d c3d5f77 ae22df9 ffb6da3 ae22df9 c3d5f77 0cebd95 c3d5f77 0cebd95 c3d5f77 088edb6 ae2057d 652d09f ffb6da3 f36f480 ae22df9 dc024e4 652d09f ae2057d |
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 |
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
import gradio as gr
import numpy as np
import cv2
import tensorflow as tf
# Load the model
model = tf.keras.models.load_model('model.h5')
def preprocess_image(image):
resized_img = cv2.resize(image, (180, 180))
img_array = np.array(resized_img).reshape((1, 180, 180, 3))
return img_array
def predict_pneumonia(image):
img_array = preprocess_image(image)
prediction = model.predict(img_array)[0][0]
# Use a more robust threshold for determining whether an image has pneumonia
threshold = 0.5
if prediction >= threshold:
pneumonia_prediction = 1
class_name = "Pneumonia"
else:
pneumonia_prediction = 0
class_name = "Normal"
# Return the probability of each class
class_probabilities = model.predict(img_array)[0]
return {
"Pneumonia Prediction": pneumonia_prediction,
"Class Name": class_name,
"Pneumonia Probability": class_probabilities[0],
"Normal Probability": class_probabilities[1]
}
inputs = gr.inputs.Image(shape=(180, 180))
outputs = gr.outputs.Label(num_top_classes=2)
gradio_interface = gr.Interface(
fn=predict_pneumonia,
inputs=inputs,
outputs=outputs,
title="Pneumonia X-Ray Classification API",
description="This API classifies images of chest X-rays as having pneumonia or being normal.",
examples=[
["person1000_bacteria_2931.jpeg"],
["person1000_virus_1681.jpeg"],
["person1946_bacteria_4875.jpeg"],
["person1952_bacteria_4883.jpeg"]
],
theme="default",
allow_flagging=False
)
gradio_interface.launch()
|