PedroNovaesNeto commited on
Commit
53fb9f9
·
verified ·
1 Parent(s): 35ed409

Upload 4 files

Browse files
.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ EfficientNetB4_adam.keras filter=lfs diff=lfs merge=lfs -text
37
+ MobileNet_adam.keras filter=lfs diff=lfs merge=lfs -text
EfficientNetB4_adam.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:966c8ab6ad66ebc56f233d0899acc84bd06a95075a4e99f08cf8222546b24bc3
3
+ size 215805290
MobileNet_adam.keras ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a751d02c9dd9360f648ad2cab6e417966bc4a7461afbf08999d6aa166acef382
3
+ size 40535363
app.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import tensorflow as tf
3
+ import numpy as np
4
+
5
+ # Dicionário para mapear os nomes amigáveis para os arquivos reais
6
+ MODELOS = {
7
+ "EfficientNetB4 (Alta Precisão)": "EfficientNetB4_adam.keras",
8
+ "MobileNet (Alta Velocidade)": "MobileNet_adam.keras"
9
+ }
10
+
11
+ # Cache para não precisar recarregar o arquivo toda vez que clicar no botão
12
+ cache_modelos = {}
13
+
14
+ def carregar_modelo(nome_selecionado):
15
+ arquivo = MODELOS[nome_selecionado]
16
+ if arquivo not in cache_modelos:
17
+ print(f"Carregando {arquivo} para o cache...")
18
+ cache_modelos[arquivo] = tf.keras.models.load_model(arquivo)
19
+ return cache_modelos[arquivo]
20
+
21
+ def realizar_predicao(imagem, nome_modelo):
22
+ # 1. Carregar o modelo selecionado no dropdown
23
+ model = carregar_modelo(nome_modelo)
24
+
25
+ # 2. Definir o tamanho baseado no modelo
26
+ # EfficientNetB4 usa 380x380, MobileNet usa 224x224
27
+ tamanho = (380, 380) if "EfficientNetB4" in nome_modelo else (224, 224)
28
+
29
+ # 3. Pré-processar a imagem
30
+ img_redimensionada = tf.image.resize(imagem, tamanho)
31
+ img_array = np.expand_dims(img_redimensionada, axis=0)
32
+
33
+ # 4. Fazer a predição
34
+ predicoes = model.predict(img_array)
35
+ classe_id = np.argmax(predicoes, axis=1)[0]
36
+ confianca = float(np.max(predicoes))
37
+
38
+ return f"Modelo: {nome_modelo}\nClasse Detectada: {classe_id}\nConfiança: {confianca:.2%}"
39
+
40
+ # Criar a Interface Visual
41
+ with gr.Blocks() as demo:
42
+ gr.Markdown("Teste de modelo Tensorflow")
43
+ gr.Markdown("Selecione qual modelo a IA deve usar para analisar a foto.")
44
+
45
+ with gr.Row():
46
+ with gr.Column():
47
+ seletor = gr.Dropdown(
48
+ choices=list(MODELOS.keys()),
49
+ value=list(MODELOS.keys())[0],
50
+ label="Escolha o Modelo"
51
+ )
52
+ input_img = gr.Image(label="Upload da Imagem")
53
+ btn = gr.Button("Analisar")
54
+
55
+ with gr.Column():
56
+ output_text = gr.Textbox(label="Resultado da Predição")
57
+
58
+ # Ação do botão
59
+ btn.click(fn=realizar_predicao, inputs=[input_img, seletor], outputs=output_text)
60
+
61
+ if __name__ == "__main__":
62
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ tensorflow
2
+ gradio
3
+ numpy