|
--- |
|
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}') |