Created by Olga Sutyrina, Sarah Elemili, Abduragim Shtanchaev and Artur Bille
Individual Tree Crown classification on WorldView-2 Images using Autoencoder -- Group 9 Weak learners - Final Project (Machine Learning 2020 Course)
We analyzed sparse and convolutational autoencoders (SAE, CAE) with appended "classical" classifiers (AdaBoost, CatBoost, XGB, SVC, RFC, Log. Regr.), as well two convolutional neural networks (CNN) with different structures as end-to-end classifiers. Details and explicit architectures of the considered models can found in the report.
Dependencies
Requirement:
- Python 3 with:
- Numpy
- Matplotlib
- rasterio
- fiona
- xgboost
- torch
- sklearn
To extract the pixels around a given tree, use our extractor-module.
Our code has been tested with Python 3 on GoogleColab.
Installation
To run our codes you have to install the following modules: fiona, rasterio and catboost.
Data set
Our data set consists of three parts. The first one contains the whole satellite picture with 4561 x 6559 pixels and 8 channels. The second one includes 1012 labeled trees positions. Possible labels are: 0 = 'Spruce', 1 = 'Birch', 2 = 'Fir', 3 = 'Pine'. In the third part one can find positions of 10492 unlabeled tree crown positions within the satellite picture. The provided extractor module includes a function which extracts the pixels in the surrounding of every tree crown.
To download the data set:
cd ML-project-Group9-WeakLearners/
./download_data.sh
Usage
In this project we set up four experiments. To find all needed implemenations and results of each of them, follow this structure:
- Autoencoders (AE) + 'classical' classifiers:
- Convolutional neural network (CNN):