Spaces:
Sleeping
Sleeping
import gradio as gr | |
import numpy as np | |
import joblib | |
from tensorflow.keras.utils import load_img, img_to_array | |
# Load the pre-trained model | |
model = joblib.load("flower1.pkl") | |
# Define the class names (must match the training dataset order) | |
class_names = ["Rose", "Tulip", "Daisy", "Sunflower", "Daffodil","Lily","Orchid","Lotus","Jasmine","Marigold","Hibiscus","Tube rose","Gladiolus","Frangipani","Iris","Dahlia"] | |
# Function to preprocess the image and make predictions | |
def predict_flower(image): | |
# Resize and preprocess the image | |
img = image.resize((150, 150)) # Resize image to match the model input | |
img_array = np.array(img) / 255.0 # Normalize pixel values to [0, 1] | |
img_array = img_array.reshape((1, 150, 150, 3)) # Add batch dimension | |
# Make prediction | |
predictions = model.predict(img_array) | |
predicted_class = class_names[np.argmax(predictions)] | |
return f"The predicted flower is: {predicted_class}" | |
# Create the Gradio interface | |
title = "Flower Classification" | |
description = "Upload an image of a flower, and the model will predict the type of flower (Daisy, Rose, Sunflower, Tulip etc.)." | |
gr_interface = gr.Interface( | |
fn=predict_flower, # Function to process predictions | |
inputs=gr.Image(type="pil"), # Input: Image (PIL format) | |
outputs=gr.Textbox(), # Output: Textbox for predicted class | |
title=title, | |
description=description | |
) | |
# Launch the Gradio app | |
if __name__ == "__main__": | |
gr_interface.launch() | |