diff --git "a/app.py" "b/app.py" new file mode 100644--- /dev/null +++ "b/app.py" @@ -0,0 +1,109 @@ +# AUTOGENERATED! DO NOT EDIT! File to edit: ../weed_classifier.ipynb. +import json + +# %% auto 0 +__all__ = ['learn', 'labels', 'article', 'title', 'description', 'examples', 'interpretation', 'enable_queue', 'predict'] + +# %% ../weed_classifier.ipynb 1 +from fastai.vision.all import * +import gradio as gr +import skimage + +# %% ../weed_classifier.ipynb 2 +learn = load_learner('export.pkl') + +# JSON de recomendaciones +with open("WEEDS_JSON.json", "r") as f: + recommendations = json.load(f) + + +# %% ../weed_classifier.ipynb 3 +labels = learn.dls.vocab + +print(learn.dls.vocab) + +def predict(img): + img = PILImage.create(img) + pred, pred_idx, probs = learn.predict(img) + label = labels[pred_idx] + + # Clasificación con porcentajes + classification_output = {labels[i]: float(probs[i]) for i in range(len(labels))} + + # Información de recomendaciones + recommendations_output = recommendations.get(label, {}) + + # Generación de la salida en formato HTML para las recomendaciones + html_output = display_output(label, recommendations_output) + + return classification_output, html_output + +def display_output(weed_name, recommendations): + products = recommendations.get("products", []) + weed_url = recommendations.get("weed_url", "#") + control = recommendations.get("text", "") + + # Crear una lista para almacenar la información de salida + output_list = [f"Weed Identified: {weed_name}"] + + # Añadir recomendaciones de productos + + output_html = f"

Hierba Identificada:

{weed_name}

Control:

{control}

Herbicidas recomendados

" + output_list = ["
"] + for product in products: + product_name = product["name"] + product_img = product["img"] + product_url = product["url"] + + output_list.append(f"{product_name}") + + # Unir la lista en una cadena de texto HTML para la salida + output_html += "".join(output_list) + + return output_html + + +# %% ../weed_classifier.ipynb 5 +article = """
Este modelo se entrenó con un conjunto de datos que contiene 5.539 imágenes de plántulas de cultivos y malas hierbas. Las imágenes se agrupan en 12 clases. Estas clases representan especies de plantas comunes en la agricultura danesa en distintas fases de crecimiento. Se ajustó un modelo ResNet34 preentrenado utilizando la biblioteca de visión fastai. La tasa de error alcanzada en el conjunto de datos de validación es del 2,5% tras 4 épocas. +

+
""" + +# %% ../weed_classifier.ipynb 6 +description = ''' +
+ +

RECOMENDADOR DE HERBICIDAS

+
+ +
+

Descubre nuestra plataforma diseñada para facilitar la selección de herbicidas de Bayer de manera eficiente. Captura imágenes con tu dispositivo móvil y recibe recomendaciones precisas basadas en las necesidades específicas de tu terreno.

+

La intuitiva interfaz presenta información detallada sobre los herbicidas, destacando sus características, beneficios y aplicaciones recomendadas. Mantenemos actualizada nuestra base de datos con los últimos avances en la protección de cultivos para ofrecerte la información más actualizada.

+

Esta herramienta no solo simplifica la toma de decisiones, sino que también fomenta una gestión más sostenible de los cultivos, alineándose con las mejores prácticas agrícolas y el cuidado responsable del medio ambiente.

+
+ ''' +examples = [ 'FatHen.png', 'Loose Silky-bent.png', 'CommonChickweed.png', 'cleavers.png', 'ShepherdsPurse.png', 'Black-grass.png'] +interpretation='default' +enable_queue=True + +theme = gr.themes.Monochrome(primary_hue="blue").set( + button_primary_background_fill="*primary_800", + button_primary_background_fill_hover="*primary_950", + checkbox_label_text_color="*primary_800", + checkbox_label_background_fill="white", + checkbox_label_background_fill_hover="white", + checkbox_label_background_fill_selected="white", + checkbox_background_color_selected="*primary_800", + checkbox_background_color="*primary_200", + checkbox_background_color_focus="*primary_600", +) + +demo = gr.Interface(fn=predict, + inputs=gr.components.Image(shape=(512, 512)), + examples=examples, + outputs=[gr.components.Label(num_top_classes=1), gr.components.HTML()], + description=description, + article=article, + theme=theme, + allow_flagging="never" + ) +demo.launch(enable_queue=enable_queue) \ No newline at end of file