Spaces:
Sleeping
Sleeping
File size: 2,156 Bytes
53fb9f9 | 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 | import gradio as gr
import tensorflow as tf
import numpy as np
# Dicionário para mapear os nomes amigáveis para os arquivos reais
MODELOS = {
"EfficientNetB4 (Alta Precisão)": "EfficientNetB4_adam.keras",
"MobileNet (Alta Velocidade)": "MobileNet_adam.keras"
}
# Cache para não precisar recarregar o arquivo toda vez que clicar no botão
cache_modelos = {}
def carregar_modelo(nome_selecionado):
arquivo = MODELOS[nome_selecionado]
if arquivo not in cache_modelos:
print(f"Carregando {arquivo} para o cache...")
cache_modelos[arquivo] = tf.keras.models.load_model(arquivo)
return cache_modelos[arquivo]
def realizar_predicao(imagem, nome_modelo):
# 1. Carregar o modelo selecionado no dropdown
model = carregar_modelo(nome_modelo)
# 2. Definir o tamanho baseado no modelo
# EfficientNetB4 usa 380x380, MobileNet usa 224x224
tamanho = (380, 380) if "EfficientNetB4" in nome_modelo else (224, 224)
# 3. Pré-processar a imagem
img_redimensionada = tf.image.resize(imagem, tamanho)
img_array = np.expand_dims(img_redimensionada, axis=0)
# 4. Fazer a predição
predicoes = model.predict(img_array)
classe_id = np.argmax(predicoes, axis=1)[0]
confianca = float(np.max(predicoes))
return f"Modelo: {nome_modelo}\nClasse Detectada: {classe_id}\nConfiança: {confianca:.2%}"
# Criar a Interface Visual
with gr.Blocks() as demo:
gr.Markdown("Teste de modelo Tensorflow")
gr.Markdown("Selecione qual modelo a IA deve usar para analisar a foto.")
with gr.Row():
with gr.Column():
seletor = gr.Dropdown(
choices=list(MODELOS.keys()),
value=list(MODELOS.keys())[0],
label="Escolha o Modelo"
)
input_img = gr.Image(label="Upload da Imagem")
btn = gr.Button("Analisar")
with gr.Column():
output_text = gr.Textbox(label="Resultado da Predição")
# Ação do botão
btn.click(fn=realizar_predicao, inputs=[input_img, seletor], outputs=output_text)
if __name__ == "__main__":
demo.launch() |