Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import tensorflow as tf | |
| from tensorflow.keras.applications import EfficientNetB0 | |
| from tensorflow.keras import layers, models | |
| from utils.predict import predict_disease | |
| from utils.gradcam import generate_gradcam | |
| from utils.disease_info import disease_details | |
| # ========================= | |
| # MODEL SETUP | |
| # ========================= | |
| NUM_CLASSES = len(disease_details.keys()) | |
| IMG_SIZE = 224 | |
| base_model = EfficientNetB0( | |
| weights=None, | |
| include_top=False, | |
| input_shape=(IMG_SIZE, IMG_SIZE, 3) | |
| ) | |
| x = layers.GlobalAveragePooling2D()(base_model.output) | |
| x = layers.Dense(256, activation='relu')(x) | |
| output = layers.Dense(NUM_CLASSES, activation='softmax')(x) | |
| model = models.Model(base_model.input, output) | |
| # LOAD ONLY WEIGHTS | |
| model.load_weights("model.weights.h5") | |
| print("Model loaded successfully!") | |
| # ========================= | |
| class_names = list(disease_details.keys()) | |
| def predict(img): | |
| predictions = predict_disease( | |
| model, | |
| img, | |
| class_names | |
| ) | |
| top_prediction = predictions[0] | |
| disease_name = top_prediction["disease"] | |
| gradcam_image = generate_gradcam( | |
| model, | |
| img | |
| ) | |
| info = disease_details[disease_name] | |
| prediction_text = "# Top Predictions\n\n" | |
| for pred in predictions: | |
| conf = pred["confidence"] | |
| bars = "🟩" * int(conf // 10) | |
| prediction_text += ( | |
| f"### {pred['disease']}\n" | |
| f"{bars} {conf}%\n\n" | |
| ) | |
| disease_output = f""" | |
| # Disease: {disease_name} | |
| ## Description | |
| {info['description']} | |
| ## Symptoms | |
| {info['symptoms']} | |
| ## Prevention | |
| {info['prevention']} | |
| ## Cure | |
| {info['cure']} | |
| """ | |
| return ( | |
| prediction_text, | |
| disease_output, | |
| gradcam_image | |
| ) | |
| with gr.Blocks( | |
| title="AgriVision AI" | |
| ) as demo: | |
| gr.Markdown( | |
| """ | |
| # 🌿 AgriVision AI | |
| ## Plant Disease Detection using Deep Learning | |
| Upload a leaf image to detect plant disease, | |
| view confidence scores, and visualize Grad-CAM. | |
| """ | |
| ) | |
| with gr.Row(): | |
| image_input = gr.Image( | |
| type="filepath", | |
| label="Upload Leaf Image" | |
| ) | |
| with gr.Row(): | |
| prediction_output = gr.Markdown( | |
| label="Predictions" | |
| ) | |
| disease_output = gr.Markdown( | |
| label="Disease Details" | |
| ) | |
| gradcam_output = gr.Image( | |
| label="Grad-CAM Visualization" | |
| ) | |
| predict_btn = gr.Button( | |
| "Detect Disease" | |
| ) | |
| predict_btn.click( | |
| fn=predict, | |
| inputs=image_input, | |
| outputs=[ | |
| prediction_output, | |
| disease_output, | |
| gradcam_output | |
| ] | |
| ) | |
| demo.launch() |