Spaces:
Sleeping
Sleeping
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() | |