DHEIVER's picture
Update app.py
dfdde84
raw
history blame
1.6 kB
import gradio as gr
import tensorflow as tf
from tensorflow.keras.models import load_model
from tensorflow.keras.layers import Layer
import numpy as np
from PIL import Image
# Define the custom 'FixedDropout' layer
class FixedDropout(Layer):
def __init__(self, rate, **kwargs):
super(FixedDropout, self).__init__(**kwargs)
self.rate = rate
def call(self, inputs, training=None):
if training is None:
training = K.learning_phase()
if training == 1:
return K.dropout(inputs, self.rate)
return inputs
# Register the custom layer in a custom object scope
custom_objects = {"FixedDropout": FixedDropout}
# Load the TensorFlow model with the custom object scope
tf_model_path = 'modelo_treinado.h5' # Update with the path to your model
tf_model = load_model(tf_model_path, custom_objects=custom_objects)
# Class labels for the model
class_labels = ["Normal", "Cataract"]
# Define a function for prediction
def predict(image):
# Preprocess the input image
image = image.resize((224, 224)) # Adjust the size as needed
image = np.array(image) / 255.0 # Normalize pixel values
image = np.expand_dims(image, axis=0) # Add batch dimension
# Make a prediction using the loaded TensorFlow model
predictions = tf_model.predict(image)
# Get the predicted class label
predicted_label = class_labels[np.argmax(predictions)]
return predicted_label
# Create the Gradio interface
gr.Interface(
fn=predict,
inputs=gr.Image(type="pil"),
outputs=gr.Label(num_top_classes=2)
).launch()