|
|
---
|
|
|
language: en
|
|
|
license: mit
|
|
|
tags:
|
|
|
- image-classification
|
|
|
- pytorch
|
|
|
- garbage-classification
|
|
|
- waste-management
|
|
|
- environmental
|
|
|
datasets:
|
|
|
- garbage-classification-dataset
|
|
|
metrics:
|
|
|
- accuracy
|
|
|
- cross-entropy-loss
|
|
|
library_name: pytorch
|
|
|
pipeline_tag: image-classification
|
|
|
---
|
|
|
|
|
|
# Garbage Classification Model (LargeNet)
|
|
|
|
|
|
## Model Description
|
|
|
|
|
|
This is a PyTorch-based convolutional neural network trained to classify images of garbage into 7 categories:
|
|
|
- **Battery**: Used batteries and battery waste
|
|
|
- **Biological**: Organic and biodegradable waste
|
|
|
- **Cardboard**: Cardboard boxes and packaging
|
|
|
- **Glass**: Glass bottles, jars, and containers
|
|
|
- **Metal**: Metal cans, foil, and containers
|
|
|
- **Paper**: Paper waste, documents, and newspaper
|
|
|
- **Plastic**: Plastic bottles, bags, and containers
|
|
|
|
|
|
The model uses a custom CNN architecture called "LargeNet" that processes 128x128 RGB images.
|
|
|
|
|
|
## Model Architecture
|
|
|
|
|
|
```
|
|
|
LargeNet(
|
|
|
(conv1): Conv2d(3, 5, kernel_size=5)
|
|
|
(pool): MaxPool2d(kernel_size=2, stride=2)
|
|
|
(conv2): Conv2d(5, 10, kernel_size=5)
|
|
|
(fc1): Linear(in_features=8410, out_features=32)
|
|
|
(fc2): Linear(in_features=32, out_features=7)
|
|
|
)
|
|
|
```
|
|
|
|
|
|
**Architecture Details:**
|
|
|
- Input: 128x128 RGB images
|
|
|
- 2 Convolutional layers with ReLU activation
|
|
|
- MaxPooling after each convolution
|
|
|
- 2 Fully connected layers
|
|
|
- Output: 7 classes with softmax probabilities
|
|
|
|
|
|
## Training Details
|
|
|
|
|
|
**Training Hyperparameters:**
|
|
|
- Batch size: 64
|
|
|
- Learning rate: 0.01
|
|
|
- Optimizer: SGD
|
|
|
- Loss function: CrossEntropyLoss
|
|
|
- Best epoch: 61
|
|
|
- Training dataset: Garbage Classification Dataset (2100 images)
|
|
|
|
|
|
**Data Preprocessing:**
|
|
|
- Images resized to 128x128 pixels
|
|
|
- Normalized with mean=[0.5, 0.5, 0.5] and std=[0.5, 0.5, 0.5]
|
|
|
- Data split: 72% train, 18% validation, 10% test
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
### Quick Start
|
|
|
|
|
|
```python
|
|
|
from inference import GarbageClassifier
|
|
|
|
|
|
# Initialize the classifier
|
|
|
classifier = GarbageClassifier(".")
|
|
|
|
|
|
# Classify an image
|
|
|
result = classifier.predict("path/to/garbage_image.jpg")
|
|
|
|
|
|
print(f"Predicted class: {result['class']}")
|
|
|
print(f"Confidence: {result['confidence']:.2%}")
|
|
|
print(f"All probabilities: {result['all_probabilities']}")
|
|
|
```
|
|
|
|
|
|
### Manual Usage
|
|
|
|
|
|
```python
|
|
|
import torch
|
|
|
from PIL import Image
|
|
|
from torchvision import transforms
|
|
|
from model import load_model
|
|
|
|
|
|
# Load model
|
|
|
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
|
|
model = load_model("pytorch_model.bin", device)
|
|
|
|
|
|
# Prepare image
|
|
|
transform = transforms.Compose([
|
|
|
transforms.Resize((128, 128)),
|
|
|
transforms.ToTensor(),
|
|
|
transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
|
|
|
])
|
|
|
|
|
|
image = Image.open("image.jpg").convert('RGB')
|
|
|
image_tensor = transform(image).unsqueeze(0).to(device)
|
|
|
|
|
|
# Predict
|
|
|
with torch.no_grad():
|
|
|
outputs = model(image_tensor)
|
|
|
probabilities = torch.nn.functional.softmax(outputs, dim=1)
|
|
|
_, predicted = torch.max(probabilities, 1)
|
|
|
|
|
|
class_names = ["battery", "biological", "cardboard", "glass", "metal", "paper", "plastic"]
|
|
|
print(f"Predicted class: {class_names[predicted.item()]}")
|
|
|
```
|
|
|
|
|
|
## Model Performance
|
|
|
|
|
|
The model achieved competitive performance on the garbage classification task. For detailed metrics and performance analysis, please refer to the training logs and evaluation results.
|
|
|
|
|
|
## Limitations and Bias
|
|
|
|
|
|
- The model is trained on a specific garbage dataset and may not generalize well to all types of waste
|
|
|
- Performance may vary with different lighting conditions, image quality, and garbage appearances
|
|
|
- The dataset may have regional or cultural biases in garbage representation
|
|
|
- Works best with clear, well-lit images of individual garbage items
|
|
|
|
|
|
## Intended Use
|
|
|
|
|
|
This model is intended for:
|
|
|
- Educational purposes in waste management and environmental studies
|
|
|
- Prototype development for waste sorting applications
|
|
|
- Research in automated recycling systems
|
|
|
- Environmental awareness applications
|
|
|
|
|
|
**Not recommended for:**
|
|
|
- Production waste sorting systems without additional validation
|
|
|
- Critical infrastructure without human oversight
|
|
|
- Scenarios requiring 100% accuracy
|
|
|
|
|
|
## Citation
|
|
|
|
|
|
If you use this model, please cite:
|
|
|
```
|
|
|
@misc{garbage-classifier-largenet,
|
|
|
author = {Your Name},
|
|
|
title = {Garbage Classification Model},
|
|
|
year = {2026},
|
|
|
publisher = {HuggingFace},
|
|
|
url = {https://huggingface.co/your-username/garbage-classifier-largenet}
|
|
|
}
|
|
|
```
|
|
|
|
|
|
## License
|
|
|
|
|
|
MIT License
|
|
|
|
|
|
## Contact
|
|
|
|
|
|
For questions or feedback, please open an issue on the model repository.
|
|
|
|