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