Skip to content

A rubbish detection application, based on a neural network built with keras and optimized with TensorFlow Lite API

License

Notifications You must be signed in to change notification settings

luca-ant/rubbish_detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rubbish detector

Getting started

  • Clone repository
git clone https://github.com/luca-ant/rubbish_detector.git
  • Install dependencies
sudo apt install python3-setuptools
sudo apt install python3-pip
sudo apt install python3-venv
  • Create a virtual environment and install requirements modules
cd rubbish_detector
python3 -m venv venv
source venv/bin/activate

python3 -m pip install -r requirements.txt

Download dataset

Run the script download_dataset.py to download the dataset in the correct structure.

python download_dataset.py

Configuration

Change the file config.py and uncomment the model that you prefer.

Running

  • Training: After choose the model in the config.py file, run the script train_rubbish_detector.py. You'll find training history and data in training_logs directory.
python train_rubbish_detector.py
  • Evaluate: To evaluate whole model on test images and calculate accuracy run the script evaluate_rubbish_detector.py
python evaluate_rubbish_detector.py
  • Predict: To use the classifier to predict a class for your image run the script predict_rubbish.py
python predict_rubbish.py PATH_TO_YOUR_IMAGE 

To use the webcam of your pc as input use the script camera.py and press SPACE BAR to take a photo and predict the the class.

python camera.py

Download already trained keras models

Download the zip archive containing all models and extract it in the main directory fo the repository. Use the following commands:

cd rubbish_detection
wget https://github.com/luca-ant/rubbish_detection/releases/download/models/models.zip
tar -xvf models_tflite.tgz

Training results

Keras model Accuracy
InceptionV3 94.95%
MobileNetV2 92.55%
NASNetMobile 93.62%
ResNet50 94.68%

Convert to Tensorflow Lite and optimize

To convert the model into tflite version run the script convert_keras_to_tflite.py

python convert_keras_to_tflite.py
  • Evaluate: To evaluate the non optimized tflite model run the script evaluate_rubbish_detector_lite.py
python evaluate_rubbish_detector_lite.py
  • Predict: To use the non optimized tflite model to predict a class for your image run the script predict_rubbish.py
python predict_rubbish_lite.py PATH_TO_YOUR_IMAGE 
  • Test: To test and compute accuracy of all optimized tflite models run the script test_tflite.py. You'll find the output in test_results_tflite directory.
python test_tflite.py

Download already converted and optimized tflite models

Download the tar archive containing all tflite models and extract it in the main directory fo the repository. Use the following commands:

cd rubbish_detection
wget https://github.com/luca-ant/rubbish_detection/releases/download/models_tflite/models_tflite.tgz
tar -xvf models_tflite.tgz

Optimization results

TFLite Model Accuracy
InceptionV3 94.95%
InceptionV3 float16 quantization 94.95%
InceptionV3 weights quantization 94.41%
InceptionV3 integer quantization 94.41%
MobileNetV2 92.55%
MobileNetV2 float16 quantization 92.55%
MobileNetV2 weights quantization 34.04%
MobileNetV2 integer quantization 92.02%
NASNetMobile 93.62%
NASNetMobile float16 quantization 93.62%
NASNetMobile weights quantization 92.82%
NASNetMobile integer quantization 91.76%
ResNet50 94.68%
ResNet50 float16 quantization 94.68%
ResNet50 weights quantization 95.21%
ResNet50 integer quantization 94.68%

To be continued...

TensorFlow Lite models can run also on a smartphone such as Andorid or iOS. See here for details!

About

A rubbish detection application, based on a neural network built with keras and optimized with TensorFlow Lite API

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages