naamalia23's picture
Updatee
bd87265 verified
---
license: apache-2.0
datasets:
- HuggingFaceFW/fineweb-edu
language:
- en
metrics:
- accuracy
library_name: flair
pipeline_tag: image-classification
tags:
- art
- code
---
# Model Card for Custom CNN Model for Garbage Classification
This model card provides information about a custom Convolutional Neural Network (CNN) designed for classifying images of garbage items into predefined categories.
## Model Details
### Model Description
The CNN architecture (CNNModel) consists of:
- Four convolutional layers with batch normalization, ReLU activation, max pooling, and dropout for feature extraction.
- Two fully connected layers for classification.
The model is trained using the Adam optimizer with cross-entropy loss and a ReduceLROnPlateau scheduler.
### Model Source
- **Repository:** [https://www.kaggle.com/datasets/asdasdasasdas/garbage-classification]
- **License:** Apache 2.0
## Uses
### Direct Use
This model can be used to classify images of garbage items into specific categories.
### Downstream Use
Fine-tuning the model on a specific garbage classification dataset or integrating it into an application for waste management.
### Out-of-Scope Use
This model is not suitable for general image classification tasks outside of garbage classification.
## Bias, Risks, and Limitations
The model's performance may be affected by biases in the training data, such as underrepresentation of certain garbage types.
### Recommendations
Users should be aware of the model's limitations and consider domain-specific data augmentation to improve performance.
## How to Get Started with the Model
### Example Usage
```python
import torch
from torchvision import transforms
from PIL import Image
# Define your CNN model
class CNNModel(nn.Module):
def __init__(self, num_classes):
# Define layers as per your CNNModel definition
def forward(self, x):
# Define forward pass as per your CNNModel forward method
# Set device to GPU if available
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# Load the model
model = CNNModel(num_classes=num_classes).to(device)
# Load the best trained weights
model.load_state_dict(torch.load('best_model.pth'))
model.eval()
# Preprocess an image
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
img_path = 'path_to_your_image.jpg' # Replace with your image path
img = Image.open(img_path)
input_tensor = transform(img)
input_batch = input_tensor.unsqueeze(0)
# Use the model for prediction
with torch.no_grad():
output = model(input_batch)
# Get the predicted class
_, predicted = torch.max(output, 1)
predicted_class = train_dataset.classes[predicted.item()]
print(f'Predicted class: {predicted_class}')