sabman / CNN-Sentinel

PyCon.DE 2018 talk “Satellite data is for everyone: insights into modern remote sensing research with open data and Python”

Home Page:https://de.pycon.org/schedule/talks/satellite-data-is-for-everyone-insights-into-modern-remote-sensing-research-with-open-data-and-python/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

  • 01_split_data_to_train_and_validation.py: split complete dataset into train and validation
  • 02_train_rgb_finetuning.py: train VGG16 or DenseNet201 using RGB data with pretrained weights on ImageNet
  • 03_train_rgb_from_scratch.py: train VGG16 or DenseNet201 from scratch using RGB data
  • 04_train_ms_finetuning.py: train VGG16 or DenseNet201 using multisprectral data with pretrained weights on ImageNet
  • 04_train_ms_finetuning_alternative.py: an alternative way to train VGG16 or DenseNet201 using multisprectral data with pretrained weights on ImageNet
  • 05_train_ms_from_scratch.py: train VGG16 or DenseNet201 from scratch using multisprectral data
  • 06_classify_image.py: a simple implementation to classify images with trained models
  • image_functions.py: functions for image normalization and a simple generator for training data augmentation
  • statistics.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 of image_functions.py
  • Train_from_Scratch.ipynb: notebook of 05_train_ms_from_scratch.py
  • Transfer_learning.ipynb: notebook of 02_train_rgb_finetuning.py

Requirements (what we used):

  • 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

Setup Environment

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:

How to get Sentinel-2 data

  1. Register at Copernicus Open Access Hub or EarthExplorer
  2. Find your region
  3. 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”
  4. Download L1C data
  5. 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
  6. Have fun with the data

Resources

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:

About

PyCon.DE 2018 talk “Satellite data is for everyone: insights into modern remote sensing research with open data and Python”

https://de.pycon.org/schedule/talks/satellite-data-is-for-everyone-insights-into-modern-remote-sensing-research-with-open-data-and-python/


Languages

Language:Jupyter Notebook 99.0%Language:Python 1.0%