Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,44 +1,20 @@
|
|
1 |
import tensorflow as tf
|
2 |
-
from keras.utils import custom_object_scope
|
3 |
import gradio as gr
|
4 |
-
import numpy as np
|
5 |
from PIL import Image, ImageDraw
|
6 |
|
7 |
-
#
|
8 |
-
|
9 |
-
def __init__(self, rate, **kwargs):
|
10 |
-
super().__init__(rate, **kwargs)
|
11 |
-
self._rate = rate
|
12 |
-
|
13 |
-
def call(self, inputs):
|
14 |
-
return tf.nn.dropout(inputs, self._rate)
|
15 |
-
|
16 |
-
# Registre a camada personalizada FixedDropout com o TensorFlow
|
17 |
-
with custom_object_scope({'FixedDropout': FixedDropout}):
|
18 |
-
# Carregue o modelo
|
19 |
-
loaded_model = tf.keras.models.load_model('modelo_treinado.h5')
|
20 |
|
21 |
# Crie uma lista de classes
|
22 |
class_names = ["Normal", "Cataract"]
|
23 |
|
24 |
-
# Defina a função de pré-processamento
|
25 |
-
def preprocess_image(inp):
|
26 |
-
# Redimensione a imagem para o formato esperado pelo modelo (192x256)
|
27 |
-
img = Image.fromarray(inp)
|
28 |
-
img = img.resize((256, 192))
|
29 |
-
|
30 |
-
# Converta a imagem para um array numpy
|
31 |
-
img = np.array(img)
|
32 |
-
|
33 |
-
# Normalize a imagem (escala de 0 a 1)
|
34 |
-
img = img / 255.0
|
35 |
-
|
36 |
-
return img
|
37 |
-
|
38 |
# Defina a função de classificação
|
39 |
def classify_image(inp):
|
40 |
-
#
|
41 |
-
img =
|
|
|
|
|
|
|
42 |
|
43 |
# Faça uma previsão usando o modelo treinado
|
44 |
prediction = loaded_model.predict(np.expand_dims(img, axis=0)).flatten()
|
@@ -46,29 +22,13 @@ def classify_image(inp):
|
|
46 |
# Obtém a classe prevista
|
47 |
predicted_class = class_names[np.argmax(prediction)]
|
48 |
|
49 |
-
|
50 |
-
output_image = Image.new("RGB", (256, 192))
|
51 |
-
output_image.paste((255, 255, 255), (0, 0, 256, 192))
|
52 |
-
output_image_draw = ImageDraw.Draw(output_image)
|
53 |
-
output_image_draw.text((10, 10), f"Classe Prevista: {predicted_class}", fill=(0, 0, 0))
|
54 |
-
|
55 |
-
# Converte a imagem de saída de volta para numpy array
|
56 |
-
output_image = np.array(output_image)
|
57 |
-
|
58 |
-
# Retorna uma lista com a imagem de entrada e o rótulo
|
59 |
-
return [inp, output_image]
|
60 |
|
61 |
# Crie uma interface Gradio
|
62 |
iface = gr.Interface(
|
63 |
fn=classify_image,
|
64 |
inputs=gr.inputs.Image(shape=(192, 256)),
|
65 |
-
outputs=[gr.outputs.Image(type="numpy"),
|
66 |
-
capture_session=True,
|
67 |
-
title="Detecção de Catarata",
|
68 |
-
description="Esta interface permite a detecção de catarata em imagens de olhos.",
|
69 |
-
instructions="Carregue uma imagem de um olho e clique em 'Classificar' para obter a previsão.",
|
70 |
-
theme="default", # Você pode escolher um tema predefinido ou personalizar as cores manualmente.
|
71 |
-
button_text="Classificar Imagem", # Personalize o texto do botão.
|
72 |
)
|
73 |
|
74 |
# Inicie a interface Gradio
|
|
|
1 |
import tensorflow as tf
|
|
|
2 |
import gradio as gr
|
|
|
3 |
from PIL import Image, ImageDraw
|
4 |
|
5 |
+
# Carregue o modelo
|
6 |
+
loaded_model = tf.keras.models.load_model('modelo_treinado.h5')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
# Crie uma lista de classes
|
9 |
class_names = ["Normal", "Cataract"]
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
# Defina a função de classificação
|
12 |
def classify_image(inp):
|
13 |
+
# Redimensione a imagem para o formato esperado pelo modelo (192x256)
|
14 |
+
img = Image.fromarray(inp).resize((256, 192))
|
15 |
+
|
16 |
+
# Converta a imagem para um array numpy e normalize-a (escala de 0 a 1)
|
17 |
+
img = np.array(img) / 255.0
|
18 |
|
19 |
# Faça uma previsão usando o modelo treinado
|
20 |
prediction = loaded_model.predict(np.expand_dims(img, axis=0)).flatten()
|
|
|
22 |
# Obtém a classe prevista
|
23 |
predicted_class = class_names[np.argmax(prediction)]
|
24 |
|
25 |
+
return inp, predicted_class
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
# Crie uma interface Gradio
|
28 |
iface = gr.Interface(
|
29 |
fn=classify_image,
|
30 |
inputs=gr.inputs.Image(shape=(192, 256)),
|
31 |
+
outputs=[gr.outputs.Image(type="numpy"), "label"],
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
)
|
33 |
|
34 |
# Inicie a interface Gradio
|