DHEIVER commited on
Commit
df12e30
1 Parent(s): b024c30

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -49
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
- # Defina a camada personalizada FixedDropout
8
- class FixedDropout(tf.keras.layers.Dropout):
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
- # Pré-processar a imagem
41
- img = preprocess_image(inp)
 
 
 
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
- # Crie uma imagem de saída com a classe prevista
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"), 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