Awesome
Recurrent Neural Networks for Multitemporal Crop Identification
Source code of Rußwurm & Körner (2017) at EARTHVISION 2017
When you use this code please cite
Rußwurm M., Körner M. (2017). Temporal Vegetation Modelling using Long Short-Term Memory Networks
for Crop Identification from Medium-Resolution Multi-Spectral Satellite Images. In Proceedings of the
IEEE Conference on Computer Vision and Pattern Recognition (CVPR) Workshops, 2017.
Tensorflow Graphs
The TensorFlow graphs for recurrent and convolutional networks are defined at rnn_model.py
and cnn_model.py
.
Installation
Requirements
A complete package list at requirements.txt
Please Note: Due to changes in the tf.nn.rnn_cell.MultiRNN class in Tensorflow 1.2.0 the current code is not compatible with TF version 1.2.0
Installation
# clone this repository
git clone https://github.com/TUM-LMF/fieldRNN.git
cd fieldRNN
# download body of data to execute train.py and evaluate.py (~5 GB)
sh download_data.sh
# download tf checkpoints and svm baseline to run cvprwsevaluation.ipynb (~50 GB)
sh download_models.sh
The data is hosted at mediaTUM.
Network Training
The training is performed on train data, either from the database directly. The test (also referred to as validation) data is used logged in Tensorflow event files.
$ python train.py --help
positional arguments:
layers number of layers
cells number of rnn cells, as multiple of 55
dropout dropout keep probability
fold select training/evaluation fold to use
maxepoch maximum epochs
For instance:
python train.py 4 2 0.5 0 30 --gpu 0 --model lstm --savedir save
tensorflow checkpoint and eventfiles of this call will be stored at save/lstm/4l2r50d0f
Model Evaluation
The script evaluate.py
evaluates one model based on evaluation data.
python evaluate.py models/lstm/2l4r50d9f
The latest checkpoint of one model is restored and the entire body of evaluation data is processed.
After the evaluation process eval_targets.npy
, eval_probabilities.npy
and eval_observations.npy
are stores in the save
directory.
These files are later used for calculation of accuracy metrics by cvprwsevaluation.ipynb
Support Vector Machine baseline
Support Vector Machine for baseline evaluation is based on scikit-learn framework
The script svm.py
performes the gridsearch.
The generated files svm/scores.npy
, svm/targets.npy
, svm/predicted.npy
are needed for cvprwsevaluation.ipynb
Earthvision 2017 Evaluation
The (complete, but untidy) evaluation of plots and accuracy metrics can be founds at cvprwsevaluation.ipynb
Data
download train and test datasets of the first fold and the evaluation dataset via
sh download_data.sh
data
required for train.py
and evaluate.py
The data is stored as pickle files with dimensions raster data x as [batchsize, observations, features] labels y as [batchsize, observations, features]
Models
models
required for cvprwsevaluation.ipynb
Resulting model checkpoints from the grid search can be downloaded (50 GB!) via
sh download_models.sh
naming scheme
4l5r50d5f
represents 4 layers, x5 rnn_cells, 50% dropout keep probability, and fold 5