Spaces:
Runtime error
Runtime error
A newer version of the Gradio SDK is available: 6.26.0
metadata
title: Waste Classify
emoji: 📈
colorFrom: green
colorTo: red
sdk: gradio
sdk_version: 6.19.0
python_version: '3.13'
app_file: app.py
pinned: false
license: apache-2.0
Waste Classification – Organic vs Recyclable (VGG16)
This repository contains two Keras/TensorFlow models for classifying images of waste into Organic (O) and Recyclable (R) categories. Both models are based on a pre‑trained VGG16 backbone, but they differ in the training approach:
O_R_tlearn_vgg16_final.keras– Feature‑extraction model: the VGG16 base is frozen and only the newly added dense layers are trained.O_R_tlearn_fine_tune_vgg16_final.keras– Fine‑tuned model: after feature extraction, the last convolutional block of VGG16 is unfrozen and the whole network is trained further, yielding slightly better performance.
Inference is performed using the fine‑tuned model (...fine_tune...), as it achieves the highest accuracy on the test set.
Model Performance
| Model | Test Accuracy |
|---|---|
| Feature Extraction | 80% |
| Fine‑tuned (recommended) | 81% |
Files
O_R_tlearn_vgg16_final.keras– feature‑extraction modelO_R_tlearn_fine_tune_vgg16_final.keras– fine‑tuned model (used for predictions)
How to Use
1. Load the Fine‑Tuned Model
import tensorflow as tf
import numpy as np
from tensorflow.keras.preprocessing.image import load_img, img_to_array
model = tf.keras.models.load_model("O_R_tlearn_fine_tune_vgg16_final.keras")
2. Preprocess an Image
IMG_SIZE = (150, 150)
def preprocess_image(image_path):
img = load_img(image_path, target_size=IMG_SIZE)
img_array = img_to_array(img)
img_array = img_array / 255.0
return np.expand_dims(img_array, axis=0)
3. Make a Prediction
image_path = "path/to/your/waste_image.jpg"
input_data = preprocess_image(image_path)
prediction = model.predict(input_data)
# Output class
if prediction[0][0] < 0.5:
print("Predicted: Organic (O)")
else:
print("Predicted: Recyclable (R)")
Note: The model outputs a single sigmoid value. Values below 0.5 are classified as Organic, above as Recyclable.
Training Details
- Base model: VGG16 (weights =
imagenet) - Input size: 150×150 pixels
- Optimizer: RMSprop with learning rate decay
- Loss: binary cross‑entropy
- Early stopping and model checkpointing were used to prevent overfitting
The dataset was split into training (80%) and validation (20%). Data augmentation (shifts, flips) was applied during training.
Citation
If you use this model, please cite this repository.
License
This model is released under the MIT License.