DHEIVER commited on
Commit
7708ef9
1 Parent(s): 083470e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -63
app.py CHANGED
@@ -1,75 +1,31 @@
1
  import tensorflow as tf
2
- import efficientnet.tfkeras as efn
3
  import numpy as np
4
  import gradio as gr
5
- import plotly.express as px
6
 
7
- # Dimensões da imagem
8
- IMG_HEIGHT = 224
9
- IMG_WIDTH = 224
10
 
11
- # Função para construir o modelo
12
- def build_model(img_height, img_width, n):
13
- inp = tf.keras.layers.Input(shape=(img_height, img_width, n))
14
- efnet = efn.EfficientNetB0(
15
- input_shape=(img_height, img_width, n),
16
- weights='imagenet',
17
- include_top=False
18
- )
19
- x = efnet(inp)
20
- x = tf.keras.layers.GlobalAveragePooling2D()(x)
21
- x = tf.keras.layers.Dense(2, activation='softmax')(x)
22
- model = tf.keras.Model(inputs=inp, outputs=x)
23
- opt = tf.keras.optimizers.Adam(learning_rate=0.000003)
24
- loss = tf.keras.losses.CategoricalCrossentropy(label_smoothing=0.01)
25
- model.compile(optimizer=opt, loss=loss, metrics=['accuracy'])
26
- return model
27
 
28
- # Carregue o modelo treinado
29
- loaded_model = build_model(IMG_HEIGHT, IMG_WIDTH, 3)
30
- loaded_model.load_weights('modelo_treinado.h5')
 
31
 
32
- # Função para realizar o pré-processamento da imagem de entrada
33
- def preprocess_image(input_image):
34
- # Redimensione a imagem para as dimensões esperadas pelo modelo
35
- input_image = tf.image.resize(input_image, (IMG_HEIGHT, IMG_WIDTH))
36
-
37
- # Normalização dos valores de pixel para o intervalo [0, 1]
38
- input_image = input_image / 255.0
39
 
40
- # Outras transformações, se necessárias (por exemplo, normalização adicional)
 
41
 
42
- return input_image
43
-
44
- # Função para fazer previsões usando o modelo treinado
45
- def predict_image(input_image):
46
- # Realize o pré-processamento na imagem de entrada
47
- input_image = preprocess_image(input_image)
48
-
49
- # Faça uma previsão usando o modelo carregado
50
- input_image = tf.expand_dims(input_image, axis=0)
51
- prediction = loaded_model.predict(input_image)
52
-
53
- # A saída será uma matriz de previsões (no caso de classificação de duas classes, será algo como [[probabilidade_classe_0, probabilidade_classe_1]])
54
- # Adicione lógica para interpretar o resultado e formatá-lo para exibição
55
- class_names = ["Normal", "Cataract"]
56
- predicted_class = class_names[np.argmax(prediction)]
57
- probability = prediction[0][np.argmax(prediction)]
58
-
59
- # Retorna a previsão em formato de string
60
- return f"""
61
- Predicted Class: {predicted_class}
62
- Probability: {probability:.2%}
63
- """
64
-
65
- # Crie uma interface Gradio para fazer previsões
66
  iface = gr.Interface(
67
- fn=predict_image,
68
- inputs=gr.inputs.Image(label="Upload an Image", type="pil"),
69
- outputs=gr.outputs.Output(label="Prediction", type="string"),
70
- interpretation="text",
71
- custom_interpretation_fn=predict_image
72
  )
73
 
74
- # Execute a interface Gradio
75
- iface.launch()
 
1
  import tensorflow as tf
 
2
  import numpy as np
3
  import gradio as gr
 
4
 
5
+ # Carregue o modelo treinado com catarata
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
+ # Reshape a imagem de entrada para o formato esperado pelo modelo
14
+ img = inp.reshape((-1, 224, 224, 3))
15
 
16
+ # Faça uma previsão usando o modelo treinado
17
+ prediction = loaded_model.predict(img).flatten()
 
 
 
 
 
18
 
19
+ # Retorna a classe prevista
20
+ return class_names[np.argmax(prediction)]
21
 
22
+ # Crie uma interface Gradio
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  iface = gr.Interface(
24
+ fn=classify_image,
25
+ inputs=gr.inputs.Image(shape=(224, 224)),
26
+ outputs=gr.outputs.Label(),
27
+ capture_session=True
 
28
  )
29
 
30
+ # Inicie a interface Gradio
31
+ iface.launch(debug=True, share=True)