Spaces:
Sleeping
Sleeping
import tensorflow as tf | |
from keras.utils import custom_object_scope | |
import gradio as gr | |
from PIL import Image | |
import numpy as np | |
# Defina a camada personalizada FixedDropout | |
class FixedDropout(tf.keras.layers.Dropout): | |
def __init__(self, rate, **kwargs): | |
super().__init__(rate, **kwargs) | |
self._rate = rate | |
def call(self, inputs): | |
return tf.nn.dropout(inputs, self._rate) | |
# Registre a camada personalizada FixedDropout com o TensorFlow | |
with custom_object_scope({'FixedDropout': FixedDropout}): | |
# Carregue o modelo | |
loaded_model = tf.keras.models.load_model('modelo_treinado.h5') | |
# Crie uma lista de classes | |
class_names = ["Normal", "Cataract"] | |
# Defina a função de classificação | |
def classify_image(inp): | |
# Redimensione a imagem para o formato esperado pelo modelo (192x256) | |
img = Image.fromarray(inp).resize((256, 192)) | |
# Converta a imagem para um array numpy e normalize-a (escala de 0 a 1) | |
img = np.array(img) / 255.0 | |
# Faça uma previsão usando o modelo treinado | |
prediction = loaded_model.predict(np.expand_dims(img, axis=0)).flatten() | |
# Obtém a classe prevista | |
predicted_class = class_names[np.argmax(prediction)] | |
return predicted_class | |
# Formate a interface Gradio com HTML | |
iface = gr.Interface( | |
fn=classify_image, | |
inputs=gr.inputs.Image(shape=(192, 256)), | |
outputs=gr.outputs.HTML("<h2>Resultado da Classificação</h2><p><strong>Categoria Predita:</strong> {}</p>"), # Saída formatada com HTML | |
live=True, | |
title="Classificador de Imagens", | |
description="Faça o upload de uma imagem e classifique sua categoria.", | |
allow_screenshot=False, # Desativar a captura de tela | |
allow_flagging=False, # Desativar a opção de sinalizar | |
) | |
# Inicie a interface Gradio | |
iface.launch() | |