import gradio as gr from PIL import Image import random # ------------------------------- # Simple classification logic # ------------------------------- def classify_item(image, description): categories = ["Recyclable", "Compostable", "Trash"] if description: desc = description.lower() if "banana" in desc or "food" in desc or "peel" in desc or "leaf" in desc: category = "Compostable" elif "plastic" in desc or "bottle" in desc or "can" in desc or "metal" in desc: category = "Recyclable" elif "paper" in desc and "greasy" not in desc: category = "Recyclable" elif "pizza box" in desc or "styrofoam" in desc or "chip bag" in desc: category = "Trash" else: category = random.choice(categories) elif image: # Placeholder β replace with ML model if you train one category = random.choice(categories) else: return "No input", "β οΈ Please upload an image or type a description." # Tips tips = { "Recyclable": "β»οΈ Rinse before recycling. Check local rules for plastics.", "Compostable": "π± Add to compost bin or green waste collection.", "Trash": "ποΈ Not recyclable. Consider reusable alternatives." } return category, tips.get(category, "Check local disposal guidelines.") # ------------------------------- # Gradio UI # ------------------------------- with gr.Blocks() as demo: gr.Markdown("# π EcoSort: Smart Waste Classifier") gr.Markdown("Upload an **image** or type a **description** to check if it's Recyclable, Compostable, or Trash.") with gr.Row(): image_input = gr.Image(type="pil", label="Upload Image") text_input = gr.Textbox(label="Or type a description (e.g., 'banana peel', 'plastic bottle')") output_label = gr.Label(label="Prediction") output_tip = gr.Textbox(label="Eco-Friendly Tip", interactive=False) btn = gr.Button("Classify") btn.click(fn=classify_item, inputs=[image_input, text_input], outputs=[output_label, output_tip]) demo.launch()
verified