Spaces:
Sleeping
Sleeping
File size: 2,516 Bytes
adf2111 7ebdd96 75fd37c d1c66aa a2419a7 08cbfae 7ebdd96 08cbfae 7708ef9 08cbfae a2419a7 7708ef9 a2419a7 ffc1de3 7708ef9 a2419a7 c8fb571 ecd73fd c8fb571 7708ef9 08cbfae 7708ef9 ffc1de3 ecd73fd 9698b9b 08cbfae 8d9c7cb 7708ef9 65cc174 |
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 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import tensorflow as tf
from keras.utils import custom_object_scope
import gradio as gr
import numpy as np
from PIL import Image
# 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 pré-processamento
def preprocess_image(inp):
# Redimensione a imagem para o formato esperado pelo modelo (192x256)
img = Image.fromarray(inp)
img = img.resize((256, 192))
# Converta a imagem para um array numpy
img = np.array(img)
# Normalize a imagem (escala de 0 a 1)
img = img / 255.0
return img
# Defina a função de classificação
def classify_image(inp):
# Pré-processar a imagem
img = preprocess_image(inp)
# 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)]
# Crie uma imagem de saída com a classe prevista
output_image = Image.new("RGB", (256, 192))
output_image.paste((255, 255, 255), (0, 0, 256, 192))
output_image_draw = ImageDraw.Draw(output_image)
output_image_draw.text((10, 10), f"Classe Prevista: {predicted_class}", fill=(0, 0, 0))
# Converte a imagem de saída de volta para numpy array
output_image = np.array(output_image)
return predicted_class, output_image
# Crie uma interface Gradio
iface = gr.Interface(
fn=classify_image,
inputs=gr.inputs.Image(shape=(192, 256)),
outputs=[gr.outputs.Label(), gr.outputs.Image(type="numpy")],
capture_session=True,
title="Detecção de Catarata",
description="Esta interface permite a detecção de catarata em imagens de olhos.",
instructions="Carregue uma imagem de um olho e clique em 'Classificar' para obter a previsão.",
theme="default", # Você pode escolher um tema predefinido ou personalizar as cores manualmente.
button_text="Classificar Imagem", # Personalize o texto do botão.
)
# Inicie a interface Gradio
iface.launch(debug=True)
|