riabayonaor commited on
Commit
4d53bee
1 Parent(s): bb9b29e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +66 -41
app.py CHANGED
@@ -1,43 +1,68 @@
1
- import gradio as gr
2
  import requests
 
 
 
3
 
4
- # Define una variable global para almacenar la etiqueta predicha
5
- predicted_label = ""
6
-
7
- def predict(image):
8
- global predicted_label
9
-
10
- # URL del modelo en Hugging Face
11
- url = "https://api-inference.huggingface.co/models/riabayonaor/modelo_prediccion_enfermedades_pepinos"
12
-
13
- # Encabezados para la solicitud
14
- headers = {
15
- "Authorization": "Bearer hf_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
16
- }
17
-
18
- # Crear un objeto de archivo para la imagen
19
- files = {"file": image}
20
-
21
- # Hacer la solicitud POST al modelo
22
- response = requests.post(url, headers=headers, files=files)
23
-
24
- # Comprobar el estado de la respuesta
25
- if response.status_code == 200:
26
- result = response.json()
27
- # Suponiendo que el resultado es una lista de etiquetas con probabilidades
28
- labels = [item['label'] for item in result] # Extrae solo las etiquetas
29
- formatted_labels = ", ".join(labels) # Formatea las etiquetas como una cadena
30
- predicted_label = formatted_labels # Guarda la etiqueta en la variable global
31
- return formatted_labels
32
- else:
33
- return "Error en la predicción"
34
-
35
- # Carga el modelo en Gradio y define la interfaz personalizada
36
- interface = gr.Interface(
37
- fn=predict,
38
- inputs=gr.Image(type="file", label="Subir una imagen"),
39
- outputs=gr.Textbox(label="Etiquetas predichas")
40
- )
41
-
42
- # Lanza la interfaz
43
- interface.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
  import requests
3
+ from PIL import Image
4
+ from io import BytesIO
5
+ from transformers import AutoTokenizer, AutoModelForCausalLM
6
 
7
+ # Configuración de la API
8
+ API_URL = "https://api-inference.huggingface.co/models/riabayonaor/modelo_prediccion_enfermedades_pepinos"
9
+
10
+ # Cargar el modelo y el tokenizador de BLOOM
11
+ tokenizer = AutoTokenizer.from_pretrained("bigscience/bloom")
12
+ model = AutoModelForCausalLM.from_pretrained("bigscience/bloom")
13
+
14
+ def query(image_bytes):
15
+ response = requests.post(API_URL, data=image_bytes)
16
+ if response.status_code != 200:
17
+ st.error(f"Error al clasificar la imagen: {response.status_code}")
18
+ return None
19
+ return response.json()
20
+
21
+ def bloom_query(prompt):
22
+ inputs = tokenizer(prompt, return_tensors="pt")
23
+ outputs = model.generate(inputs["input_ids"], max_length=500, num_return_sequences=1)
24
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
25
+ return response
26
+
27
+ def main():
28
+ st.set_page_config(page_title="Predicción de Enfermedades en Pepinos")
29
+ st.title("Predicción de Enfermedades en Pepinos")
30
+ st.write("Sube una foto de una planta de pepino o un pepino para clasificar posibles enfermedades y obtener soluciones.")
31
+
32
+ uploaded_file = st.file_uploader("Sube una foto de una planta de pepino o un pepino", type=["jpg", "jpeg", "png"])
33
+
34
+ if uploaded_file is not None:
35
+ image = Image.open(uploaded_file)
36
+ st.image(image, caption='Imagen subida.', use_column_width=True)
37
+ st.write("Clasificando...")
38
+
39
+ # Convertir la imagen a bytes
40
+ img_byte_arr = BytesIO()
41
+ image.save(img_byte_arr, format='PNG')
42
+ img_byte_arr = img_byte_arr.getvalue()
43
+
44
+ # Enviar la imagen al modelo de Hugging Face
45
+ predictions = query(img_byte_arr)
46
+
47
+ if predictions is not None:
48
+ if "error" not in predictions:
49
+ # Suponiendo que las predicciones están en el formato [{label: "Downy Mildew", score: 0.95}, {label: "Fresh Cucumber", score: 0.05}]
50
+ top_prediction = max(predictions, key=lambda x: x["score"])
51
+ class_label = top_prediction['label']
52
+ st.write(f"Predicción principal: {class_label} con confianza {top_prediction['score']:.2f}")
53
+
54
+ # Usar la etiqueta principal para el modelo BLOOM
55
+ prompt = f"Esta enfermedad es {class_label}. Explica qué es y sugiere posibles insecticidas o soluciones en español."
56
+
57
+ # Llamar al modelo BLOOM
58
+ explanation = bloom_query(prompt)
59
+
60
+ st.write(f"Esta enfermedad es {class_label}:")
61
+ st.write(explanation)
62
+ else:
63
+ st.write("No se pudo clasificar la imagen.")
64
+ else:
65
+ st.write("No se pudo clasificar la imagen.")
66
+
67
+ if __name__ == "__main__":
68
+ main()