|
--- |
|
datasets: |
|
- rootstrap-org/waste-classifier |
|
library_name: fastai |
|
tags: |
|
- classification |
|
- waste |
|
- fastai |
|
- resnet |
|
license: mit |
|
--- |
|
|
|
--- |
|
|
|
### Model Description |
|
A machine learning model for waste classification |
|
|
|
- **Developed by:** rootstrap |
|
- **Model type:** classifier |
|
- **License:** mit |
|
|
|
## Waste Classifier Model |
|
The aim is to build a model for waste classification that identifies among the different classes: |
|
|
|
- cardboard |
|
- compost |
|
- glass |
|
- metal |
|
- paper |
|
- plastic |
|
- trash |
|
|
|
This machine learning model will help people to improve their decision when classifying trash |
|
|
|
|
|
The model was built using **Fastai** is a deep learning library which provides high-level components that can quickly and easily provide state-of-the-art results in standard deep learning domains. |
|
|
|
It has two main design goals: |
|
|
|
To be approachable and rapidly productive |
|
To be also configurable. |
|
|
|
### Model Sources |
|
|
|
- **Repository:** [https://github.com/rootstrap/fastai-waste-classifier](https://github.com/rootstrap/fastai-waste-classifier) |
|
|
|
## Uses |
|
|
|
At Rootstrap we classify waste. We found that people were struggled to classify correctly, |
|
and then we end up not recycling most of the generated waste at the office, since if there were items in the wrong basket, |
|
all the basket should not be classified. |
|
Because of this reason, we created an app to help people at our company to classify waste. |
|
|
|
### Direct Use |
|
|
|
```bash |
|
model = load_learner("result-resnet50.pkl") |
|
model.predict() |
|
``` |
|
|
|
## Bias, Risks, and Limitations |
|
|
|
Take into account that the model has been trained firstly trained with images that mostly have white background that contains only one object. In a further training the model was trained with a more varied range of images, which improved the bias a little bit. But the model still is incapable of detecting more than one object per image. So, |
|
you won't be able to classify several objects at the same time, or pictures that have one object above another. |
|
This does not aim to replace humans to classify trash, at least for now, instead it is a tool to help them to better classify. |
|
|
|
## Training Details |
|
|
|
### Training Data |
|
The data is already splitted in train and test folders. Inside each folder contains one folder for each class. Those images were obtained using Bing searcher using the api HTTP. |
|
You can find the code used to download the images at [this](https://colab.research.google.com/drive/1JvAYFx1DIEi1MMyI-tuCfE2eHMSKisKT?usp=sharing) Google Colab. |
|
You can find the final dataset splitted into train and test [rootstrap-org/waste-classifier](https://huggingface.co/datasets/rootstrap-org/waste-classifier) in a Google Drive folder. |
|
|
|
Split into train/test |
|
You can find the code for the classifier [resnet-model.ipynb](https://github.com/rootstrap/fastai-waste-classifier/blob/main/resnet-model.ipynb) |
|
load the model [result-resnet50.pkl](https://huggingface.co/rootstrap-org/waste-classifier/blob/main/result-resnet50.pkl) |
|
|
|
The model has been trained to classify waste into 6 classes. |
|
This repository contains the dataset that we collected. |
|
The dataset used for the first training consisted of 2527 images: |
|
- 501 glass |
|
- 594 paper |
|
- 403 cardboard |
|
- 482 plastic |
|
- 410 metal |
|
- 137 trash |
|
|
|
The dataset was built joining images search on the internet using Bing plus some images taken manually, in addition to images from [Trashnet dataset](https://github.com/garythung/trashnet) |
|
If you are using the dataset, please give a citation of this repository. The dataset can be downloaded at [rootstrap-org/waste-classifier](https://huggingface.co/datasets/rootstrap-org/waste-classifier). |
|
|
|
In the second training, another set of images was collected using the [TACO dataset](http://tacodataset.org/) as a starting point, along with other datasets in the web. |
|
A selection of proper training images was made from those datasets to build the training dataset. |
|
|
|
### Training Procedure |
|
You can find the code for training at [resnet-model.ipynb](https://github.com/rootstrap/fastai-waste-classifier/blob/main/resnet-model.ipynb) |
|
Training the model by fine tuning resnet50, a convolutional neural network that has 50 layers. It is pretrained on ImageNet dataset and can classify images into 1000 object categories. |
|
The expected input size is 224x224. |
|
|
|
## Evaluation and Results |
|
After the first training, the model reached an accuracy of 0.98. |
|
However, that first model had a lot of bias and limitations. |
|
The final model trained with more images, many of them from the TACO dataset, reached an accuracy of 89%. |
|
That model still has some limitation, but it's a lot more flexible than the first one. |