Spaces:
Runtime error
Runtime error
import gradio as gr | |
import numpy as np | |
import tensorflow as tf | |
from tensorflow.keras.models import load_model | |
from tensorflow.keras.preprocessing.image import load_img, img_to_array | |
# Load the trained model | |
MODEL_PATH = "best_model.weights.h5" | |
model = load_model(MODEL_PATH) | |
# Define the class names | |
class_names = [ | |
"Bear", "Bird", "Cat", "Cow", "Deer", | |
"Dog", "Dolphin", "Elephant", "Giraffe", | |
"Horse", "Kangaroo", "Lion", "Panda", | |
"Tiger", "Zebra" | |
] | |
def classify_image(image): | |
img = image.resize((256, 256)) | |
img_array = img_to_array(img) / 255.0 | |
img_array = np.expand_dims(img_array, axis=0) | |
predictions = model.predict(img_array) | |
predicted_class = class_names[np.argmax(predictions)] | |
return f"Predicted Class: {predicted_class}" | |
def instruction(): | |
return ( | |
"**Important Note:**\n\n" | |
"This model is specifically trained to classify images into the following **15 animal categories**:\n\n" | |
"- Bear\n" | |
"- Bird\n" | |
"- Cat\n" | |
"- Cow\n" | |
"- Deer\n" | |
"- Dog\n" | |
"- Dolphin\n" | |
"- Elephant\n" | |
"- Giraffe\n" | |
"- Horse\n" | |
"- Kangaroo\n" | |
"- Lion\n" | |
"- Panda\n" | |
"- Tiger\n" | |
"- Zebra\n\n" | |
"**Usage Limitation:**\n\n" | |
"- The model will only recognize images containing these animals.\n" | |
"- Uploading an image of an animal not listed above or a non-animal image may result in inaccurate or undefined predictions.\n\n" | |
"Ensure the uploaded image is clear, contains a single animal, and resembles the categories listed for the best results." | |
) | |
# Gradio Interface | |
with gr.Blocks() as app: | |
gr.Markdown("# Animal Classifier") | |
gr.Markdown(instruction()) | |
with gr.Row(): | |
with gr.Column(): | |
image_input = gr.Image(label="Upload an Image", type="pil") | |
predict_button = gr.Button("Classify Image") | |
with gr.Column(): | |
result_output = gr.Textbox(label="Prediction Result", lines=3) | |
predict_button.click(classify_image, inputs=image_input, outputs=result_output) | |
app.launch() | |