import gradio as gr import numpy as np import json from huggingface_hub import hf_hub_download from tensorflow import keras # Descargar y cargar el modelo model_path = hf_hub_download( repo_id="Rakesh007n/Leaf-Classification-for-plant-species", filename="leaf_species_model_epoch_2.keras" ) model = keras.models.load_model(model_path) # Traducción de las etiquetas al español labels = [ "Manzano_Moho_negro", "Manzano_Roya_del_cedro", "Manzano_Oídio", "Manzano_Saludable", "Manzano_Antracnosis", "Cerezo_(incluyendo_agrios)_Oídio", "Cerezo_(incluyendo_agrios)_Saludable", "Maíz_(maíz)_Mancha_gris_de_Cercospora", "Maíz_(maíz)_Roya_común", "Maíz_(maíz)_Tizon_norteño", "Maíz_(maíz)_Saludable", "Algodón_Hoja_enferma", "Algodón_Hoja_fresca", "Uva_Moho_negro", "Uva_Esca_(Manchas_negras)", "Uva_Tizon_de_hoja_(Isariopsis)", "Uva_Saludable", "Naranja_Huanglongbing_(Greening_cítrico)", "Naranja_Moho_negro", "Naranja_Canker", "Naranja_Saludable", "Durazno_Mancha_bacteriana", "Durazno_Saludable", "Pimiento_campana_Mancha_bacteriana", "Pimiento_campana_Saludable", "Papa_Tizon_temprano", "Papa_Tizon_tardío", "Papa_Saludable", "Calabaza_Oídio", "Frutilla_Escaldadura_hoja", "Frutilla_Saludable", "Tomate_Mancha_bacteriana", "Tomate_Tizon_temprano", "Tomate_Tizon_tardío", "Tomate_Moho_de_hoja", "Tomate_Septoria", "Tomate_Acaros_(Ácaro_2_manchas)", "Tomate_Mancha_objetivo", "Tomate_Virus_enrollado_amarillo", "Tomate_Virus_mosaico", "Tomate_Saludable", "Trigo_Saludable", "Trigo_Roya_hoja", "Trigo_Deficiencia_nitrógeno" ] def predict(img): img = img.resize((96, 96)) arr = np.array(img) / 255.0 arr = np.expand_dims(arr, 0) preds = model.predict(arr)[0] return {labels[i]: float(preds[i]) for i in range(len(labels))} with gr.Blocks() as demo: gr.Markdown("Clasificador de enfermedades del cultivo ") gr.Markdown("Sube una imagen de una hoja de los siguientes Cultivos para detectar posibles enfermedades:manzano,cerezo,maíz,algodón,uva,naranja,durazno,morrón,papa,calabaza,frutilla,tomate,trigo"), gr.HTML(""" Mostrar Enfermedades""") with gr.Row(): inp = gr.Image(type="pil", label="Subí una imagen") out = gr.Label(label="Predicción") btn = gr.Button("Predecir") btn.click(fn=predict, inputs=inp, outputs=out) demo.launch( server_name="0.0.0.0",server_port=7860,share=False)