Download app.py from GDDO/wbc: direct link, hf CLI and curl.
- Browser
- Download file 1.78 kB
-
https://huggingface.co/spaces/GDDO/wbc/resolve/main/app.py
- Command line
-
hf download hf://spaces/GDDO/wbc/app.py
-
curl -L -o app.py https://huggingface.co/spaces/GDDO/wbc/resolve/main/app.py
1.78 kB
| import gradio as gr | |
| import tensorflow as tf | |
| import numpy as np | |
| from PIL import Image as PILImage # Para evitar conflito com Gradio | |
| # Carregar o modelo .tflite | |
| interpreter = tf.lite.Interpreter(model_path="model_unquant.tflite") | |
| interpreter.allocate_tensors() | |
| # Obter detalhes do modelo | |
| input_details = interpreter.get_input_details() | |
| output_details = interpreter.get_output_details() | |
| # Classes de saída do modelo | |
| classes = ['Bastonete', 'Basófilo'] | |
| def recognize_image(image): | |
| # Redimensionar a imagem para 224x224 (o tamanho esperado pelo modelo) | |
| image = PILImage.fromarray(image).resize((224, 224)) | |
| # Converter para array NumPy e normalizar os valores | |
| image_array = np.array(image).astype(np.float32) | |
| image_array /= 255.0 # Normalizar para o intervalo [0, 1] | |
| # Adicionar uma dimensão extra para o batch size (necessário para o modelo) | |
| image_input = np.expand_dims(image_array, axis=0) | |
| # Fazer a inferência no modelo | |
| interpreter.set_tensor(input_details[0]['index'], image_input) | |
| interpreter.invoke() | |
| # Obter o resultado da inferência | |
| output_data = interpreter.get_tensor(output_details[0]['index']) | |
| # Obter o índice da classe com maior probabilidade | |
| predicted_class_index = np.argmax(output_data) | |
| predicted_class_name = classes[predicted_class_index] | |
| predicted_confidence = output_data[0][predicted_class_index] * 100 # Converter para % | |
| return f"Classe: {predicted_class_name} (Confiança: {predicted_confidence:.2f}%)" | |
| # Configurando a interface Gradio | |
| interface = gr.Interface( | |
| fn=recognize_image, | |
| inputs=gr.Image(), # Removemos o shape | |
| outputs="text" # Saída: texto com a classe e confiança | |
| ) | |
| # Lançar o servidor com compartilhamento público | |
| interface.launch(share=True) |