Satellite data is for everyone: insights into modern remote sensing research with open data and Python
Video of the talk: https://www.youtube.com/watch?v=tKRoMcBeWjQ
Outline:
- Scripts you will find here
- Requirements (what we used):
- Setup Environment
- How to get Sentinel-2 data
- Datasets
01_split_data_to_train_and_validation.py
: split complete dataset into train and validation02_train_rgb_finetuning.py
: train VGG16 or DenseNet201 using RGB data with pretrained weights on ImageNet03_train_rgb_from_scratch.py
: train VGG16 or DenseNet201 from scratch using RGB data04_train_ms_finetuning.py
: train VGG16 or DenseNet201 using multisprectral data with pretrained weights on ImageNet04_train_ms_finetuning_alternative.py
: an alternative way to train VGG16 or DenseNet201 using multisprectral data with pretrained weights on ImageNet05_train_ms_from_scratch.py
: train VGG16 or DenseNet201 from scratch using multisprectral data06_classify_image.py
: a simple implementation to classify images with trained modelsimage_functions.py
: functions for image normalization and a simple generator for training data augmentationstatistics.py
: a simple implementation to calculate mormalization parameters (i.e. mean and std of training data)
Addtionally you will find the following notebooks:
Image_functions.ipynb
: notebook ofimage_functions.py
Train_from_Scratch.ipynb
: notebook of05_train_ms_from_scratch.py
Transfer_learning.ipynb
: notebook of02_train_rgb_finetuning.py
- python 3.6.6
- tensorflow-gpu (1.11) with Cuda Toolkit 9.0
- keras (2.2.4)
- scikit-image (0.14.1)
- gdal (2.2.4) for
06_classify_image.py
Append conda-forge to your Anaconda channels:
conda config --append channels conda-forge
Create new environment:
conda create -n pycon scikit-image gdal tqdm
conda activate pycon
pip install tensorflow-gpu
pip install keras
(or use tensorflow version of keras, i.e. from tensorflow import keras
)
See also:
- Keras: https://keras.io/
- Register at Copernicus Open Access Hub or EarthExplorer
- Find your region
- Choose tile(s) (→ area) and date
- Less tiles makes things easier
- Less clouds in the image are better
- Consider multiple dates for classes like “annual crop”
- Download L1C data
- Decide of you want to apply L2A atmospheric corrections
- Your CNN might be able to do this by itself
- If you want to correct, use Sen2Cor
- Have fun with the data
This talk:
- EuroSAT Data (Sentinel-2, Link)
Platforms for datasets:
- HyperLabelMe: a Web Platform for Benchmarking Remote Sensing Image Classifiers (Link)
- GRSS Data and Algorithm Standard Evaluation (DASE) website (Link)
Datasets:
- ISPRS 2D labeling challenge (Link)
- UC Merced Land Use Dataset (Link)
- AID: A Benchmark Dataset for Performance Evaluation of Aerial Scene Classification (Link)
- NWPU-RESISC45 (RGB, Link)
- Zurich Summer Dataset (RGB, Link)
- Note: Many German state authorities offer free geodata (high resolution images, land use/cover vector data, ...) over their geoportals. You can find an overview of all geoportals here (geoportals)
Image Segmentation Resources:
- Image segmentation with Keras including pretrained weights (Keras-FCN)
- Great link collection of image segmantation networks and datasets (Link)
- Free land use vector data of NRW (BasisDLM or openNRW)
Other:
- DeepHyperX - Deep learning for Hyperspectral imagery: https://gitlab.inria.fr/naudeber/DeepHyperX/