Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import numpy as np | |
| import tensorflow as tf | |
| from tensorflow.keras.preprocessing import image | |
| # Load the trained model | |
| model = tf.keras.models.load_model("Tomato_Leaf_Disease_Model.h5") | |
| # Updated disease categories based on training data | |
| class_labels = [ | |
| "Tomato Bacterial Spot", | |
| "Tomato Early Blight", | |
| "Tomato Late Blight", | |
| "Tomato Mosaic Virus", | |
| "Tomato Yellow Leaf Curl Virus" | |
| ] | |
| # Image preprocessing function | |
| def preprocess(img): | |
| img = img.resize((224, 224)) # Resize to match model input size | |
| img = image.img_to_array(img) / 255.0 # Normalize | |
| img = np.expand_dims(img, axis=0) # Add batch dimension | |
| return img | |
| # Prediction function | |
| def predict(img): | |
| img = preprocess(img) | |
| prediction = model.predict(img) | |
| class_idx = np.argmax(prediction) # Get class with highest probability | |
| confidence = np.max(prediction) * 100 # Get confidence score | |
| return f"{class_labels[class_idx]} (Confidence: {confidence:.2f}%)" | |
| # Gradio UI | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# 🍅 Tomato Leaf Disease Detector") | |
| gr.Markdown("Upload a leaf image to detect its disease.") | |
| image_input = gr.Image(type="pil", label="Upload a Tomato Leaf Image") | |
| result_output = gr.Textbox(label="Detected Disease & Confidence") | |
| submit_btn = gr.Button("Detect Disease") | |
| submit_btn.click(predict, inputs=image_input, outputs=result_output) | |
| demo.launch() | |