Skip to content

Temporal Convolutional Neural Network for the Classification of Satellite Image Time Series

License

Notifications You must be signed in to change notification settings

KBodolai/temporalCNN

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Temporal Convolutional Neural Network

Training temporal Convolution Neural Netoworks (CNNs) on satelitte image time series.
This code is supporting by a paper published in Remote Sensing:

@article{Pelletier2019Temporal,
  title={Temporal convolutional neural network for the classification of satellite image time series},
  author={Pelletier, Charlotte and Webb, Geoffrey I and Petitjean, Fran{\c{c}}ois},
  journal={Remote Sensing},
  volume={11},
  number={5},
  pages={523},
  year={2019},
  publisher={Multidisciplinary Digital Publishing Institute},
  note={https://www.mdpi.com/2072-4292/11/5/523}
}

Prerequisites

This code relies on Pyhton 3.6 (and should work on Python 2.7) and Keras with Tensorflow backend.

Examples

Running the models

  • main architecture: python run_main_archi.py
  • other experiments described in the related paper:
python run_archi.py --sits_path ./ --res_path path/to/results --noarchi 0

The architecture (run_main_archi.py) will run by training the network on example/train_dataset.csv file and by testing it on example/test_dataset.csv file.
Please note that both train_dataset.csv and test_dataset.csv files are a subsample of the data used in the paper: original data cannot be distributed.

Thoses files have no header, and contain one observation per row having the following format: [class,polygonID,date1.NIR,date1.R,date1.G,date2.NIR,...,date149.G], where class corresponds to the class label and polygonID to a unique polygon identifier for each plot of land.

Changing network parameters

  • Number of channels in the data: n_channels = 3 (run_archi.py, L21).
    It will require to change functions contained in readingsits.py.
  • Validation rate: val_rate = 0.05 (run_archi.py, L22).
  • Network hyperparameters are mainly defined in architecture_features.py file.

Getting predictions for a csv file or a tiff image

python write_output.py --model_path path/to/model --test_file path/to/pred.csv --result_file path/to/results/result.csv --proba

test_file is either a csv file or a tiff image. If the test_file is a tiff file and --proba activated, two tiff images are created: 1) a land cover map, and 2) a tiff image composed of n_classes bands that contains the proabbility outputed by the Softmax layer for each class. The code has been designed to work on small tiff file. Predictions on a big tiff file would require to set up carefully size_areaX and size_areaY variables (L86-87 in write_output.py).

Please note that the pred.csv file should have the same format than example/train_dataset.csv, including the class field that could be set to -1.

Maps

The produced map for TempCNNs and RFs are available in the map folder.

Contributors

About

Temporal Convolutional Neural Network for the Classification of Satellite Image Time Series

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.6%
  • QML 1.4%