Home

Awesome

CNN-based-Cloud-Detection-Methods

Paper: Understanding the Role of Receptive Field of Convolutional Neural Network for Cloud Detection in Landsat 8 OLI Imagery

TODO

MethodReference
TL-NetTransferring deep learning models for cloud detection between Landsat-8 and Proba-V
MUNetMulti-sensor cloud and cloud shadow segmentation with a convolutional neural network
UNetU-net: Convolutional networks for biomedical image segmentation
MF-CNNCloud detection in remote sensing images based on multiscale features-convolutional neural network
MSCFFDeep learning based cloud detection for medium and high resolution remote sensing images of different sensors
DeepLabv3+Encoder-decoder with atrous separable convolution for semantic image segmentation
UNet-1Understanding the Role of Receptive Field of Convolutional Neural Network for Cloud Detection in Landsat 8 OLI Imagery
UNet-2Understanding the Role of Receptive Field of Convolutional Neural Network for Cloud Detection in Landsat 8 OLI Imagery
UNet-3Understanding the Role of Receptive Field of Convolutional Neural Network for Cloud Detection in Landsat 8 OLI Imagery
UNet-D2Understanding the Role of Receptive Field of Convolutional Neural Network for Cloud Detection in Landsat 8 OLI Imagery
UNet-D4Understanding the Role of Receptive Field of Convolutional Neural Network for Cloud Detection in Landsat 8 OLI Imagery
UNet-S3Understanding the Role of Receptive Field of Convolutional Neural Network for Cloud Detection in Landsat 8 OLI Imagery
UNet-S2Understanding the Role of Receptive Field of Convolutional Neural Network for Cloud Detection in Landsat 8 OLI Imagery
UNet-S1Understanding the Role of Receptive Field of Convolutional Neural Network for Cloud Detection in Landsat 8 OLI Imagery
Input Band NumberBandDownload LinkPassword
8red/green/blue/NIR/SWIR1/SWIR2/cirrus/TIR1Baidu Netdisk3tre
6red/green/blue/NIR/SWIR1/SWIR2Baidu Netdiskm6nt
4red/green/blue/NIRBaidu Netdiskqy48

The trained model for the input data of 8 channels can also be downloaded from Google Drive

Introduction

This is a PyTorch(1.7.1) implementation of varied convolutional neural networks (CNNs) for cloud detection in Landsat 8 OLI imagery. Currently, we train these networks using L8 Biome dataset. The related paper aims to understand the role of receptive field of CNN for cloud detection in Landsat 8 OLI imagery and is under review.

Installation

The code was tested with Anaconda and Python 3.7.3.

  1. For PyTorch dependency, see pytorch.org for more details.

  2. For Captum dependency used for computing the effective receptive field, see captum.ai for more details.

  3. For GDAL dependency used for reading and writing raster data, use version 2.3.3.

Training

Follow steps below to train your model

  1. Configure your dataset path in config.py

    def get_config_tr(net_name):
      ...
      parser.add_argument('--train-root', type=str,
                          default='./example/train/Images',
                          help='image root of train set')
      parser.add_argument('--train-list', type=str,
                          default='./example/train/train.txt',
                          help='image list of train set')
      parser.add_argument('--val-root', type=str,
                          default='./example/val/Images',
                          help='image root of validation set')
      parser.add_argument('--val-list', type=str,
                          default='./example/val/val.txt',
                          help='image list of validation set')
    
  2. Configure the network you want to use in config.py

    def get_config_tr(net_name):
      ...
      parser.add_argument('--net', type=str, default='{}'.format(net_name),
                          choices=['DeeplabV3Plus', 'MFCNN', 'MSCFF', 'MUNet',
                                   'TLNet', 'UNet', 'UNet-3', 'UNet-2', 'UNet-1',
                                   'UNet-dilation', 'UNetS3', 'UNetS2', 'UNetS1'],
                          help='network name (default: ?)')
    

    or train.py

     def main():
       # choices=['DeeplabV3Plus', 'MFCNN', 'MSCFF', 'MUNet', 'TLNet', 'UNet', 'UNet-3', 'UNet-2', 'UNet-1', 'UNet-dilation', 'UNetS3', 'UNetS2', 'UNetS1']
       args = get_config_tr('TLNet')
    
  3. Run script

    python train.py
    

Others

  1. inference.py is used for predicting cloud detection results and output accuracies.

  2. erf.py is used for computing the effective receptive field

  3. comparator.py is used for computing the accuracies of the predicted results.

Acknowledgement