DHEIVER's picture
Update app.py
08cbfae
raw
history blame
1.83 kB
import tensorflow as tf
import efficientnet.tfkeras as efn
from tensorflow.keras.layers import Input, GlobalAveragePooling2D, Dense
import numpy as np
import gradio as gr
# Dimensões da imagem
IMG_HEIGHT = 224
IMG_WIDTH = 224
# Função para construir o modelo
def build_model(img_height, img_width, n):
inp = Input(shape=(img_height, img_width, n))
efnet = efn.EfficientNetB0(
input_shape=(img_height, img_width, n),
weights='imagenet',
include_top=False
)
x = efnet(inp)
x = GlobalAveragePooling2D()(x)
x = Dense(2, activation='softmax')(x)
model = tf.keras.Model(inputs=inp, outputs=x)
opt = tf.keras.optimizers.Adam(learning_rate=0.000003)
loss = tf.keras.losses.CategoricalCrossentropy(label_smoothing=0.01)
model.compile(optimizer=opt, loss=loss, metrics=['accuracy'])
return model
# Carregue o modelo treinado
loaded_model = build_model(IMG_HEIGHT, IMG_WIDTH, 3)
loaded_model.load_weights('modelo_treinado.h5')
# Função para fazer previsões usando o modelo treinado
def predict_image(input_image):
# Realize o pré-processamento na imagem de entrada, se necessário
# input_image = preprocess_image(input_image)
# Faça uma previsão usando o modelo carregado
input_image = tf.image.resize(input_image, (IMG_HEIGHT, IMG_WIDTH))
input_image = tf.expand_dims(input_image, axis=0)
prediction = loaded_model.predict(input_image)
# 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]])
return prediction
# Crie uma interface Gradio para fazer previsões
iface = gr.Interface(
fn=predict_image,
inputs="image",
outputs="text",
interpretation="default"
)
# Execute a interface Gradio
iface.launch()