Spaces:
Sleeping
Sleeping
# -*- coding: utf-8 -*- | |
"""app | |
Automatically generated by Colab. | |
Original file is located at | |
https://colab.research.google.com/drive/1MO92S0QUrWXYS5jlMtHE9n5YdgsfUXaT | |
""" | |
import gradio as gr | |
from PIL import Image | |
import numpy as np | |
import tensorflow as tf | |
import pandas as pd | |
import plotly.express as px | |
import gdown | |
import os | |
# Carrega o modelo TFLite uma única vez | |
def carrega_modelo(): | |
output = 'modelo_quantizado16bits.tflite' | |
if not os.path.exists(output): | |
raise FileNotFoundError("O modelo TFLite não foi encontrado no diretório do app.") | |
interpreter = tf.lite.Interpreter(model_path=output) | |
interpreter.allocate_tensors() | |
return interpreter | |
interpreter = carrega_modelo() | |
# Função principal que recebe a imagem e retorna o gráfico | |
def classificar_imagem(imagem_pil): | |
# Pré-processamento da imagem | |
image = np.array(imagem_pil, dtype=np.float32) | |
image = image / 255.0 | |
image = np.expand_dims(image, axis=0) | |
# Realiza inferência | |
input_details = interpreter.get_input_details() | |
output_details = interpreter.get_output_details() | |
interpreter.set_tensor(input_details[0]['index'], image) | |
interpreter.invoke() | |
output_data = interpreter.get_tensor(output_details[0]['index']) | |
# Processa saída e cria gráfico | |
classes = ['BlackMeasles', 'BlackRot', 'HealthyGrapes', 'LeafBlight'] | |
df = pd.DataFrame({'classes': classes, 'probabilidades (%)': 100 * output_data[0]}) | |
fig = px.bar(df, y='classes', x='probabilidades (%)', orientation='h', text='probabilidades (%)', | |
title='Probabilidade de Classes de Doenças em Uvas') | |
return fig | |
# Interface Gradio | |
interface = gr.Interface( | |
fn=classificar_imagem, | |
inputs=gr.Image(type="pil", label="Envie uma imagem de folha de videira"), | |
outputs=gr.Plot(label="Gráfico de Previsões"), | |
title="Classificador de Folhas de Videira 🍇", | |
description="Faça upload de uma imagem de folha de videira para detectar possíveis doenças." | |
) | |
if __name__ == "__main__": | |
interface.launch() |