Trash Classification CNN Model
About
This project is a convolutional neural network (CNN) model developed for the purpose of classifying different types of trash items.
The CNN model in this project utilizes the TinyVGG architecture, a compact version of the popular VGG neural network architecture. The model is trained to classify trash items into the following subcategories:
- Cardboard
- Food Organics
- Glass
- Metal
- Miscellaneous Trash
- Paper
- Plastic
- Textile Trash
- Vegetation
In total, there are 9 categories into which the trash items are classified.
For more details about the CNN architecture used in this project, you can refer to the CNN Explainer website.
Info
Only 30% of the data from the Real Trash Dataset has been used and divided into an 80%-20% split of Train and Test.
The Huggingface Repository contains 7 files found in the files and versions tab:
data_setup.py: This file contains functions for setting up the data into datasets using ImageFolder and then turning it into batches using DataLoader. It also returns the names of the classes.
model_builder.py: This file contains a class which subclasses nn.Module and replicates the TinyVGG CNN model architecture with a few modifications here and there.
engine.py: This file contains three functions:
train_step,test_step, andtrain. The previous two are used to train and test the model, respectively, and the last one integrates both to train the model.plotting.py: This file contains functions to plot metrics like loss and accuracy using
plot_metrics, and it also has a functionplot_confusion_Matrixto plot the confusion matrix.predict.py: This file can be run with
--imageand--model_patharguments to get the prediction of the model on the specified image path.utils.py: This file contains functions to save the model in a specific folder with a changeable name.
train.py: This script uses all the files except
predict.pyand can take argument flags to change hyperparameters. It can be run with the following arguments:python train.py --train_dir TRAIN_DIR --test_dir TEST_DIR --learning_rate LEARNING_RATE --batch_size BATCH_SIZE --num_epochs NUM_EPOCHSAdditionally, it is device agnostic, meaning it automatically utilizes available resources regardless of the specific device used.
Additionally, the repository contains 2 folders:
data: This stores the data and has subdirectories train and test.
models: This stores the model saved by utils.py.
samples: This has 10 pictures, you can use for testing the model using
predict.py.
Model Overview
This model is designed for image classification tasks. It requires input images of size 112x112 pixels. Containing 2 blocks with 2 convulutional layers and then a flattner with a classfier.
The architecture looks like :
TrashClassificationCNNModel(
(block_1): Sequential(
(0): Conv2d(3, 15, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU()
(2): Conv2d(15, 15, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ReLU()
(4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(block_2): Sequential(
(0): Conv2d(15, 15, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(1): ReLU()
(2): Conv2d(15, 15, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
(3): ReLU()
(4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
)
(classifier): Sequential(
(0): Flatten(start_dim=1, end_dim=-1)
(1): Linear(in_features=11760, out_features=9, bias=True)
)
)
Dataset Overview
The dataset used containes images of multiple waste items with multiple classes named RealWaste. It has 4752 samples.
- Source: Click here
- Citation: Single,Sam, Iranmanesh,Saeid, and Raad,Raad. (2023). RealWaste. UCI Machine Learning Repository. https://doi.org/10.24432/C5SS4G.
Discliamer
The model mught give inaccurate or wrong results.