Taidat's picture
Update app.py
18b1ad9 verified
Raw
History Blame Contribute Delete
1.18 kB
import gradio as gr
import tensorflow as tf
import numpy as np
from PIL import Image
# Load model
model = tf.keras.models.load_model("model.keras")
# Classes in training order
class_names = ['batteries', 'clothes', 'e-waste', 'glass', 'light blubs', 'metal', 'organic', 'paper', 'plastic']
IMG_SIZE = (224, 224)
def preprocess(image):
image = image.resize(IMG_SIZE)
image_array = tf.keras.preprocessing.image.img_to_array(image)
image_array = image_array / 255.0 # Normalize
return np.expand_dims(image_array, axis=0)
def predict(image):
input_tensor = preprocess(image)
predictions = model.predict(input_tensor)[0]
top_idx = np.argmax(predictions)
top_class = class_names[top_idx]
confidence = predictions[top_idx] * 100
return f"Predicted: {top_class} ({confidence:.2f}%)"
demo = gr.Interface(
fn=predict,
inputs=gr.Image(type="pil", label="Upload an image of a recyclable item"),
outputs=gr.Textbox(label="Prediction"),
title="♻️ Waste Image Classifier",
description="Classify recyclable waste images into 9 categories using a MobileNetV2-based model."
)
if __name__ == "__main__":
demo.launch()