All Projects → LiheYoung → SenseEarth2020-ChangeDetection

LiheYoung / SenseEarth2020-ChangeDetection

Licence: MIT License
1st place solution to the Satellite Remote Sensing Image Change Detection Challenge hosted by SenseTime

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to SenseEarth2020-ChangeDetection

Remote-sensing-image-semantic-segmentation-tf2
The remote sensing image semantic segmentation repository based on tf.keras includes backbone networks such as resnet, densenet, mobilenet, and segmentation networks such as deeplabv3+, pspnet, panet, and refinenet.
Stars: ✭ 54 (-65.38%)
Mutual labels:  semantic-segmentation, remote-sensing-image
unet pytorch
Pytorch implementation of UNet for converting aerial satellite images into google maps kinda images.
Stars: ✭ 27 (-82.69%)
Mutual labels:  semantic-segmentation
Lyft-Perception-Challenge
The 4th place and the fastest solution of the Lyft Perception Challenge (Image semantic segmentation with PyTorch)
Stars: ✭ 69 (-55.77%)
Mutual labels:  semantic-segmentation
Segmentation-Series-Chaos
Summary and experiment includes basic segmentation, human segmentation, human or portrait matting for both image and video.
Stars: ✭ 75 (-51.92%)
Mutual labels:  semantic-segmentation
cool-papers-in-pytorch
Reimplementing cool papers in PyTorch...
Stars: ✭ 21 (-86.54%)
Mutual labels:  semantic-segmentation
amber-methodology
How to use machine learning to find interesting places on satellite maps
Stars: ✭ 46 (-70.51%)
Mutual labels:  satellite-images
recurrent-decoding-cell
[AAAI'20] Segmenting Medical MRI via Recurrent Decoding Cell (Spotlight)
Stars: ✭ 14 (-91.03%)
Mutual labels:  semantic-segmentation
Pixel-Attentional-Gating
Pixel Attentional Gating for Parsimonious Per-Pixel Labeling
Stars: ✭ 46 (-70.51%)
Mutual labels:  semantic-segmentation
DSMSCN
[MultiTemp 2019] Official Tensorflow implementation for Change Detection in Multi-temporal VHR Images Based on Deep Siamese Multi-scale Convolutional Neural Networks.
Stars: ✭ 63 (-59.62%)
Mutual labels:  change-detection
segmentation-paper-reading-notes
segmentation paper reading notes
Stars: ✭ 39 (-75%)
Mutual labels:  semantic-segmentation
hsn v1
HistoSegNet: Semantic Segmentation of Histological Tissue Type in Whole Slide Images (ICCV 2019)
Stars: ✭ 65 (-58.33%)
Mutual labels:  semantic-segmentation
mobilenet segmentation
Binary semantic segmentation with UNet based on MobileNetV2 encoder
Stars: ✭ 18 (-88.46%)
Mutual labels:  semantic-segmentation
ng-profiler
Angular Profiler for Ivy, debugging and visualization tools
Stars: ✭ 31 (-80.13%)
Mutual labels:  change-detection
FCNN-example
This is a fully convolutional neural net exercise to detect houses from aerial images.
Stars: ✭ 28 (-82.05%)
Mutual labels:  semantic-segmentation
Robust-Semantic-Segmentation
Dynamic Divide-and-Conquer Adversarial Training for Robust Semantic Segmentation (ICCV2021)
Stars: ✭ 25 (-83.97%)
Mutual labels:  semantic-segmentation
LightNet
LightNet: Light-weight Networks for Semantic Image Segmentation (Cityscapes and Mapillary Vistas Dataset)
Stars: ✭ 710 (+355.13%)
Mutual labels:  semantic-segmentation
improving segmentation with selfsupervised depth
[CVPR21] Implementation of our work "Three Ways to Improve Semantic Segmentation with Self-Supervised Depth Estimation"
Stars: ✭ 189 (+21.15%)
Mutual labels:  semantic-segmentation
satellite-Image-Semantic-Segmentation-Unet-Tensorflow-keras
Collection of different Unet Variant suchas VggUnet, ResUnet, DenseUnet, Unet. AttUnet, MobileNetUnet, NestedUNet, R2AttUNet, R2UNet, SEUnet, scSEUnet, Unet_Xception_ResNetBlock
Stars: ✭ 43 (-72.44%)
Mutual labels:  semantic-segmentation
DL Notes
DL & CV & Neural Network
Stars: ✭ 29 (-81.41%)
Mutual labels:  semantic-segmentation
CRC4Docker
Python scripts for the textbook "Image Analysis, Classification and Change Detection in Remote Sensing, Fourth Revised Edition"
Stars: ✭ 84 (-46.15%)
Mutual labels:  change-detection

SenseEarth2020 - ChangeDetection

1st place in the Satellite Remote Sensing Image Change Detection Challenge hosted by SenseTime.

Our Method

Task Description

Given two images of the same scene acquired at different times, we are required to mark the changed and unchanged areas. Moreover, as for the changed areas, we need to annotate their detailed semantic masks.

The change detection task in this competition can be decomposed into two sub-tasks:

  • binary segmentation of changed and unchanged areas.
  • semantic segmentation of changed areas.

Model

image

Pseudo Labeling

The core practice is using self-distillation strategy to assign pseudo labels to unchanged areas.

Specifically, in our experiments, predictions of five HRNet-based segmentation models are ensembled, serving as pseudo labels of unchanged areas.

The overall training process can be summarized as:

  • Training multiple large segmentation models.
  • Ensembling their predictions on unchanged areas.
  • Training a smaller model with both labeled and pseudo labeled areas.

For more details, please refer to the technical report and presentation.

Getting Started

Dataset

Description | Download [password: f3qq]

Pretrained Model

HRNet-W18 | HRNet-W40 | HRNet-W44 | HRNet-W48 | HRNet-W64

Final Trained Model

PSPNet-HRNet-W18 | PSPNet-HRNet-W40

File Organization

# store the whole dataset and pretrained backbones
mkdir -p data/dataset ; mkdir -p data/pretrained_models ;

# store the trained models
mkdir -p outdir/models ; 

# store the pseudo masks
mkdir -p outdir/masks/train/im1 ; mkdir -p outdir/masks/train/im2 ;

# store predictions of validation set and testing set
mkdir -p outdir/masks/val/im1 ; mkdir -p outdir/masks/val/im2 ;
mkdir -p outdir/masks/test/im1 ; mkdir -p outdir/masks/test/im2 ;

├── data
    ├── dataset                    # download from the link above
    │   ├── train                  # training set
    |   |   ├── im1
    |   |   └── ...
    │   └── val                    # the final testing set (without labels)
    |
    └── pretrained_models
        ├── hrnet_w18.pth
        ├── hrnet_w40.pth
        └── ...

Training

# Please refer to utils/options.py for more arguments
# If hardware supports, more backbones can be trained, such as hrnet_w44, hrnet_w48
CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py --backbone hrnet_w18 --pretrained --model pspnet --lightweight

Pseudo Labeling & Re-training

# This step is optional but important in performance improvement
# Modify the backbones, models and checkpoint paths in L20-40 in label.py manually according to your saved models
# It is better to ensemble multiple trained models for pseudo labeling

# Pseudo labeling
CUDA_VISIBLE_DEVICES=0,1,2,3 python label.py

# Re-training
CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py --backbone hrnet_w18 --pretrained --model pspnet --lightweight --use-pseudo-label

Testing

# Modify the backbones, models and checkpoint paths in L39-44 in test.py manually according to your saved models
# Or simply use our final trained models
CUDA_VISIBLE_DEVICES=0,1,2,3 python test.py
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].