DHEIVER's picture
Update app.py
5ec5751
raw
history blame
1.18 kB
import numpy as np
import gradio as gr
import tensorflow as tf
models = [ {"name": "my_model_2.h5", "size": 512}, {"name": "my_model.h5", "size": 224},]
def classify_image(image, model_name):
model_config = next(m for m in models if m["name"] == model_name)
model = tf.keras.models.load_model(model_name)
input_image = np.expand_dims(image, axis=0)
prediction = model.predict(input_image).flatten()
if len(prediction) > 1:
probability = 100 * np.exp(prediction[0]) / (np.exp(prediction[0]) + np.exp(prediction[1]))
else:
probability = round(100. / (1 + np.exp(-prediction[0])), 2)
if probability > 45:
label = "Glaucoma"
elif probability > 25:
label = "Unclear"
else:
label = "Not glaucoma"
return label, probability
inputs = [
gr.inputs.Image(shape=(224, 224), label="Eye image"),
gr.inputs.Dropdown(choices=[m["name"] for m in models], label="Model"),
]
outputs = [
gr.outputs.Textbox(label="Predicted label"),
gr.outputs.Textbox(label="Probability of glaucoma (0-100)"),
]
gr.Interface(classify_image, inputs, outputs, examples=["001.jpg", "002.jpg", "225.jpg"]).launch()