suvmkr's picture
Create app.py
3887fc1 verified
import tensorflow as tf
import gradio as gr
import numpy as np
from tensorflow.keras.preprocessing import image
# Load the model
model = tf.keras.models.load_model('model.keras')
# Define the class labels
class_labels = {
0: "Buildings",
1: "Forest",
2: "Glacier",
3: "Mountain",
4: "Sea",
5: "Street"
}
# Prediction function
def classify_image(img):
# Resize the image to the input size expected by your model
img = img.resize((150, 150)) # Replace 150 with your model's input size
# Convert the image to a numpy array and preprocess it
img_array = image.img_to_array(img)
img_array = np.expand_dims(img_array, axis=0)
img_array = img_array / 255.0 # Normalize if your model expects normalized inputs
# Make a prediction
predictions = model.predict(img_array)
predicted_class = np.argmax(predictions, axis=1)
# Get the class label from the predicted class index
predicted_label = class_labels.get(predicted_class[0], "Unknown")
# Return the predicted label
return f"Predicted class: {predicted_label}"
# Gradio interface
interface = gr.Interface(
fn=classify_image, # Function to call
inputs=gr.Image(type="pil"), # Input type (image)
outputs="text", # Output type (text)
title="CNN Image Classification",
description="Upload an image, and the model will classify it into one of the following classes: Buildings, Forest, Glacier, Mountain, Sea, Street."
)
# Launch the interface
interface.launch()