|
import os |
|
import gradio as gr |
|
import tensorflow as tf |
|
import numpy as np |
|
|
|
os.environ['CUDA_VISIBLE_DEVICES'] = '-1' |
|
|
|
|
|
model = tf.keras.models.load_model('plant_disease_classifier.h5') |
|
|
|
def predict(input_image): |
|
try: |
|
|
|
input_image = tf.convert_to_tensor(input_image) |
|
input_image = tf.image.resize(input_image, [256, 256]) |
|
input_image = tf.expand_dims(input_image, 0) / 255.0 |
|
|
|
|
|
predictions = model.predict(input_image) |
|
labels = ['Healthy', 'Powdery', 'Rust'] |
|
|
|
|
|
class_idx = np.argmax(predictions) |
|
class_label = labels[class_idx] |
|
confidence = np.round(predictions[0][class_idx] * 100, 3) |
|
|
|
return f"Predicted Class: {class_label}. Confidence Score: {confidence}%" |
|
|
|
except Exception as e: |
|
return f"An error occurred: {e}" |
|
|
|
examples = ["Healthy.png", "Powdery.png", "Rust.png"] |
|
|
|
iface = gr.Interface( |
|
fn=predict, |
|
inputs=gr.Image(), |
|
outputs="text", |
|
title="🌿 Plant Disease Detection", |
|
description='<br> This is a specialized Image Classification model engineered to identify the health status of plants, specifically detecting conditions of Powdery Mildew or Rust. <br> \ |
|
This model is based on a Convolutional Neural Network that I have trained, evaluated, and validated on my Kaggle Notebook: <a href="https://www.kaggle.com/code/lusfernandotorres/convolutional-neural-network-from-scratch">🧠 Convolutional Neural Network From Scratch</a>. <br> \ |
|
<br> Upload a photo of a plant to see how the model classifies its status!', |
|
examples=examples |
|
) |
|
|
|
iface.launch(share=True) |
|
|