Spaces:
Sleeping
Sleeping
File size: 2,691 Bytes
adf2111 9c07890 75fd37c f915493 e2d7f66 08cbfae 9c07890 08cbfae 7708ef9 339f505 08cbfae 7708ef9 df12e30 f915493 df12e30 ffc1de3 7708ef9 a2419a7 c8fb571 ecd73fd e2d7f66 9762bfd e2d7f66 9762bfd c8fb571 9762bfd 024b698 08cbfae 7708ef9 ffc1de3 9762bfd 2debced eea64d8 024b698 9762bfd 2debced 9762bfd 8d9c7cb 024b698 7708ef9 9762bfd |
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 76 77 78 |
import tensorflow as tf
from keras.utils import custom_object_scope
import gradio as gr
from PIL import Image
import numpy as np
import datetime
# 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)]
# Obtém a data e hora atual
data_hora = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# Formate a saída em HTML
result_html = f"""
<h2>Resultado da Classificação</h2>
<p><strong>Categoria Predita:</strong> {predicted_class}</p>
<p><strong>Data e Hora:</strong> {data_hora}</p>
"""
return result_html
# Crie uma interface Gradio com descrição formatada em HTML
iface = gr.Interface(
fn=classify_image,
inputs=gr.inputs.Image(shape=(192, 256)),
outputs=gr.outputs.HTML(), # Saída formatada com HTML
live=True,
title="Classificador de Catarata",
description="""
<p>Este é um classificador de imagens médicas para detectar catarata. Faça o upload de uma imagem e clique em 'Classificar' para obter a categoria predita.</p>
<p><strong>Como usar:</strong></p>
<ol>
<li>Clique no botão 'Escolher Arquivo' abaixo para fazer o upload de uma imagem.</li>
<li>Depois de fazer o upload, clique em 'Classificar' para iniciar a análise.</li>
<li>A categoria predita e a data/hora da classificação serão exibidas abaixo.</li>
</ol>
<p><strong>Observação:</strong> Este modelo é destinado apenas para fins de demonstração e não deve substituir a avaliação de um médico.</p>
""",
allow_screenshot=False,
allow_flagging=False,
layout="vertical",
capture_session=True,
theme="default",
)
# Inicie a interface Gradio
iface.launch()
|