Spaces:
Runtime error
Runtime error
from transformers import AutoImageProcessor, SiglipForImageClassification | |
from PIL import Image | |
import torch | |
import gradio as gr | |
# Load model and processor from HuggingFace | |
model_name = "prithivMLmods/Recycling-Net-11" | |
processor = AutoImageProcessor.from_pretrained(model_name) | |
model = SiglipForImageClassification.from_pretrained(model_name) | |
# Define recyclable and non-recyclable categories | |
recyclable_labels = [ | |
"cardboard", "glass", "metal", "paper", "plastic", "can", "carton" | |
] | |
non_recyclable_labels = [ | |
"food waste", "trash", "garbage", "organic" | |
] | |
# Get model class label mapping | |
id2label = model.config.id2label | |
def classify_frame(frame): | |
if frame is None: | |
return "No frame detected" | |
img = Image.fromarray(frame) | |
inputs = processor(images=img, return_tensors="pt") | |
with torch.no_grad(): | |
logits = model(**inputs).logits | |
probs = torch.nn.functional.softmax(logits, dim=1).squeeze().tolist() | |
pred_idx = max(range(len(probs)), key=lambda i: probs[i]) | |
pred_label = id2label[pred_idx].lower() | |
if any(word in pred_label for word in recyclable_labels): | |
return f"♻️ Recyclable ({probs[pred_idx]*100:.1f}%)" | |
else: | |
return f"🗑️ Non-Recyclable ({probs[pred_idx]*100:.1f}%)" | |
# Gradio Interface | |
gr.Interface( | |
fn=classify_frame, | |
inputs=gr.Image(source="webcam", streaming=True, label="Live Waste Feed"), | |
outputs=gr.Text(label="Prediction"), | |
live=True, | |
title="Live Waste Classification", | |
description="Classifies live webcam input into Recyclable or Non-Recyclable using 11-class model." | |
).launch() | |