This repository lists resources on the topic of deep learning applied to satellite and aerial imagery. To a lesser extent classical machine learning techniques are listed, as are topics such as cloud computing and model deployment. You can follow me on Twitter and join the dedicated satellite-image-deep-learning group on LinkedIn. If this resource is useful to your work please consider sponsoring it with a donation via Github Sponsors
How to use this repository: if you know exactly what you are looking for (e.g. a dataset name) you can Control+F to search for it in the page. Otherwise refer to the table of contents below, and search within the relevant section. Material that is suitable for getting started with a topic is tagged with the 🔰 emoji, which can also be searched.
The classic cats vs dogs image classification task, which in the remote sensing domain is used to assign a label to an image, e.g. this is an image of a forest. The more complex case is applying multiple labels to an image. This approach of image level classification is not to be confused with pixel-level classification which is called semantic segmentation. Read my blog post A brief introduction to satellite image classification with neural networks
NAIP_PoolDetection -> modelled as an object recognition problem, a CNN is used to identify images as being swimming pools or something else - specifically a street, rooftop, or lawn
SSTN -> PyTorch Implementation of SSTNs for hyperspectral image classifications from the IEEE T-GRS paper "Spectral-Spatial Transformer Network for Hyperspectral Image Classification: A FAS Framework." Demonstrates a novel spectral-spatial transformer network (SSTN), which consists of spatial attention and spectral association modules, to overcome the constraints of convolution kernels
SatellitePollutionCNN -> A novel algorithm to predict air pollution levels with state-of-art accuracy using deep learning and GoogleMaps satellite images
PropertyClassification -> Classifying the type of property given Real Estate, satellite and Street view Images
remote-sense-quickstart -> classification on a number of datasets, including with attention visualization
IGARSS2020_BWMS -> Band-Wise Multi-Scale CNN Architecture for Remote Sensing Image Scene Classification with a novel CNN architecture for the feature embedding of high-dimensional RS images
hurricane_damage -> Post-hurricane structure damage assessment based on aerial imagery with CNN
openai-drivendata-challenge -> Using deep learning to classify the building material of rooftops (aerial imagery from South America)
is-it-abandoned -> Can we tell if a house is abandoned based on aerial LIDAR imagery?
BoulderAreaDetector -> CNN to classify whether a satellite image shows an area would be a good rock climbing spot or not
ISPRS_S2FL -> code for paper: Multimodal Remote Sensing Benchmark Datasets for Land Cover Classification with A Shared and Specific Feature Learning Model. S2FL is capable of decomposing multimodal RS data into modality-shared and modality-specific components, enabling the information blending of multi-modalities more effectively
ChipClassification -> code for 2019 paper: Deep learning for multi-modal classification of cloud, shadow and land cover scenes in PlanetScope and Sentinel-2 imagery
SAFF -> code for 2021 paper: Self-Attention-Based Deep Feature Fusion for Remote Sensing Scene Classification
GLNET -> code for 2021 paper: Convolutional Neural Networks Based Remote Sensing Scene Classification under Clear and Cloudy Environments
Remote-sensing-image-classification -> transfer learning using pytorch to classify remote sensing data into three classes: aircrafts, ships, none
remote_sensing_pretrained_models -> as an alternative to fine tuning on models pretrained on ImageNet, here some CNN are pretrained on the RSD46-WHU & AID datasets
OBIC-GCN -> code for 2021 paper: Object-based Classification Framework of Remote Sensing Images with Graph Convolutional Networks
aitlas-arena -> An open-source benchmark framework for evaluating state-of-the-art deep learning approaches for image classification in Earth Observation (EO)
droughtwatch -> code for 2020 paper: Satellite-based Prediction of Forage Conditions for Livestock in Northern Kenya
JSTARS_2020_DPN-HRA -> code for 2020 paper: Deep Prototypical Networks With Hybrid Residual Attention for Hyperspectral Image Classification
SIGNA -> code for 2022 paper: Semantic Interleaving Global Channel Attention for Multilabel Remote Sensing Image Classification
Segmentation will assign a class label to each pixel in an image. Single class models are often trained for road or building segmentation, with multi class for land use/crop type classification. Note that many articles which refer to 'hyperspectral land classification' are actually describing semantic segmentation. Note that cloud detection can be addressed with semantic segmentation and has its own section Cloud detection & removal. Read my blog post A brief introduction to satellite image segmentation with neural networks
DCA -> code for 2022 paper: Deep Covariance Alignment for Domain Adaptive Remote Sensing Image Segmentation
SCAttNet -> Semantic Segmentation Network with Spatial and Channel Attention Mechanism
unetseg -> A set of classes and CLI tools for training a semantic segmentation model based on the U-Net architecture, using Tensorflow and Keras. This implementation is tuned specifically for satellite imagery and other geospatial raster data
dynamic-rs-segmentation -> code for 2019 paper: Dynamic Multi-Context Segmentation of Remote Sensing Images based on Convolutional Networks
Remote-sensing-image-semantic-segmentation-tf2 -> 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
segmentation_models.pytorch -> Segmentation models with pretrained backbones, has been used in multiple winning solutions to remote sensing competitions
SSRN -> code for 2017 paper: Spectral-Spatial Residual Network for Hyperspectral Image Classification: A 3-D Deep Learning Framework
SO-DNN -> code for 2021 paper: Simplified object-based deep neural network for very high resolution remote sensing image classification
SANet -> code for 2019 paper: Scale-Aware Network for Semantic Segmentation of High-Resolution Aerial Images
BayesianUNet -> Pytorch Bayesian UNet model for segmentation and uncertainty prediction, applied to the Potsdam Dataset
RAANet -> code for 2022 paper: RAANet: A Residual ASPP with Attention Framework for Semantic Segmentation of High-Resolution Remote Sensing Images
wheelRuts_semanticSegmentation -> code for 2022 paper: Mapping wheel-ruts from timber harvesting operations using deep learning techniques in drone imagery
LWN-for-UAVRSI -> Light-Weight Semantic Segmentation Network for UAV Remote Sensing Images, applied to Vaihingen, UAVid and UDD6 datasets
hypernet -> library which implements; accurate hyperspectral image (HSI) segmentation and analysis using deep neural networks, optimization of deep neural network architectures for hyperspectral data segmentation, hyperspectral data augmentation, validation of existent and emerging HSI segmentation algorithms, simulation of multispectral data using HSI
ST-UNet -> code for 2022 paper: Swin Transformer Embedding UNet for Remote Sensing Image Semantic Segmentation
EDFT -> code for 2022 paper: Efficient Depth Fusion Transformer for Aerial Image Semantic Segmentation
WiCoNet -> code for 2022 paper: Looking Outside the Window: Wide-Context Transformer for the Semantic Segmentation of High-Resolution Remote Sensing Images
CRGNet -> code for 2022 paper: Consistency-Regularized Region-Growing Network for Semantic Segmentation of Urban Scenes with Point-Level Annotations
SA-UNet -> code for 2022 paper: Improved U-Net Remote Sensing Classification Algorithm Fusing Attention and Multiscale Features
MANet -> code for 2020 paper: Multi-Attention-Network for Semantic Segmentation of Fine Resolution Remote Sensing Images
BANet -> code for 2021 paper: Transformer Meets Convolution: A Bilateral Awareness Network for Semantic Segmentation of Very Fine Resolution Urban Scene Images
MACU-Net -> code for 2022 paper: MACU-Net for Semantic Segmentation of Fine-Resolution Remotely Sensed Images
DNAS -> code for 2022 paper: DNAS: Decoupling Neural Architecture Search for High-Resolution Remote Sensing Image Semantic Segmentation
A2-FPN -> code for 2021 paper: A2-FPN for Semantic Segmentation of Fine-Resolution Remotely Sensed Images
MAResU-Net -> code for 2020 paper: Multi-stage Attention ResU-Net for Semantic Segmentation of Fine-Resolution Remote Sensing Images
ml_segmentation -> semantic segmentation of buildings using Random Forest, Support Vector Machine (SVM) & Gradient Boosting Classifier (GBC)
RSEN -> code for 2021 paper: Robust Self-Ensembling Network for Hyperspectral Image Classification
MSNet -> code for 2022 paper: MSNet: multispectral semantic segmentation network for remote sensing images
k-textures -> code (R) for 2022 paper: K-textures, a self-supervised hard clustering deep learning algorithm for satellite image segmentation
SpectralNET -> a 2D wavelet CNN for Hyperspectral Image Classification, uses Salinas Scene dataset & Keras
laika -> The goal of this repo is to research potential sources of satellite image data and to implement various algorithms for satellite image segmentation
PEARL -> a human-in-the-loop AI tool to drastically reduce the time required to produce an accurate Land Use/Land Cover (LULC) map, blog post, uses Microsoft Planetary Computer and ML models run locally in the browser. Code for backelnd and frontend
Land Cover Classification with U-Net -> Satellite Image Multi-Class Semantic Segmentation Task with PyTorch Implementation of U-Net, uses DeepGlobe Land Cover Segmentation dataset, with code
CDL-Segmentation -> code for the 2021 paper: Deep Learning Based Land Cover and Crop Type Classification: A Comparative Study. Compares UNet, SegNet & DeepLabv3+
LoveDA -> code for the 2021 paper: A Remote Sensing Land-Cover Dataset for Domain Adaptive Semantic Segmentation
CNN_Enhanced_GCN -> code for 2021 paper: CNN-Enhanced Graph Convolutional Network With Pixel- and Superpixel-Level Feature Fusion for Hyperspectral Image Classification
SOLC -> code for 2022 paper: MCANet: A joint semantic segmentation framework of optical and SAR images for land use classification. Uses WHU-OPT-SAR-dataset
DCSA-Net -> code for 2022 paper: Dynamic Convolution Self-Attention Network for Land-Cover Classification in VHR Remote-Sensing Images
CHeGCN-CNN_enhanced_Heterogeneous_Graph -> code for 2022 paper: CNN-Enhanced Heterogeneous Graph Convolutional Network: Inferring Land Use from Land Cover with a Case Study of Park Segmentation
kenya-crop-mask -> Annual and in-season crop mapping in Kenya - LSTM classifier to classify pixels as containing crop or not, and a multi-spectral forecaster that provides a 12 month time series given a partial input. Dataset downloaded from GEE and pytorch lightning used for training 🔰
crop-type-classification -> using Sentinel 1 & 2 data with a U-Net + LSTM, more features (i.e. bands) and higher resolution produced better results (article, no code)
ResUnet-a -> Implementation of the paper "ResUNet-a: a deep learning framework for semantic segmentation of remotely sensed data" in TensorFlow
DSD_paper_2020 -> The code for the paper: Crop Type Classification based on Machine Learning with Multitemporal Sentinel-1 Data
MR-DNN -> extract rice field from Landsat 8 satellite imagery
deep_learning_forest_monitoring -> Estimate vegetation height, code for paper: Forest mapping and monitoring of the African continent using Sentinel-2 data and deep learning
Landuse_DL -> delineate landforms due to the thawing of ice-rich permafrost
canopy -> code for 2019 paper: A Convolutional Neural Network Classifier Identifies Tree Species in Mixed-Conifer Forest from Hyperspectral Imagery
RandomForest-Classification -> script is for random forest classification of remote sensing multi-band images, used in 2019 paper: Multisensor data to derive peatland vegetation communities using a fixed-wing unmanned aerial vehicle
forest_change_detection -> forest change segmentation with time-dependent models, including Siamese, UNet-LSTM, UNet-diff, UNet3D models. Code for 2021 paper: Deep Learning for Regular Change Detection in Ukrainian Forest Ecosystem With Sentinel-2
cultionet -> segmentation of cultivated land, built on PyTorch Geometric and PyTorch Lightning
sentinel-tree-cover -> code for 2020 paper: A global method to identify trees outside of closed-canopy forests with medium-resolution satellite imagery
Houston_flooding -> labeling each pixel as either flooded or not using data from Hurricane Harvey. Dataset consisted of pre and post flood images, and a ground truth floodwater mask was created using unsupervised clustering (with DBScan) of image pixels with human cluster verification/adjustment
ml4floods -> An ecosystem of data, models and code pipelines to tackle flooding with ML
floatingobjects -> code for the paper: TOWARDS DETECTING FLOATING OBJECTS ON A GLOBAL SCALE WITHLEARNED SPATIAL FEATURES USING SENTINEL 2. Uses U-Net & pytorch
AI Geospatial Wildfire Risk Prediction -> A predictive model using geospatial raster data to asses wildfire hazard potential over the contiguous United States using Unet
landslide-mapping-with-cnn -> code for 2021 paper: A new strategy to map landslides with a generalized convolutional neural network
Relict_landslides_CNN_kmeans -> code for 2022 paper: Relict landslide detection in rainforest areas using a combination of k-means clustering algorithm and Deep-Learning semantic segmentation models
HED-UNet -> a model for simultaneous semantic segmentation and edge detection, examples provided are glacier fronts and building footprints using the Inria Aerial Image Labeling dataset
glacier_mapping -> Mapping glaciers in the Hindu Kush Himalaya, Landsat 7 images, Shapefile labels of the glaciers, Unet with dropout
glacier-detect-ML -> a simple logistic regression model to identify a glacier in Landsat satellite imagery
EddyNet -> A Deep Neural Network For Pixel-Wise Classification of Oceanic Eddies
schisto-vegetation -> code for 2022 paper: Deep Learning Segmentation of Satellite Imagery Identifies Aquatic Vegetation Associated with Snail Intermediate Hosts of Schistosomiasis in Senegal, Africa
Segmentation - Roads
Extracting roads is challenging due to the occlusions caused by other objects and the complex traffic environment
awesome-deep-map -> A curated list of resources dedicated to deep learning / computer vision algorithms for mapping. The mapping problems include road network inference, building footprint extraction, etc.
road_detection_mtl -> Road Detection using a multi-task Learning technique to improve the performance of the road detection task by incorporating prior knowledge constraints, uses the SpaceNet Roads Dataset
road_connectivity -> Improved Road Connectivity by Joint Learning of Orientation and Segmentation (CVPR2019)
CoANet -> Connectivity Attention Network for Road Extraction From Satellite Imagery. The CoA module incorporates graphical information to ensure the connectivity of roads are better preserved. With paper
SGCN -> code for 2021 paper: Split Depth-Wise Separable Graph-Convolution Network for Road Extraction in Complex Environments From High-Resolution Remote-Sensing Images
ASPN -> code for 2020 paper: Road Segmentation for Remote Sensing Images using Adversarial Spatial Pyramid Networks
FCNs-for-road-extraction-keras -> Road extraction of high-resolution remote sensing images based on various semantic segmentation networks
cresi -> Road network extraction from satellite imagery, with speed and travel time estimates
road-extraction-d-linknet -> code for 2018 paper: D-LinkNet: LinkNet with Pretrained Encoder and Dilated Convolution for High Resolution Satellite Imagery Road Extraction
Sat2Graph -> code for 2020 paper: Road Graph Extraction through Graph-Tensor Encoding
Semantic Segmentation on Aerial Images using fastai uses U-Net on the Inria Aerial Image Labeling Dataset of urban settlements in Europe and the United States, and is labelled as a building and not building classes (no repo) 🔰
SpaceNetUnet -> Baseline model is U-net like, applied to SpaceNet Vegas data, using Keras
automated-building-detection -> Input: very-high-resolution (<= 0.5 m/pixel) RGB satellite images. Output: buildings in vector format (geojson), to be used in digital map products. Built on top of robosat and robosat.pink.
project_sunroof_india -> Analyzed Google Satellite images to generate a report on individual house rooftop's solar power potential, uses a range of classical computer vision techniques (e.g Canny Edge Detection) to segment the roofs
TF-SegNet -> AirNet is a segmentation network based on SegNet, but with some modifications
rgb-footprint-extract -> a Semantic Segmentation Network for Urban-Scale Building Footprint Extraction Using RGB Satellite Imagery, DeepLavV3+ module with a Dilated ResNet C42 backbone
SpaceNetExploration -> A sample project demonstrating how to extract building footprints from satellite images using a semantic segmentation model. Data from the SpaceNet Challenge
solar-farms-mapping -> An Artificial Intelligence Dataset for Solar Energy Locations in India
poultry-cafos -> This repo contains code for detecting poultry barns from high-resolution aerial imagery and an accompanying dataset of predicted barns over the United States
ssai-cnn -> This is an implementation of Volodymyr Mnih's dissertation methods on his Massachusetts road & building dataset
segmentation-enhanced-resunet -> Urban building extraction in Daejeon region using Modified Residual U-Net (Modified ResUnet) and applying post-processing
GRSL_BFE_MA -> Deep Learning-based Building Footprint Extraction with Missing Annotations using a novel loss function
FER-CNN -> Detection, Classification and Boundary Regularization of Buildings in Satellite Imagery Using Faster Edge Region Convolutional Neural Networks, with paper
building-footprint-segmentation -> pip installable library to train building footprint segmentation on satellite and aerial imagery, applied to Massachusetts Buildings Dataset and Inria Aerial Image Labeling Dataset
SemSegBuildings -> Project using fast.ai framework for semantic segmentation on Inria building segmentation dataset
FCNN-example -> overfit to a given single image to detect houses
SAT2LOD2 -> an open-source, python-based GUI-enabled software that takes the satellite images as inputs and returns LoD2 building models as outputs, with paper
SatFootprint -> building segmentation on the Spacenet 7 dataset
Building-Detection -> code for running a Raster Vision experiment to train a model to detect buildings from satellite imagery in three cities in Latin America
Multi-building-tracker -> code for paper: Multi-target building tracker for satellite images using deep learning
LGPNet-BCD -> code for 2021 paper: Building Change Detection for VHR Remote Sensing Images via Local-Global Pyramid Network and Cross-Task Transfer Learning Strategy
MTL_homoscedastic_SRB -> code for 2021 paper: A Multi-Task Deep Learning Framework for Building Footprint Segmentation
UNet_CNN -> UNet model to segment building coverage in Boston using Remote sensing data, uses keras
FDANet -> code for 2021 paper: Full-Level Domain Adaptation for Building Extraction in Very-High-Resolution Optical Remote-Sensing Images
CBRNet -> code for 2022 paper: A Coarse-to-fine Boundary Refinement Network for Building Extraction from Remote Sensing Imagery
ASLNet -> code for 2021 paper: Adversarial Shape Learning for Building Extraction in VHR Remote Sensing Images
BRRNet -> implementation of Modified U-Net from 2020 paper: BRRNet: A Fully Convolutional Neural Network for Automatic Building Extraction From High-Resolution Remote Sensing Images
Multi-Scale-Filtering-Building-Index -> Python implementation of building extraction index proposed in 2019 paper: A Multi - Scale Filtering Building Index for Building Extraction in Very High - Resolution Satellite Imagery
MAPNet -> code for 2020 paper: Multi Attending Path Neural Network for Building Footprint Extraction from Remote Sensed Imagery
dual-hrnet -> localizing buildings and classifying their damage level
ESFNet -> code for 2019 paper: Efficient Network for Building Extraction from High-Resolution Aerial Images
rooftop-detection-python -> Detect Rooftops from low resolution satellite images and calculate area for cultivation and solar panel installment using classical computer vision techniques
keras_segmentation_models -> code for 2022 paper: Using Open Vector-Based Spatial Data to Create Semantic Datasets for Building Segmentation for Raster Data
CVCMFFNet -> code for 2021 paper: Complex-Valued Convolutional and Multifeature Fusion Network for Building Semantic Segmentation of InSAR Images
STEB-UNet -> code for 2022 paper: A Swin Transformer-Based Encoding Booster Integrated in U-Shaped Network for Building Extraction
dfc2020_baseline -> Baseline solution for the IEEE GRSS Data Fusion Contest 2020. Predict land cover labels from Sentinel-1 and Sentinel-2 imagery. Code for 2020 paper: Weakly Supervised Semantic Segmentation of Satellite Images for Land Cover Mapping
UNICEF-Giga_Sudan -> Detecting school lots from satellite imagery in Southern Sudan using a UNET segmentation model
building_footprint_extraction -> The project retrieves satellite imagery from Google and performs building footprint extraction using a U-Net.
projectRegularization -> code for 2019 paper: Regularization of building boundaries in satellite images using adversarial and regularized losses
PolyWorldPretrainedNetwork -> code for 2021 paper: Polygonal Building Extraction with Graph Neural Networks in Satellite Images
dl_image_segmentation -> code for 2022 paper: Uncertainty-Aware Interpretable Deep Learning for Slum Mapping and Monitoring. Uses SHAP
UBC-dataset -> a dataset for building detection and classification from very high-resolution satellite imagery with the focus on object-level interpretation of individual buildings
GeoSeg -> code for 2022 paper: UNetFormer: A UNet-like transformer for efficient semantic segmentation of remote sensing urban scene imagery
BESNet -> code for 2022 paper: BES-Net: Boundary Enhancing Semantic Context Network for High-Resolution Image Semantic Segmentation. Applied to Vaihingen and Potsdam datasets
CVNet -> code for 2022 paper: CVNet: Contour Vibration Network for Building Extraction
CFENet -> code for 2022 paper: A Context Feature Enhancement Network for Building Extraction from High-Resolution Remote Sensing Imagery
HiSup -> code for 2022 paper: Accurate Polygonal Mapping of Buildings in Satellite Imagery
BuildingExtraction -> code for 2021 paper: Building Extraction from Remote Sensing Images with Sparse Token Transformers
coseg_building -> code for the 2022 paper: CrossGeoNet: A Framework for Building Footprint Generation of Label-Scarce Geographical Regions
AFM_building -> code for 2021 paper: Building Footprint Generation Through Convolutional Neural Networks With Attraction Field Representation
ramp-code -> repository for the ramp (Replicable AI for MicroPlanning) project
Building-instance-segmentation -> code for 2022 paper: Multi-Modal Feature Fusion Network with Adaptive Center Point Detector for Building Instance Extraction
hyperion_solar_net -> trained classificaton & segmentation models on RGB imagery from Google Maps. Provides app for viewing predictions, and has arxiv paper and a nice webpage
3D-PV-Locator -> Large-scale detection of rooftop-mounted photovoltaic systems in 3D
PV_Pipeline -> PyTorch models and pipeline developed for "DeepSolar for Germany"
predict_pv_yield -> Using optical flow & machine learning to predict PV yield
Large-scale-solar-plant-monitoring -> code for the paper "Remote Sensing for Monitoring of Photovoltaic Power Plants in Brazil Using Deep Semantic Segmentation"
Panel-Segmentation -> Determine the presence of a solar array in the satellite image (boolean True/False), using a VGG16 classification model
Roofpedia -> an open registry of green roofs and solar roofs across the globe identified by Roofpedia through deep learning
solar-pv-global-inventory -> code from the Nature paper of Kruitwagen et al, used to produce a global inventory of utility-scale solar photvoltaic generating stations
remote-sensing-solar-pv -> A repository for sharing progress on the automated detection of solar PV arrays in sentinel-2 remote sensing imagery
solar_seg -> Solar segmentation of PV modules (sub elements of panels) using drone images and fast.ai
solar_plant_detection -> boundary extraction of Photovoltaic (PV) plants using Mask RCNN and Amir dataset
SolarDetection -> unet on satellite image from the USA and France
adopptrs -> Automatic Detection Of Photovoltaic Panels Through Remote Sensing using unet & pytorch
solar-panel-locator -> the number of solar panel pixels was only ~0.2% of the total pixels in the dataset, so solar panel data was upsampled to account for the class imbalance
Satellite_ComputerVision -> UNET to detect solar arrays from Sentinel-2 data, using Google Earth Engine and Tensorflow. Also covers parking lot detection
ood_instances_sophia -> Material for the poster "The effect of PV array instances and images backgrounds on OOD generalization"
photovoltaic-detection -> Detecting available rooftop area from satellite images to install photovoltaic panels
In instance segmentation, each individual 'instance' of a segmented area is given a unique lable. For detection of very small objects this may a good approach, but it can struggle seperating individual objects that are closely spaced.
Mask_RCNN generates bounding boxes and segmentation masks for each instance of an object in the image. It is very commonly used for instance segmentation & object detection
parking_bays_detectron2 -> Detecting parking bays with satellite imagery. Used Detectron2 and synthetic data with Unreal, superior performance to using Mask RCNN
FactSeg -> Foreground Activation Driven Small Object Semantic Segmentation in Large-Scale Remote Sensing Imagery (TGRS), also see FarSeg and FreeNet, implementations of research paper
aqua_python -> detecting aquaculture farms using Mask R-CNN
Panoptic-Generator -> This module converts GIS data into panoptic segmentation tiles
BSB-Aerial-Dataset -> an example on how to use Detectron2's Panoptic-FPN in the BSB Aerial Dataset
utae-paps -> PyTorch implementation of U-TAE and PaPs for satellite image time series panoptic segmentation
Object detection
Several different techniques can be used to count the number of objects in an image. The returned data can be an object count (regression), a bounding box around individual objects in an image (typically using Yolo or Faster R-CNN architectures), a pixel mask for each object (instance segmentation), key points for an an object (such as wing tips, nose and tail of an aircraft), or simply a classification for a sliding tile over an image. A good introduction to the challenge of performing object detection on aerial imagery is given in this paper. In summary, images are large and objects may comprise only a few pixels, easily confused with random features in background. For the same reason, object detection datasets are inherently imbalanced, since the area of background typically dominates over the area of the objects to be detected. In general object detection performs well on large objects, and gets increasingly difficult as the objects get smaller & more densely packed. Model accuracy falls off rapidly as image resolution degrades, so it is common for object detection to use very high resolution imagery, e.g. 30cm RGB. A particular characteristic of aerial images is that objects can be oriented in any direction, so using rotated bounding boxes which aligning with the object can be crucial for extracting metrics such as the length and width of an object. Note that newer models such as Yolov5 may not achieve the same performance as 'older' models like Faster RCNN or Retinanet since they are no longer pre-trained on datasets such as ImageNet, but smaller datasets such as COCO dataset.
Satellite Imagery Multiscale Rapid Detection with Windowed Networks (SIMRDWN) -> combines some of the leading object detection algorithms into a unified framework designed to detect objects both large and small in overhead imagery. Train models and test on arbitrary image sizes with YOLO (versions 2 and 3), Faster R-CNN, SSD, or R-FCN.
YOLTv4 -> YOLTv4 is designed to detect objects in aerial or satellite imagery in arbitrarily large images that far exceed the ~600×600 pixel size typically ingested by deep learning object detection frameworks. Read Announcing YOLTv4: Improved Satellite Imagery Object Detection
How to detect small objects in (very) large images -> A practical guide to using Slicing-Aided Hyper Inference (SAHI) for performing inference on the DOTAv1.0 object detection dataset using the mmdetection framework
SNIPER/AutoFocus -> an efficient multi-scale object detection training/inference algorithm
marine_debris_ML -> Marine debris detection, uses 3-meter imagery product called Planetscope with bands in the red, green, blue, and near-infrared. Uses Tensorflow Object Detection API with pre-trained resnet 101
RetinaNet-PyTorch -> RetinaNet implementation on remote sensing ship dataset (SSDD)
Detecting-Cyclone-Centers-Custom-YOLOv3 -> tropical cyclones (TCs) are intense warm-corded cyclonic vortices, developed from low-pressure systems over the tropical oceans and driven by complex air-sea interaction
Google-earth-Object-Recognition -> Code for training and evaluating on Dior Dataset (Google Earth Images) using RetinaNet and YOLOV5
HIECTOR: Hierarchical object detector at scale -> HIECTOR facilitates multiple satellite data collections of increasingly detailed spatial resolution for a cost-efficient and accurate object detection over large areas
SB-MSN -> Sampling-Balance based Multi-stage Network (SB-MSN) for aerial image object detection. Code for 2021 paper: Improving Training Instance Quality in Aerial Image Object Detection With a Sampling-Balance-Based Multistage Network
yoltv5 -> detects objects in arbitrarily large aerial or satellite images that far exceed the ~600×600 pixel size typically ingested by deep learning object detection frameworks. Uses YOLOv5 & pytorch
AIR -> A deep learning object detector framework written in Python for supporting Land Search and Rescue Missions
dior_detect -> benchmarks for object detection on DIOR dataset
When the object count, but not its shape is required, U-net can be used to treat this as an image-to-image translation problem.
centroid-unet -> Centroid-UNet is deep neural network model to detect centroids from satellite images, with paper🔰
cownter_strike -> counting cows, located with point-annotations, two models: CSRNet (a density-based method) & LCFCN (a detection-based method)
DO-U-Net -> an effective approach for when the size of an object needs to be known, as well as the number of objects in the image, initially created to segment and count Internally Displaced People (IDP) camps in Afghanistan
DrBox-v2-tensorflow -> tensorflow implementation of DrBox-v2 which is an improved detector with rotatable boxes for target detection in remote sensing images
Rotation-EfficientDet-D0 -> A PyTorch Implementation Rotation Detector based EfficientDet Detector, applied to custom rotation vehicle datasets
DODet -> Dual alignment for oriented object detection, uses DOTA dataset. With paper
GF-CSL -> code for 2022 paper: Gaussian Focal Loss: Learning Distribution Polarized Angle Prediction for Rotated Object Detection in Aerial Images
simplified_rbox_cnn -> code for 2018 paper: RBox-CNN: rotated bounding box based CNN for ship detection in remote sensing image. Uses Tensorflow object detection API
Polar-Encodings -> code for 2021 [paper](Learning Polar Encodings for Arbitrary-Oriented Ship Detection in SAR Images)
R-CenterNet -> detector for rotated-object based on CenterNet
AD-Toolbox -> Aerial Detection Toolbox based on MMDetection and MMRotate, with support for more datasets
GGHL -> code for 2022 paper: A General Gaussian Heatmap Label Assignment for Arbitrary-Oriented Object Detection
NPMMR-Det -> code for 2021 paper: A Novel Nonlocal-Aware Pyramid and Multiscale Multitask Refinement Detector for Object Detection in Remote Sensing Images
AOPG -> code for 2022 paper: Anchor-Free Oriented Proposal Generator for Object Detection
SE2-Det -> code for 2022 paper: Semantic-Edge-Supervised Single-Stage Detector for Oriented Object Detection in Remote Sensing Imagery
OrientedRepPoints -> code for 2021 paper: Oriented RepPoints for Aerial Object Detection
TS-Conv -> code for 2022 paper: Task-wise Sampling Convolutions for Arbitrary-Oriented Object Detection in Aerial Images
EESRGAN -> code for 2020 paper: Small-Object Detection in Remote Sensing Images with End-to-End Edge-Enhanced GAN and Object Detector Network. Applied to COWC & OGST datasets
FBNet -> code for 2022 paper: Feature Balance for Fine-Grained Object Classification in Aerial Images
SuperYOLO -> code for 2022 paper: SuperYOLO: Super Resolution Assisted Object Detection in Multimodal Remote Sensing Imagery
Salient object detection
Detecting the most noticeable or important object in a scene
ACCoNet -> code for 2022 paper: Adjacent Context Coordination Network for Salient Object Detection in Optical Remote Sensing Images
MCCNet -> Multi-Content Complementation Network for Salient Object Detection in Optical Remote Sensing Images
CorrNet -> Lightweight Salient Object Detection in Optical Remote Sensing Images via Feature Correlation. With paper
XBD-hurricanes -> Models for building (and building damage) detection in high-resolution (<1m) satellite and aerial imagery using a modified RetinaNet model
ship_detection -> using an interesting combination of CNN classifier, Class Activation Mapping (CAM) & UNET segmentation. Accompanying three part blog post
small-boat-detector -> Trained yolo v3 model weights and configuration file to detect small boats in satellite imagery
Satellite-Imagery-Datasets-Containing-Ships -> A list of optical and radar satellite datasets for ship detection, classification, semantic segmentation and instance segmentation tasks
Ship-Detection -> CNN approach for ship detection in the ocean using a satellite image
vesselTracker -> Project based on reduced model of Yolov5 architecture using Pytorch. Custom dataset based on SAR imagery provided by Sentinel-1 through Earth Engine API
SDGH-Net -> code for 2021 paper: SDGH-Net: Ship Detection in Optical Remote Sensing Images Based on Gaussian Heatmap Regression
LR-TSDet -> code for 2021 paper: LR-TSDet: Towards Tiny Ship Detection in Low-Resolution Remote Sensing Images
FGSCR-42 -> A public Dataset for Fine-Grained Ship Classification in Remote sensing images
ShipDetection -> Ship Detection in HR Optical Remote Sensing Images via Rotated Bounding Box, based on Faster R-CNN and ORN, uses caffe
WakeNet -> A CNN-based optical image ship wake detector, code for 2021 paper: Rethinking Automatic Ship Wake Detection: State-of-the-Art CNN-based Wake Detection via Optical Images
Object Detection in Satellite Imagery, a Low Overhead Approach -> Medium article which demonstrates how to combine Canny edge detector pre-filters with HOG feature descriptors, random forest classifiers, and sliding windows to perform ship detection
simplified_rbox_cnn -> code for 2018 paper: RBox-CNN: rotated bounding box based CNN for ship detection in remote sensing image. Uses Tensorflow object detection API
Ship-Detection-based-on-YOLOv3-and-KV260 -> entry project of the Xilinx Adaptive Computing Challenge 2021. It uses YOLOv3 for ship target detection in optical remote sensing images, and deploys DPU on the KV260 platform to achieve hardware acceleration
LEVIR-Ship -> a dataset for tiny ship detection under medium-resolution remote sensing images
Push-and-Pull-Network -> code for 2022 paper: Contrastive Learning for Fine-grained Ship Classification in Remote Sensing Images
xView3-The-First-Place-Solution - A winning solution for xView 3 challenge (Vessel detection, classification and length estimation on Sentinetl-1 images). Contains trained models, inference pipeline and training code & configs to reproduce the results.
pytorch-vedai -> object detection on the VEDAI dataset: Vehicle Detection in Aerial Imagery 🔰
Truck Detection with Sentinel-2 during COVID-19 crisis -> moving objects in Sentinel-2 data causes a specific reflectance relationship in the RGB, which looks like a rainbow, and serves as a marker for trucks. Improve accuracy by only analysing roads. Not using object detection but relevant. Also see S2TD
aircraft-detection -> experiments to test the performance of a Gaussian process (GP) classifier with various kernels on the UC Merced land use land cover (LULC) dataset
The Rareplanes guide recommends annotating airplanes in a diamond style, which has several advantages (easily reproducible, convertible to a bounding box etc) and allows extracting the aircraft length and wingspan
ergo-planes-detector -> An ergo based project that relies on a convolutional neural network to detect airplanes from satellite imagery, uses the PlanesNet dataset
pytorch-remote-sensing -> Aircraft detection using the 'Airbus Aircraft Detection' dataset and Faster-RCNN with ResNet-50 backbone using pytorch
FasterRCNN_ObjectDetection -> faster RCNN model for aircraft detection and localisation in satellite images and creating a webpage with live server for public usage
HRPlanes -> weights of YOLOv4 and Faster R-CNN networks trained with HRPlanes dataset
Counting-Trees-using-Satellite-Images -> create an inventory of incoming and outgoing trees for an annual tree inspections, uses keras & semantic segmentation
TreeDetection -> A color-based classifier to detect the trees in google image data along with tree visual localization and crown size calculations via OpenCV
PTDM -> code for 2022 paper: Pomelo Tree Detection Method Based on Attention Mechanism and Cross-Layer Feature Fusion
urban-tree-detection -> code for 2022 paper: Individual Tree Detection in Large-Scale Urban Environments using High-Resolution Multispectral Imagery. With dataset
Oil storage tank detection & oil spills
Oil is stored in tanks at many points between extraction and sale, and the volume of oil in storage is an important economic indicator.
MCAN-OilSpillDetection -> Oil Spill Detection with A Multiscale Conditional Adversarial Network under Small Data Training, with paper. A multiscale conditional adversarial network (MCAN) trained with four oil spill observation images accurately detects oil spills in new images.
From this article on sentinelhub there are three popular classical algorithms that detects thresholds in multiple bands in order to identify clouds. In the same article they propose using semantic segmentation combined with a CNN for a cloud classifier (excellent review paper here), but state that this requires too much compute resources.
This article compares a number of ML algorithms, random forests, stochastic gradient descent, support vector machines, Bayesian method.
dsen2-cr -> cloud removal in Sentinel-2 imagery using a deep residual neural network and SAR-optical data fusion, contains the model code, written in Python/Keras, as well as links to pre-trained checkpoints and the SEN12MS-CR dataset
pyatsa -> Python package implementing the Automated Time-Series Analysis method for masking clouds in satellite imagery developed by Zhu and Helmer 2018
decloud -> Decloud enables the training of various deep nets to remove clouds in optical image, using e.g. Sentinel 1 & 2
cloudless -> Deep learning pipeline for orbital satellite data for detecting clouds
Deep-Gapfill -> Official implementation of Optical image gap filling using deep convolutional autoencoder from optical and radar images
cloudFCN -> Python 3 package for Fully Convolutional Network development, specifically for cloud masking
Fmask -> Fmask (Function of mask) is used for automated clouds, cloud shadows, snow, and water masking for Landsats 4-9 and Sentinel 2 images, in Matlab. Also see PyFmask
ukis-csmask -> package to masks clouds in Sentinel-2, Landsat-8, Landsat-7 and Landsat-5 images
OpenSICDR -> long list of satellite image cloud detection resources
RS-Net -> code for the paper: A cloud detection algorithm for satellite imagery based on deep learning
Clouds-Segmentation-Project -> treats as a 3 class problem; Open clouds, Closed clouds and no clouds, uses pytorch on a dataset that consists of IR & Visual Grayscale images
STGAN -> PyTorch Implementation of STGAN for Cloud Removal in Satellite Images, with paper
mcgan-cvprw2017-pytorch -> code for 2017 paper: Filmy Cloud Removal on Satellite Imagery with Multispectral Conditional Generative Adversarial Nets
Luojia1-Cloud-Detection -> Luojia-1 Satellite Visible Band Nighttime Imagery Cloud Detection
SEN12MS-CR-TS -> code for 2022 paper: A Remote Sensing Data Set for Multi-modal Multi-temporal Cloud Removal
ES-CCGAN -> This is a dehazed method for remote sensing image, which based on CycleGAN
Cloud_Classification_DL -> Classifying cloud organization patterns from satellite images using Deep Learning techniques (Mask R-CNN)
CNN-based-Cloud-Detection-Methods -> Understanding the Role of Receptive Field of Convolutional Neural Network for Cloud Detection in Landsat 8 OLI Imagery
CloudMattingGAN -> code for 2019 paper: Generative Adversarial Training for Weakly Supervised Cloud Matting
atrain-cloudseg -> Official repository for the A-Train Cloud Segmentation Dataset
CDnet -> code for 2019 paper: CNN-Based Cloud Detection for Remote Sensing Imager
GLNET -> code for 2021 paper: Convolutional Neural Networks Based Remote Sensing Scene Classification under Clear and Cloudy Environments
CDnetV2 -> code for 2021 paper: CNN-Based Cloud Detection for Remote Sensing Imagery With Cloud-Snow Coexistence
grouped-features-alignment -> code for 2021 paper: Unsupervised Domain Adaptation for Cloud Detection Based on Grouped Features Alignment and Entropy Minimization
AISD -> code (Matlab) and dataset for 2020 paper: Deeply supervised convolutional neural network for shadow detection based on a novel aerial shadow imagery dataset
CloudGAN -> Detecting and Removing Clouds from RGB-images using Image Inpainting
SEnSeI -> A python 3 package for developing sensor independent deep learning models for cloud masking in satellite imagery
Change detection
Generally speaking, change detection methods are applied to a pair of images to generate a mask of change, e.g. of buildings damaged in a disaster. Note, clouds & shadows change often too..!
STANet -> official implementation of the spatial-temporal attention neural network (STANet) for remote sensing image change detection
BIT_CD -> Official Pytorch Implementation of Remote Sensing Image Change Detection with Transformers
IAug_CDNet -> Official Pytorch Implementation of Adversarial Instance Augmentation for Building Change Detection in Remote Sensing Images
dpm-rnn-public -> Code implementing a damage mapping method combining satellite data with deep learning
SenseEarth2020-ChangeDetection -> 1st place solution to the Satellite Image Change Detection Challenge hosted by SenseTime; predictions of five HRNet-based segmentation models are ensembled, serving as pseudo labels of unchanged areas
KPCAMNet -> Python implementation of the paper Unsupervised Change Detection in Multi-temporal VHR Images Based on Deep Kernel PCA Convolutional Mapping Network
CDLab -> benchmarking deep learning-based change detection methods.
Siam-NestedUNet -> The pytorch implementation for "SNUNet-CD: A Densely Connected Siamese Network for Change Detection of VHR Images"
SUNet-change_detection -> Implementation of paper SUNet: Change Detection for Heterogeneous Remote Sensing Images from Satellite and UAV Using a Dual-Channel Fully Convolution Network
planet-movement -> Find and process Planet image pairs to highlight object movement
UNet-based-Unsupervised-Change-Detection -> A convolutional neural network (CNN) and semantic segmentation is implemented to detect the changes between the images, as well as classify the changes into the correct semantic class, with arxiv paper
temporal-cluster-matching -> detecting change in structure footprints from time series of remotely sensed imagery
autoRIFT -> fast and intelligent algorithm for finding the pixel displacement between two images
DSAMNet -> Code for “A Deeply Supervised Attention Metric-Based Network and an Open Aerial Image Dataset for Remote Sensing Change Detection”. The main types of changes in the dataset include: (a) newly built urban buildings; (b) suburban dilation; (c) groundwork before construction; (d) change of vegetation; (e) road expansion; (f) sea construction.
SRCDNet -> The pytorch implementation for "Super-resolution-based Change Detection Network with Stacked Attention Module for Images with Different Resolutions ". SRCDNet is designed to learn and predict change maps from bi-temporal images with different resolutions
Land-Cover-Analysis -> Land Cover Change Detection using Satellite Image Segmentation
ChangeFormer -> A Transformer-Based Siamese Network for Change Detection. Uses transformer architecture to address the limitations of CNN in handling multi-scale long-range details. Demonstrates that ChangeFormer captures much finer details compared to the other SOTA methods, achieving better performance on benchmark datasets
ChangeDetectionProject -> Trying out Active Learning in with deep CNNs for Change detection on remote sensing data
DSFANet -> Unsupervised Deep Slow Feature Analysis for Change Detection in Multi-Temporal Remote Sensing Images
siamese-change-detection -> Targeted synthesis of multi-temporal remote sensing images for change detection using siamese neural networks
Bi-SRNet -> code for 2022 paper: Bi-Temporal Semantic Reasoning for the Semantic Change Detection in HR Remote Sensing Images
SiROC -> Implementation of the paper Spatial Context Awareness for Unsupervised Change Detection in Optical Satellite Images. Applied to Sentinel-2 and high-resolution Planetscope imagery on four datasets
DSMSCN -> Tensorflow implementation for Change Detection in Multi-temporal VHR Images Based on Deep Siamese Multi-scale Convolutional Neural Networks
RaVAEn -> a lightweight, unsupervised approach for change detection in satellite data based on Variational Auto-Encoders (VAEs) with the specific purpose of on-board deployment. It flags changed areas to prioritise for downlink, shortening the response time
SemiCD -> Code for paper: Revisiting Consistency Regularization for Semi-supervised Change Detection in Remote Sensing Images. Achieves the performance of supervised CD even with access to as little as 10% of the annotated training data
FCCDN_pytorch -> code for paper: FCCDN: Feature Constraint Network for VHR Image Change Detection. Uses the LEVIR-CD building change detection dataset
INLPG_Python -> code for paper: Structure Consistency based Graph for Unsupervised Change Detection with Homogeneous and Heterogeneous Remote Sensing Images
NSPG_Python -> code for paper: Nonlocal patch similarity based heterogeneous remote sensing change detection
LGPNet-BCD -> code for 2021 paper: Building Change Detection for VHR Remote Sensing Images via Local-Global Pyramid Network and Cross-Task Transfer Learning Strategy
DS_UNet -> code for 2021 paper: Sentinel-1 and Sentinel-2 Data Fusion for Urban Change Detection using a Dual Stream U-Net, uses Onera Satellite Change Detection dataset
SiameseSSL -> code for 2022 paper: Urban change detection with a Dual-Task Siamese network and semi-supervised learning. Uses SpaceNet 7 dataset
CD-SOTA-methods -> Remote sensing change detection: State-of-the-art methods and available datasets
multimodalCD_ISPRS21 -> code for 2021 paper: Fusing Multi-modal Data for Supervised Change Detection
Unsupervised-CD-in-SITS-using-DL-and-Graphs -> code for article: Unsupervised Change Detection Analysis in Satellite Image Time Series using Deep Learning Combined with Graph-Based Approaches
LSNet -> code for 2022 paper: Extremely Light-Weight Siamese Network For Change Detection in Remote Sensing Image
Semantic-Change-Detection -> code for 2021 paper: SCDNET: A novel convolutional network for semantic change detection in high resolution optical remote sensing imagery
ERCNN-DRS_urban_change_monitoring -> code for 2021 paper: Neural Network-Based Urban Change Monitoring with Deep-Temporal Multispectral and SAR Remote Sensing Data
EGRCNN -> code for 2021 paper: Edge-guided Recurrent Convolutional Neural Network for Multi-temporal Remote Sensing Image Building Change Detection
dcvaVHROptical -> Deep Change Vector Analysis (DCVA) change detection. Code for 2019 paper: Unsupervised Deep Change Vector Analysis for Multiple-Change Detection in VHR Images
hyperdimensionalCD -> code for 2021 paper: Change Detection in Hyperdimensional Images Using Untrained Models
DSFANet -> code for 2018 paper: Unsupervised Deep Slow Feature Analysis for Change Detection in Multi-Temporal Remote Sensing Images
FCD-GAN-pytorch -> Fully Convolutional Change Detection Framework with Generative Adversarial Network (FCD-GAN) is a framework for change detection in multi-temporal remote sensing images
DARNet-CD -> code for 2022 paper: A Densely Attentive Refinement Network for Change Detection Based on Very-High-Resolution Bitemporal Remote Sensing Images
xView2_Vulcan -> Damage assessment using pre and post orthoimagery. Modified + productionized model based off the first-place model from the xView2 challenge.
ESCNet -> code for 2021 paper: An End-to-End Superpixel-Enhanced Change Detection Network for Very-High-Resolution Remote Sensing Images
ForestCoverChange -> Detecting and Predicting Forest Cover Change in Pakistani Areas Using Remote Sensing Imagery
deforestation-detection -> code for 2020 paper: DEEP LEARNING FOR HIGH-FREQUENCY CHANGE DETECTION IN UKRAINIAN FOREST ECOSYSTEM WITH SENTINEL-2
forest_change_detection -> forest change segmentation with time-dependent models, including Siamese, UNet-LSTM, UNet-diff, UNet3D models. Code for 2021 paper: Deep Learning for Regular Change Detection in Ukrainian Forest Ecosystem With Sentinel-2
austin-ml-change-detection-demo -> A change detection demo for the Austin area using a pre-trained PyTorch model scaled with Dask on Planet imagery
dfc2021-msd-baseline -> A baseline for the "Multitemporal Semantic Change Detection" track of the 2021 IEEE GRSS Data Fusion Competition
CorrFusionNet -> code for 2020 paper: Multi-Temporal Scene Classification and Scene Change Detection with Correlation based Fusion
ChangeDetectionPCAKmeans -> MATLAB implementation for Unsupervised Change Detection in Satellite Images Using Principal Component Analysis and k-Means Clustering.
IRCNN -> code for 2022 paper: IRCNN: An Irregular-Time-Distanced Recurrent Convolutional Neural Network for Change Detection in Satellite Time Series
UTRNet -> An Unsupervised Time-Distance-Guided Convolutional Recurrent Network for Change Detection in Irregularly Collected Images
open-cd -> an open source change detection toolbox based on a series of open source general vision task tools
Tiny_model_4_CD -> code for 2022 paper: TINYCD: A (Not So) Deep Learning Model For Change Detection. Uses LEVIR-CD & WHU-CD datasets
FHD -> code for 2022 paper: Feature Hierarchical Differentiation for Remote Sensing Image Change Detection
building-expansion -> code for 2021 paper: Enhancing Environmental Enforcement with Near Real-Time Monitoring: Likelihood-Based Detection of Structural Expansion of Intensive Livestock Farms
SaDL_CD -> code for 2022 paper: Semantic-aware Dense Representation Learning for Remote Sensing Image Change Detection
EGCTNet_pytorch -> code for 2022 paper: Building Change Detection Based on an Edge-Guided Convolutional Neural Network Combined with a Transformer
S2-cGAN -> code for 2020 paper: S2-cGAN: Self-Supervised Adversarial Representation Learning for Binary Change Detection in Multispectral Images
Time series
More general than change detection, time series observations can be used for applications including improving the accuracy of crop classification, or predicting future patterns & events. Crop yield is very typically application and has its own section below
CropDetectionDL -> using GRU-net, First place solution for Crop Detection from Satellite Imagery competition organized by CV4A workshop at ICLR 2020
temporalCNN -> Temporal Convolutional Neural Network for the Classification of Satellite Image Time Series
pytorch-psetae -> PyTorch implementation of the model presented in Satellite Image Time Series Classification with Pixel-Set Encoders and Temporal Self-Attention
satflow -> optical flow models for predicting future satellite images from current and past ones
esa-superresolution-forecasting -> Forecasting air pollution using ESA Sentinel-5p data, and an encoder-decoder convolutional LSTM neural network architecture, implemented in Pytorch
Radiant-Earth-Spot-the-Crop-Challenge -> The main objective of this challenge was to use time-series of Sentinel-2 multi-spectral data to classify crops in the Western Cape of South Africa. The challenge was to build a machine learning model to predict crop type classes for the test dataset
lightweight-temporal-attention-pytorch -> A PyTorch implementation of the Light Temporal Attention Encoder (L-TAE) for satellite image time series. classification
Crop-Classification -> crop classification using multi temporal satellite images
dtwSat -> Time-Weighted Dynamic Time Warping for satellite image time series analysis
DeepCropMapping -> A multi-temporal deep learning approach with improved spatial generalizability for dynamic corn and soybean mapping, uses LSTM
CropMappingInterpretation -> An interpretation pipeline towards understanding multi-temporal deep learning approaches for crop mapping
MTLCC -> code for paper: Multitemporal Land Cover Classification Network. A recurrent neural network approach to encode multi-temporal data for land cover classification
timematch -> code for 2022 paper: A method to perform unsupervised cross-region adaptation of crop classifiers trained with satellite image time series. We also introduce an open-access dataset for cross-region adaptation with SITS from four different regions in Europe
PWWB -> Code for the 2021 paper: Real-Time Spatiotemporal Air Pollution Prediction with Deep Convolutional LSTM through Satellite Image Analysis
spaceweather -> predicting geomagnetic storms from satellite measurements of the solar wind and solar corona, uses LSTMs
Forest_wildfire_spreading_convLSTM -> Modeling of the spreading of forest wildfire using a neural network with ConvLSTM cells. Prediction 3-days forward
ConvTimeLSTM -> Extension of ConvLSTM and Time-LSTM for irregularly spaced images, appropriate for Remote Sensing
dl-time-series -> Deep Learning algorithms applied to characterization of Remote Sensing time-series
tpe -> code for 2022 paper: Generalized Classification of Satellite Image Time Series With Thermal Positional Encoding
wildfire_forecasting -> code for 2021 paper: Deep Learning Methods for Daily Wildfire Danger Forecasting. Uses ConvLSTM
satellite_image_forecasting -> predict future satellite images from past ones using features such as precipitation and elevation maps. Entry for the EarthNet2021 challenge
Crop-Yield-Prediction-using-ML -> A simple Web application developed in order to provide the farmers/users an approximation on how much amount of crop yield will be produced depending upon the given input
satimage -> Code and models for the manuscript "Predicting Poverty and Developmental Statistics from Satellite Images using Multi-task Deep Learning". Predict the main material of a roof, source of lighting and source of drinking water for properties, from satellite imagery
africa_poverty -> Using publicly available satellite imagery and deep learning to understand economic well-being in Africa
Predicting-Poverty -> Combining satellite imagery and machine learning to predict poverty, in PyTorch
income-prediction -> Predicting average yearly income based on satellite imagery using CNNs, uses pytorch
urban_score -> Pytorch Implementation of paper: Learning to score economic development from satellite imagery
READ -> Pytorch Implementation of paper: Lightweight and robust representation of economic scales from satellite imagery
Slum-classification -> Binary classification on a very high-resolution satellite image in case of mapping informal settlements using unet
Predicting_Poverty -> uses daytime & luminosity of nighttime satellite images
Deep_Learning_Satellite_Imd -> code for "Project Bhoomi" - Using Deep Learning on Satellite Imagery to predict population and economic indicators
satellite_led_liverpool -> code for 2017 paper: Remote Sensing-Based Measurement of Living Environment Deprivation - Improving Classical Approaches with Machine Learning
uganda-poverty-project -> use through Object Detection on high-resolution satellite imagery to identify indicators of poverty and economic inequality within Uganda
Hurricane-Damage-Detection -> Waterloo's Hack the North 2020++ submission. A convolutional neural network model used to detect hurricane damage in RGB satellite images
wildfire_forecasting -> code for 2021 paper: Deep Learning Methods for Daily Wildfire Danger Forecasting. Uses ConvLSTM
shackleton -> leverages remote sensing imagery and machine learning techniques to provide insights into various transportation and evacuation scenarios in an interactive dashboard that conducts real-time computation
Weather phenomena
EddyData -> code for paper: A Deep Framework for Eddy Detection and Tracking from Satellite Sea Surface Height Data
python-windspeed -> Predicting windspeed of hurricanes from satellite images, uses CNN regression in keras
hurricane-wind-speed-cnn -> Predicting windspeed of hurricanes from satellite images, uses CNN regression in keras
Super-resolution
Super-resolution attempts to enhance the resolution of an imaging system, and can be applied as a pre-processing step to improve the detection of small objects or boundaries. Its use is controversial since it can introduce artefacts at the same rate as real features. These techniques are generally grouped into single image super resolution (SISR) or a multi image super resolution (MISR)
SRCDNet -> The pytorch implementation for "Super-resolution-based Change Detection Network with Stacked Attention Module for Images with Different Resolutions ". SRCDNet is designed to learn and predict change maps from bi-temporal images with different resolutions
satellite-pixel-synthesis-pytorch -> PyTorch implementation of NeurIPS 2021 paper: Spatial-Temporal Super-Resolution of Satellite Imagery via Conditional Pixel Synthesis
SRE-HAN -> Squeeze-and-Residual-Excitation Holistic Attention Network improves super-resolution (SR) on remote-sensing imagery compared to other state-of-the-art attention-based SR models
satsr -> A project to perform super-resolution on multispectral images from any satellite, including Sentinel 2, Landsat 8, VIIRS &MODIS
OLI2MSI -> dataset for remote sensing imagery super-resolution composed of Landsat8-OLI and Sentinel2-MSI images
MMSR -> Learning Mutual Modulation for Self-Supervised Cross-Modal Super-Resolution
HSRnet -> code for the 2021 paper: Hyperspectral Image Super-resolution via Deep Spatio-spectral Attention Convolutional Neural Networks
RRSGAN -> code for 2021 paper: RRSGAN: Reference-Based Super-Resolution for Remote Sensing Image
HDR-DSP-SR -> code for 2021 paper: Self-supervised multi-image super-resolution for push-frame satellite images
RFSR_TGRS -> code for the paper Hyperspectral Image Super-Resolution via Recurrent Feedback Embedding and Spatial-Spectral Consistency Regularization
SEN2VENµS -> a dataset for the training of Sentinel-2 super-resolution algorithms. With paper
TransENet -> code for 2021 paper: Transformer-based Multi-Stage Enhancement for Remote Sensing Image Super-Resolution
SG-FBGAN -> code for 2020 paper: Remote Sensing Image Super-Resolution via Saliency-Guided Feedback GANs
finetune_ESRGAN -> finetune the ESRGAN super resolution generator for remote sensing images and video
MIP -> code for 2021 paper: Unsupervised Remote Sensing Super-Resolution via Migration Image Prior
Optical-RemoteSensing-Image-Resolution -> code for 2018 paper: Deep Memory Connected Neural Network for Optical Remote Sensing Image Restoration. Two applications: Gaussian image denoising and single image super-resolution
HSENet -> code for 2021 paper: Hybrid-Scale Self-Similarity Exploitation for Remote Sensing Image Super-Resolution
SR_RemoteSensing -> Super-Resolution deep learning models for remote sensing data based on BasicSR
RSI-Net -> code for 2022 paper: A Deep Multi-task Convolutional Neural Network for Remote Sensing Image Super-resolution and Colorization
pixel-smasher -> code for 2020 paper: Super-Resolution Surface Water Mapping on the Canadian Shield Using Planet CubeSat Images and a Generative Adversarial Network
deepsum -> Deep neural network for Super-resolution of Unregistered Multitemporal images (ESA PROBA-V challenge)
3DWDSRNet -> code to reproduce Satellite Image Multi-Frame Super Resolution (MISR) Using 3D Wide-Activation Neural Networks
RAMS -> Official TensorFlow code for paper Multi-Image Super Resolution of Remotely Sensed Images Using Residual Attention Deep Neural Networks
TR-MISR -> Transformer-based MISR framework for the the PROBA-V super-resolution challenge. With paper
HighRes-net -> Pytorch implementation of HighRes-net, a neural network for multi-frame super-resolution, trained and tested on the European Space Agency’s Kelvin competition
ProbaVref -> Repurposing the Proba-V challenge for reference-aware super resolution
Deep-Learning-PanSharpening -> deep-learning based pan-sharpening code package, we reimplemented include PNN, MSDCNN, PanNet, TFNet, SRPPNN, and our purposed network DIPNet
HyperTransformer -> A Textural and Spectral Feature Fusion Transformer for Pansharpening
DIP-HyperKite -> Hyperspectral Pansharpening Based on Improved Deep Image Prior and Residual Reconstruction
D2TNet -> code for 2022 paper: A ConvLSTM Network with Dual-direction Transfer for Pan-sharpening
Kaggle Pix2Pix Maps -> dataset for pix2pix to take a google map satellite photo and build a street map
guided-deep-decoder -> With guided deep decoder, you can solve different image pair fusion problems, allowing super-resolution, pansharpening or denoising
hackathon-ci-2020 -> generate nighttime imagery from infrared observations
satellite-to-satellite-translation -> VAE-GAN architecture for unsupervised image-to-image translation with shared spectral reconstruction loss. Model is trained on GOES-16/17 and Himawari-8 L1B data
Building-A-Nets -> robust building extraction from high-resolution remote sensing images with adversarial networks
GANmapper -> a building footprint generator using Generative Adversarial Networks
CSA-CDGAN -> Channel Self-Attention Based Generative Adversarial Network for Change Detection of Remote Sensing Images
DSGAN -> a conditinal GAN for dynamic precipitation downscaling
MarsGAN -> GAN trained on satellite photos of Mars
HC_ADGAN -> codes for the paper Adaptive Dropblock Enhanced GenerativeAdversarial Networks for Hyperspectral Image Classification
SCALAE -> code for our paper Formatting the Landscape: Spatial conditional GAN for varying population in satellite imagery. Method to generate satellite imagery from custom 2D population maps
RoofNet -> identify roof age using historical satellite images to lower the customer acquisition cost for new solar installations. Uses a VAE: Variational Autoencoder
SynImageAnalysis -> comparing syn and real sattlelite images in the latent feature space (embeddings)
GRN-SNDL -> model the relations between samples (or scenes) by making use of a graph structure which is fed into network learning
SauMoCo -> codes for TGRS paper: Deep Unsupervised Embedding for Remotely Sensed Images Based on Spatially Augmented Momentum Contrast
TGRS_RiDe -> Rotation Invariant Deep Embedding for RemoteSensing Images
RaVAEn -> RaVAEn is a lightweight, unsupervised approach for change detection in satellite data based on Variational Auto-Encoders (VAEs) with the specific purpose of on-board deployment
split-brain-remote-sensing -> code for 2018 paper: Analysis of Color Space Quantization in Split-Brain Autoencoder for Remote Sensing Image Classification
DINCAE -> Data-Interpolating Convolutional Auto-Encoder is a neural network to reconstruct missing data in satellite observations
3D_SITS_Clustering -> code for 2020 paper: Unsupervised Satellite Image Time Series Clustering Using Object-Based Approaches and 3D Convolutional Autoencoder
sat_cnn -> code for 2022 paper: Estimating Generalized Measures of Local Neighbourhood Context from Multispectral Satellite Images Using a Convolutional Neural Network. Uses a convolutional autoencoder (CAE)
you-are-here -> Matlab code for 2020 paper: You Are Here: Geolocation by Embedding Maps and Images
Tensorflow similarity -> offers state-of-the-art algorithms for metric learning and all the necessary components to research, train, evaluate, and serve similarity-based models
pytorch-widedeep -> A flexible package for multimodal-deep-learning to combine tabular data with text and images using Wide and Deep models in Pytorch
accidentRiskMap -> Inferring high-resolution traffic accident risk maps based on satellite imagery and GPS trajectories
Few-shot learning
This is a class of techniques which attempt to make predictions for classes with few, one or even zero examples provided during training. In zero shot learning (ZSL) the model is assisted by the provision of auxiliary information which typically consists of descriptions/semantic attributes/word embeddings for both the seen and unseen classes at train time (ref). These approaches are particularly relevant to remote sensing, where there may be many examples of common classes, but few or even zero examples for other classes of interest.
These techniques use unlabelled datasets. Yann LeCun has described self/unsupervised learning as the 'base of the cake': If we think of our brain as a cake, then the cake base is unsupervised learning. The machine predicts any part of its input for any observed part, all without the use of labelled data. Supervised learning forms the icing on the cake, and reinforcement learning is the cherry on top.
Seasonal Contrast: Unsupervised Pre-Training from Uncurated Remote Sensing Data -> Seasonal Contrast (SeCo) is an effective pipeline to leverage unlabeled data for in-domain pre-training of remote sensing representations. Models trained with SeCo achieve better performance than their ImageNet pre-trained counterparts and state-of-the-art self-supervised learning methods on multiple downstream tasks. paper and repo
Contrastive Sensor Fusion -> Code implementing Contrastive Sensor Fusion, an approach for unsupervised learning of multi-sensor representations targeted at remote sensing imagery
hyperspectral-autoencoders -> Tools for training and using unsupervised autoencoders and supervised deep learning classifiers for hyperspectral data, built on tensorflow. Autoencoders are unsupervised neural networks that are useful for a range of applications such as unsupervised feature learning and dimensionality reduction.
Self-Supervised-Learner by spaceml-org -> train a classifier with fewer labeled examples needed using self-supervised learning, example applied to UC Merced land use dataset
deepsentinel -> a sentinel-1 and -2 self-supervised sensor fusion model for general purpose semantic embedding
geography-aware-ssl -> uses spatially aligned images over time to construct temporal positive pairs in contrastive learning and geo-location to design pre-text tasks
CNN-Supervised Classification -> Python code for self-supervised classification of remotely sensed imagery - part of the Deep Riverscapes project
clustimage -> a python package for unsupervised clustering of images
LandSurfaceClustering -> Land surface classification using remote sensing data with unsupervised machine learning (k-means)
TheColorOutOfSpace -> Pytorch code for the paper "The color out of space: learning self-supervised representations for Earth Observation imagery" using the BigEarthNet dataset
T2FTS -> code for 2022 paper: Teaching Teachers First and Then Student: Hierarchical Distillation to Improve Long-Tailed Object Recognition in Aerial Images
SSLTransformerRS -> code for 2022 paper: Self-supervised Vision Transformers for Land-cover Segmentation and
Classification
DINO-MM -> code for 2022 paper: Self-supervised Vision Transformers for Joint SAR-optical Representation Learning
SSL4EO-S12 -> a large-scale dataset for self-supervised learning in Earth observation
SSL4EO-Review -> code for 2022 paper: Self-supervised Learning in Remote Sensing: A Review
transfer_learning_cspt -> code for 2022 paper: Consecutive Pretraining: A Knowledge Transfer Learning Strategy with Relevant Unlabeled Data for Remote Sensing Domain
OTL -> code for 2022 paper: Clustering-Based Representation Learning through Output Translation and Its Application to Remote-Sensing Images
Push-and-Pull-Network -> code for 2022 paper: Contrastive Learning for Fine-grained Ship Classification in Remote Sensing Images
vissl_experiments -> Self-supervised Learning using Facebook VISSL on the RESISC-45 satellite imagery classification dataset
MS2A-Net -> code for 2022 paper: MS 2 A-Net: Multi-scale spectral-spatial association network for hyperspectral image clustering
UDA_for_RS -> code for paper: Unsupervised Domain Adaptation for Remote Sensing Semantic Segmentation with Transformer
MERLIN -> code for 2021 paper: As if by magic: self-supervised training of deep despeckling networks with MERLIN
Weakly & semi-supervised learning
These techniques use a partially annotated dataset
MARE -> self-supervised Multi-Attention REsu-net for semantic segmentation in remote sensing
SSGF-for-HRRS-scene-classification -> code for 2018 paper: A semi-supervised generative framework with deep learning features for high-resolution remote sensing image scene classification
SFGAN -> code for 2018 paper: Semantic-Fusion Gans for Semi-Supervised Satellite Image Classification
SSDAN -> code for 2021 paper: Multi-Source Semi-Supervised Domain Adaptation Network for Remote Sensing Scene Classification
HR-S2DML -> code for 2020 paper: High-Rankness Regularized Semi-Supervised Deep Metric Learning for Remote Sensing Imagery
fcd -> code for 2021 paper: Fixed-Point GAN for Cloud Detection. A weakly-supervised approach, training with only image-level labels
weak-segmentation -> Weakly supervised semantic segmentation for aerial images in pytorch
TNNLS_2022_X-GPN -> Code for paper: Semisupervised Cross-scale Graph Prototypical Network for Hyperspectral Image Classification
weakly_supervised -> code for the paper Weakly Supervised Deep Learning for Segmentation of Remote Sensing Imagery. Demonstrates that segmentation can be performed using small datasets comprised of pixel or image labels
wan -> Weakly-Supervised Domain Adaptation for Built-up Region Segmentation in Aerial and Satellite Imagery, with arxiv paper
sourcerer -> A Bayesian-inspired deep learning method for semi-supervised domain adaptation designed for land cover mapping from satellite image time series (SITS). Paper
MSMatch -> Semi-Supervised Multispectral Scene Classification with Few Labels. Includes code to work with both the RGB and the multispectral (MS) versions of EuroSAT dataset and the UC Merced Land Use (UCM) dataset. Paper
ScRoadExtractor -> code for 2020 paper: Scribble-based Weakly Supervised Deep Learning for Road Surface Extraction from Remote Sensing Images
ICSS -> code for 2022 paper: Weakly-supervised continual learning for class-incremental segmentation
es-CP -> code for 2022 paper: Semi-Supervised Hyperspectral Image Classification Using a Probabilistic Pseudo-Label Generation Framework
Active learning
Supervised deep learning techniques typically require a huge number of annotated/labelled examples to provide a training dataset. However labelling at scale take significant time, expertise and resources. Active learning techniques aim to reduce the total amount of annotation that needs to be performed by selecting the most useful images to label from a large pool of unlabelled images, thus reducing the time to generate useful training datasets. These processes may be referred to as Human-in-the-Loop Machine Learning
Image registration is the process of registering one or more images onto another (typically well georeferenced) image. Traditionally this is performed manually by identifying control points (tie-points) in the images, for example using QGIS. This section lists approaches which mostly aim to automate this manual process. There is some overlap with the data fusion section but the distinction I make is that image registration is performed as a prerequisite to downstream processes which will use the registered data as an input.
Phase correlation is used to estimate the XY translation between two images with sub-pixel accuracy. Can be used for accurate registration of low resolution imagery onto high resolution imagery, or to register a sub-image on a full image -> Unlike many spatial-domain algorithms, the phase correlation method is resilient to noise, occlusions, and other defects. With additional pre-processing image rotation and scale changes can also be calculated.
ImageRegistration -> Interview assignment for multimodal image registration using SIFT
imreg_dft -> Image registration using discrete Fourier transform. Given two images it can calculate the difference between scale, rotation and position of imaged features. Used by the up42 co-registration service
arosics -> Perform automatic subpixel co-registration of two satellite image datasets using phase-correlation, XY translations only.
SubpixelAlignment -> Implementation of tiff image alignment through phase correlation for pixel- and subpixel-bias
cnn-registration -> A image registration method using convolutional neural network features written in Python2, Tensorflow 1.5
mapalignment -> Aligning and Updating Cadaster Maps with Remote Sensing Images
CVPR21-Deep-Lucas-Kanade-Homography -> deep learning pipeline to accurately align challenging multimodality images. The method is based on traditional Lucas-Kanade algorithm with feature maps extracted by deep neural networks.
eolearn implements phase correlation, feature matching and ECC
LoFTR -> Detector-Free Local Feature Matching with Transformers. Good performance matching satellite image pairs, tryout the web demo on your data
image-to-db-registration -> This remote module implements an algorithm for automated vector Database registration onto an Image. Implemented in the orfeo-toolbox
MS_HLMO_registration -> Multi-scale Histogram of Local Main Orientation for Remote Sensing Image Registration, with paper
cnn-matching -> code and datadset for paper: Deep learning algorithm for feature matching of cross modality remote sensing images
Imatch-P -> A demo using SuperGlue and SuperPoint to do the image matching task based PaddlePaddle
NBR-Net -> A Non-rigid Bi-directional Registration Network for Multi-temporal Remote Sensing Images
MU-Net -> code for paper: A Multi-Scale Framework with Unsupervised Learning for Remote Sensing Image Registration. Also checkout this implementation
RISG-image-matching -> A rotation invariant SuperGlue image matching algorithm
DeepAerialMatching_pytorch -> code for 2020 paper: A Two-Stream Symmetric Network with Bidirectional Ensemble for Aerial Image Matching
DPCN -> code for 2020 paper: Deep Phase Correlation for End-to-End Heterogeneous Sensor Measurements Matching
FSRA -> code for 2022 paper: A Transformer-Based Feature Segmentation and Region Alignment Method For UAV-View Geo-Localization
IHN -> code for 2022 paper: Iterative Deep Homography Estimation
OSMNet -> code for 2021 paper: Explore Better Network Framework for High-Resolution Optical and SAR Image Matching
L2_Siamese -> code for the 2020 paper: Registration of Multiresolution Remote Sensing Images Based on L2-Siamese Model
Data fusion
Data fusion covers techniques which integrate multiple datasources, for example fusing SAR & optical to make predictions about crop type. It can also cover fusion with non imagery data such as IOT sensor data
Aerial-Template-Matching -> development of an algorithm for template Matching on aerial imagery applied to UAV dataset
DS_UNet -> code for 2021 paper: Sentinel-1 and Sentinel-2 Data Fusion for Urban Change Detection using a Dual Stream U-Net, uses Onera Satellite Change Detection dataset
DDA_UrbanExtraction -> Unsupervised Domain Adaptation for Global Urban Extraction using Sentinel-1 and Sentinel-2 Data
swinstfm -> code for paper: Remote Sensing Spatiotemporal Fusion using Swin Transformer
LoveCS -> code for 2022 paper: Cross-sensor domain adaptation for high-spatial resolution urban land-cover mapping: from airborne to spaceborne imagery
comingdowntoearth -> code for 2021 paper: Implementation of 'Coming Down to Earth: Satellite-to-Street View Synthesis for Geo-Localization'
Deep Generative Reflectance Fusion -> Achieving Landsat-like reflectance at any date by fusing Landsat and MODIS surface reflectance with deep generative models
IEEE_TGRS_MDL-RS -> code for 2021 paper: More Diverse Means Better: Multimodal Deep Learning Meets Remote-Sensing Imagery Classification
SSRNET -> code for 2022 paper: SSR-NET: Spatial-Spectral Reconstruction Network for Hyperspectral and Multispectral Image Fusion
cross-view-image-matching -> code for 2019 paper: Bridging the Domain Gap for Ground-to-Aerial Image Matching
CoF-MSMG-PCNN -> code for 2020 paper: Remote Sensing Image Fusion via Boundary Measured Dual-Channel PCNN in Multi-Scale Morphological Gradient Domain
edcstfn -> code for 2019 paper: An Enhanced Deep Convolutional Model for Spatiotemporal Image Fusion
ganstfm -> code for 2021 paper: A Flexible Reference-Insensitive Spatiotemporal Fusion Model for Remote Sensing Images Using Conditional Generative Adversarial Network
CMAFF -> code for 2021 paper: Cross-Modality Attentive Feature Fusion for Object Detection in Multispectral Remote Sensing Imagery
SOLC -> code for 2022 paper: MCANet: A joint semantic segmentation framework of optical and SAR images for land use classification. Uses WHU-OPT-SAR-dataset
MFT -> code for 2022 paper: Multimodal Fusion Transformer for Remote Sensing Image Classification
ISPRS_S2FL -> code for 2021 paper: Multimodal Remote Sensing Benchmark Datasets for Land Cover Classification with A Shared and Specific Feature Learning Model
HSHT-Satellite-Imagery-Synthesis -> code for thesis - Improving Flood Maps by Increasing the Temporal Resolution of Satellites Using Hybrid Sensor Fusion
MDC -> code for 2021 paper: Unsupervised Data Fusion With Deeper Perspective: A Novel Multisensor Deep Clustering Algorithm
FusAtNet -> code for 2020 paper: FusAtNet: Dual Attention based SpectroSpatial Multimodal Fusion Network for Hyperspectral and LiDAR Classification
AMM-FuseNet -> code for 2022 paper: AMM-FuseNet: Attention-Based Multi-Modal Image Fusion Network for Land Cover Mapping
S1-S2_Transformer -> Sentinel-1 SAR and Sentinel-2 optical timeseries based Transformer architecture for tropical dry forest disturbance mapping
MANet -> code for 2022 paper: MANet: A Network Architecture for Remote Sensing Spatiotemporal Fusion Based on Multiscale and Attention Mechanisms
DCSA-Net -> code for 2022 paper: Dynamic Convolution Self-Attention Network for Land-Cover Classification in VHR Remote-Sensing Images
Measure surface contours & locate 3D points in space from 2D images. NeRF stands for Neural Radiance Fields and is the term used in deep learning communities to describe a model that generates views of complex 3D scenes based on a partial set of 2D images
s2p -> a Python library and command line tool that implements a stereo pipeline which produces elevation models from images taken by high resolution optical satellites such as Pléiades, WorldView, QuickBird, Spot or Ikonos
cars -> a dedicated and open source 3D tool to produce Digital Surface Models from satellite imaging by photogrammetry. This Multiview stereo pipeline is intended for massive DSM production with a robust and performant design
ImageToDEM -> Generating Elevation Surface from a Single RGB Remotely Sensed Image Using a U-Net for generator and a PatchGAN for the discriminator
IMELE -> Building Height Estimation from Single-View Aerial Imagery
ridges -> deep semantic segmentation model for identifying ridges in topography
planet_tools -> Selection of imagery from Planet API for creation of stereo elevation models
SatelliteNeRF -> PyTorch-based Neural Radiance Fields adapted to satellite domain
SatelliteSfM -> A library for solving the satellite structure from motion problem
son2sat -> A neural network coded in TensorFlow 1 that produces satellite images from acoustic images
aerial_mtl -> PyTorch implementation for multi-task learning with aerial images to learn both semantics and height from aerial image datasets; fuses RGB & lidar
ReKlaSat-3D -> 3D Reconstruction and Classification from Very High Resolution Satellite Imagery
M3Net -> A deep learning method for building height estimation using high-resolution multi-view imagery over urban areas
HMSM-Net -> code for 2022 paper: Hierarchical multi-scale matching network for disparity estimation of high-resolution satellite stereo images
StereoMatchingRemoteSensing -> code for 2021 paper: Dual-Scale Matching Network for Disparity Estimation of High-Resolution Remote Sensing Images
satnerf -> Learning Multi-View Satellite Photogrammetry With Transient Objects and Shadow Modeling Using RPC Cameras
SatMVS -> code for 2021 paper: Rational Polynomial Camera Model Warping for Deep Learning Based Satellite Multi-View Stereo Matching
ImpliCity -> reconstructs digital surface models (DSMs) from raw photogrammetric 3D point clouds and ortho-images with the help of an implicit neural 3D scene representation
WHU-Stereo -> a large-scale dataset for stereo matching of high-resolution satellite imagery & several deep learning methods for stereo matching. Methods include StereoNet, Pyramid Stereo Matching Network & HMSM-Net
Photogrammetry-Guide -> A guide covering Photogrammetry including the applications, libraries and tools that will make you a better and more efficient Photogrammetry development
DSM-to-DTM -> Exploring the use of machine learning to convert a Digital Surface Model (e.g. SRTM) to a Digital Terrain Model
GF-7_Stereo_Matching -> code for paper: Large Scene DSM Generation of Gaofen-7 Imagery Combined with Deep Learning
Object Detection on Thermal Images -> using YOLO-v3 and applied to a terrestrial dataset from FLIR, the article offers some usful insights into the model training
piq -> a collection of measures and metrics for image quality assessment
FFA-Net -> Feature Fusion Attention Network for Single Image Dehazing
DeepCalib -> A Deep Learning Approach for Automatic Intrinsic Calibration of Wide Field-of-View Cameras
PerceptualSimilarity -> LPIPS is a perceptual metric which aims to overcome the limitations of traditional metrics such as PSNR & SSIM, to better represent the features the human eye picks up on
Optical-RemoteSensing-Image-Resolution -> code for 2018 paper: Deep Memory Connected Neural Network for Optical Remote Sensing Image Restoration. Two applications: Gaussian image denoising and single image super-resolution
HyDe -> Hyperspectral Denoising algorithm toolbox in Python, with paper
HLF-DIP -> code for 2022 paper: Unsupervised Hyperspectral Denoising Based on Deep Image Prior and Least Favorable Distribution
RQUNetVAE -> code for 2022 paper: Riesz-Quincunx-UNet Variational Auto-Encoder for Satellite Image Denoising
deep-hs-prior -> code for 2019 paper: Deep Hyperspectral Prior: Denoising, Inpainting, Super-Resolution
iquaflow -> from Satellogic, an image quality framework that aims at providing a set of tools to assess image quality by using the performance of AI models trained on the images as a proxy.
Synthetic data
Training data can be hard to acquire, particularly for rare events such as change detection after disasters, or imagery of rare classes of objects. In these situations, generating synthetic training data might be the only option. This has become quite sophisticated, with 3D models being use with open source games engines such as Unreal.
RarePlanes -> incorporates both real and synthetically generated satellite imagery including aircraft. Read the arxiv paper and checkout this repo. Note the dataset is available through the AWS Open-Data Program for free download
Read this article from NVIDIA which discusses fine tuning a model pre-trained on synthetic data (Rareplanes) with 10% real data, then pruning the model to reduce its size, before quantizing the model to improve inference speed
BlenderGIS could be used for synthetic data generation
bifrost.ai -> simulated data service with geospatial output data formats
oktal-se -> software for generating simulated data across a wide range of bands including optical and SAR
The Nuances of Extracting Utility from Synthetic Data -> We find that strategically augmenting the real dataset is nearly as effective as adding synthetic data in the quest to improve the detection or rare object classes, and that fully extracting the utility of synthetic data is a nuanced process
rs_img_synth -> code for 2020 paper: Synthesizing Optical and SAR Imagery From Land Cover Maps and Auxiliary Raster Data
Image dataset creation
Many datasets on kaggle & elsewhere have been created by screen-clipping Google Maps or browsing web portals. The tools below are to create datasets programatically
MapTilesDownloader -> A super easy to use map tiles downloader built using Python
jimutmap -> get enormous amount of high resolution satellite images from apple / google maps quickly through multi-threading
google-maps-downloader -> A short python script that downloads satellite imagery from Google Maps
ExtractSatelliteImagesFromCSV -> extract satellite images using a CSV file that contains latitude and longitude, uses mapbox
sentinelsat -> Search and download Copernicus Sentinel satellite images
SentinelDownloader -> a high level wrapper to the SentinelSat that provides an object oriented interface, asynchronous downloading, quickview & simpler searching methods
RGISTools -> Tools for Downloading, Customizing, and Processing Time Series of Satellite Images from Landsat, MODIS, and Sentinel
DeepSatData -> Automatically create machine learning datasets from satellite images
landsat_ingestor -> Scripts and other artifacts for landsat data ingestion into Amazon public hosting
satpy -> a python library for reading and manipulating meteorological remote sensing data and writing it to various image and data file formats
GIBS-Downloader -> a command-line tool which facilitates the downloading of NASA satellite imagery and offers different functionalities in order to prepare the images for training in a machine learning pipeline
pylandsat -> Search, download, and preprocess Landsat imagery
landsatxplore -> Search and download Landsat scenes from EarthExplorer
OpenSarToolkit -> High-level functionality for the inventory, download and pre-processing of Sentinel-1 data in the python language
lsru -> Query and Order Landsat Surface Reflectance data via ESPA
eoreader -> Remote-sensing opensource python library reading optical and SAR sensors, loading and stacking bands, clouds, DEM and index in a sensor-agnostic way
Aerial-Satellite-Imagery-Retrieval -> A program using Bing maps tile system to automatically download Aerial / Satellite Imagery given a lat/lon bounding box and level of detail
google-maps-at-88-mph -> Google Maps keeps old satellite imagery around for a while – this tool collects what's available for a user-specified region in the form of a GIF
srtmDownloader -> Python library (multi-threaded) for retrieving SRTM elevation map of CGIAR-CSI
ImageDatasetViz -> create a mosaic of images in a dataset for previewing purposes
landsatlinks -> A simple CLI interface to generate download urls for Landsat Collection 2 Level 1 product bundles
pyeo -> a set of portable, extensible and modular Python scripts for machine learning in earth observation and GIS, including downloading, preprocessing, creation of base layers, classification and validation.
metaearth -> Download and access remote sensing data from any platform
geoget -> Download geodata for anywhere in Earth via ladsweb.modaps.eosdis.nasa.gov
geeml -> A python package to extract Google Earth Engine data for machine learning
Image chipping/tiling & merging
Since raw images can be very large, it is usually necessary to chip/tile them into smaller images before annotation & training
image_slicer -> Split images into tiles. Join the tiles back together
tiler by nuno-faria -> split images into tiles and merge tiles into a large image
tiler by the-lay -> N-dimensional NumPy array tiling and merging with overlapping, padding and tapering
xbatcher -> Xbatcher is a small library for iterating xarray DataArrays in batches. The goal is to make it easy to feed xarray datasets to machine learning libraries such as Keras
GeoTagged_ImageChip -> A simple script to create geo tagged image chips from high resolution RS iamges for training deep learning models such as Unet
geotiff-crop-dataset -> A Pytorch Dataloader for tif image files that dynamically crops the image
Train-Test-Validation-Dataset-Generation -> app to crop images and create small patches of a large image e.g. Satellite/Aerial Images, which will then be used for training and testing Deep Learning models specifically semantic segmentation models
satproc -> Python library and CLI tools for processing geospatial imagery for ML
Sliding Window -> break large images into a series of smaller chunks
patchify -> A library that helps you split image into small, overlappable patches, and merge patches into original image
split-rs-data -> Divide remote sensing images and their labels into data sets of specified size
rpc_cropper -> A small standalone tool to crop satellite images and their RPC
geotile -> python library for tiling the geographic raster data
GeoPatch -> generating patches from remote sensing data
ImageTilingUtils -> Minimalistic set of image reader agnostic tools to easily iterate over large images
split_raster -> Creates a tiled output from an input raster dataset. pip installable
SAHI -> Utilties for slicing COCO formatted annotations and image files, performing sliced inference using MMDetection, Detectron2, YOLOv5, HuggingFace detectors and calculating AP over image slices.
Annotation
For supervised machine learning, you will require annotated images. For example if you are performing object detection you will need to annotate images with bounding boxes. Check that your annotation tool of choice supports large image (likely geotiff) files, as not all will. Note that GeoJSON is widely used by remote sensing researchers but this annotation format is not commonly supported in general computer vision frameworks, and in practice you may have to convert the annotation format to use the data with your chosen framework. There are both closed and open source tools for creating and converting annotation formats. Some of these tools are simply for performing annotation, whilst others add features such as dataset management and versioning. Note that self-supervised and active learning approaches might circumvent the need to perform a large scale annotation exercise. Note that tiffs/geotiffs cannot be displayed by most browsers (Chrome), but CAN render in Safari.
Annotation tools with GEO features
GroundWork is designed for annotating and labeling geospatial data like satellite imagery, from Azavea
labelbox.com -> free tier is quite generous, supports annotating Geotiffs & returning annotations with geospatial coordinates. Watch this webcast
iris -> Tool for manual image segmentation and classification of satellite imagery
If you are considering building an in house annotation platform read this article. Used PostGis database, GeoJson format and GIS standard in a stateless architecture
satellite-imagery-labeling-tool -> from Microsoft, this is a lightweight web-interface for creating and sharing vector annotations over satellite/aerial imagery scenes
RSLabel -> remote sensing (RS) image annotation tool for deep learning
labelImg is the classic desktop tool, limited to bounding boxes for object detection. Also checkout roLabelImg which supports ROTATED rectangle regions, as often occurs in aerial imagery. labelImg_OBB is another fork supporting orinted bounding boxes (OBB)
Labelme is a very popular & simple dektop app for polygonal annotation suitable for object detection and semantic segmentation. Note it outputs annotations in a custom LabelMe JSON format which you will need to convert, e.g. using labelme2coco. Read Labelme Image Annotation for Geotiffs
Label Studio is a multi-type data labeling and annotation tool with standardized output format, syncing to buckets, and supports importing pre-annotations (create with a model). Checkout label-studio-converter for converting Label Studio annotations into common dataset formats
Deeplabel is a cross-platform tool for annotating images with labelled bounding boxes. Deeplabel also supports running inference using state-of-the-art object detection models like Faster-RCNN and YOLOv4. With support out-of-the-box for CUDA, you can quickly label an entire dataset using an existing model.
pigeonXT -> create custom image classification annotators within Jupyter notebooks
ipyannotations -> Image annotations in python using Jupyter notebooks
Label-Detect -> is a graphical image annotation tool and using this tool a user can also train and test large satellite images, fork of the popular labelImg tool
Swipe-Labeler -> Swipe Labeler is a Graphical User Interface based tool that allows rapid labeling of image data
dash_doodler -> A web application built with plotly/dash for image segmentation with minimal supervision
remo -> A webapp and Python library that lets you explore and control your image datasets
TensorFlow Object Detection API provides a handy utility for object annotation within Google Colab notebooks. See usage here
coco-annotator -> Web-based image segmentation tool for object detection, localization, and keypoints
pylabel -> Python library for computer vision labeling tasks. The core functionality is to translate bounding box annotations between different formats-for example, from coco to yolo. PyLabel also includes an image labeling tool that runs in a Jupyter notebook that can annotate images manually or perform automatic labeling using a pre-trained model
image_sorter -> A quick interface for sorting a folder of images into two other folders
bulk -> A Simple Bulk Labelling Tool using embeddings
Cloud hosted & paid annotation tools & services
Several open source tools are also available on the cloud, including CVAT, label-studio & Diffgram. In general cloud solutions will provide a lot of infrastructure and storage for you, as well as integration with outsourced annotators.
GroundWork is designed for annotating and labeling geospatial data like satellite imagery, from Azavea
labelbox.com -> free tier is quite generous, supports annotating Geotiffs & returning annotations with geospatial coordinates. Watch this webcast
Roboflow -> in addition to annotation this platform makes it easy to convert between annotation formats & manage datasets, as well as train and deploy custom models to private API endpoints. Read How to Train Computer Vision Models on Aerial Imagery
supervise.ly is one of the more fully featured platforms, decent free tier
AWS supports image annotation via the Rekognition Custom Labels console
rectlabel is a desktop app for MacOS to annotate images for bounding box object detection and segmentation, paid and free (rectlabel-lite) versions
hasty.ai -> supports model assisted annotation & inferencing
Annotation formats
Note there are many annotation formats, although PASCAL VOC and coco-json are the most commonly used. I recommend using geojson for storing polygons, then converting these to the required format when needed.
PASCAL VOC format: XML files in the format used by ImageNet
coco-json format: JSON in the format used by the 2015 COCO dataset
YOLO Darknet TXT format: contains one text file per image, used by YOLO
Tensorflow TFRecord: a proprietary binary file format used by the Tensorflow Object Detection API
OBB: orinted bounding boxes are polygons representing rotated rectangles
Annotation visualisation & conversion tools
Tools to visualise annotations & convert between formats. Note that most annotation software will allow you to visualise existing annotations
Dataset-Converters -> a conversion toolset between different object detection and instance segmentation annotation formats
FiftyOne -> open-source tool for building high quality datasets and computer vision models. Visualise labels, evaluate model predictions, explore scenarios of interest, identify failure modes, find annotation mistakes, and much more! Read Nearest Neighbor Embeddings Search with Qdrant and FiftyOne
rebox -> Easily convert between bounding box annotation formats
COCO-Assistant -> Helper for dealing with MS-COCO annotations; Merge datasets, Remove specfic category from dataset, Generate annotations statistics - distribution of object areas and category distribution
pybboxes -> Light weight toolkit for bounding boxes providing conversion between bounding box types and simple computations
voc2coco -> Convert VOC format XMLs to COCO format json
ObjectDetectionEval -> Parse all kinds of object detection databases (ImageNet, COCO, YOLO, PascalVOC, OpenImage, CVAT, LabelMe, etc.) & save to other formats
LabelMeYoloConverter -> Convert LabelMe Annotation Tool JSON format to YOLO text file format
mask-to-polygons -> Routines for extracting and working with polygons from semantic segmentation masks
labelme2coco -> Converts LabelMe JSON format into COCO object detection and instance segmentation format.
Training models
This section discusses training machine learning models.
Metrics
A number of metrics are common to all model types (but can have slightly different meanings in contexts such as object detection), whilst other metrics are very specific to particular classes of model. The correct choice of metric is particularly critical for imbalanced dataset problems, e.g. object detection
Precision is the % of correct positive predictions, calculated as precision = TP/(TP+FP)
Recall or true positive rate (TPR), is the % of true positives captured by the model, calculated as recall = TP/(TP+FN). Note that FN is not possible in object detection, so recall is not appropriate.
The F1 score (also called the F-score or the F-measure) is the harmonic mean of precision and recall, calculated as F1 = 2*(precision * recall)/(precision + recall). It conveys the balance between the precision and the recall. Ref
The false positive rate (FPR), calculated as FPR = FP/(FP+TN) is often plotted against recall/TPR in an ROC curve which shows how the TPR/FPR tradeoff varies with classification threshold. Lowering the classification threshold returns more true positives, but also more false positives. Note that since FN is not possible in object detection, ROC curves are not appropriate.
Precision-vs-recall curves visualise the tradeoff between making false positives and false negatives
Accuracy is the most commonly used metric in 'real life' but can be a highly misleading metric for imbalanced data sets.
IoU is an object detection specific metric, being the average intersect over union of prediction and ground truth bounding boxes for a given confidence threshold
mAP@0.5 is another object detection specific metric, being the mean value of the average precision for each class. @0.5 sets a threshold for how much of the predicted bounding box overlaps the ground truth bounding box, i.e. "minimum 50% overlap"
This section includes tips and ideas I have picked up from other practitioners including ai-fast-track, FraPochetti & the IceVision community
Almost all imagery data on the internet is in RGB format, and common techniques designed for working with this 3 band imagery may fail or need significant adaptation to work with multiband data (e.g. 13-band Sentinel 2)
In general, classification and object detection models are created using transfer learning, where the majority of the weights are not updated in training but have been pre computed using standard vision datasets such as ImageNet
Where you have small sample sizes, e.g. for a small object class which may be under represented in your training dataset, use image augmentation
In general, larger models will outperform smaller models, particularly on challenging tasks such as detecting small objetcs
If model performance in unsatisfactory, try to increase your dataset size before switching to another model architecture
In training, whenever possible increase the batch size, as small batch sizes produce poor normalization statistics
The vast majority of the literature uses supervised learning with the requirement for large volumes of annotated data, which is a bottleneck to development and deployment. We are just starting to see self-supervised approaches applied to remote sensing data
4-ways-to-improve-class-imbalance discusses the pros and cons of several rebalancing techniques, applied to an aerial dataset. Reason to read: models can reach an accuracy ceiling where majority classes are easily predicted but minority classes poorly predicted. Overall model accuracy may not improve until steps are taken to account for class imbalance.
For general guidance on dataset size see this issue
Supplement your training data with 'negative' examples which are created through random selection of regions of the image that contain no objects of interest, read Setting a Foundation for Machine Learning
A GPU is required for training deep learning models (but not necessarily for inferencing), and this section lists a couple of free Jupyter environments with GPU available. There is a good overview of online Jupyter development environments on the fastai site. I personally use Colab Pro with data hosted on Google Drive, or Sagemaker if I have very long running training jobs.
Google Colab
Collaboratory notebooks with GPU as a backend for free for 12 hours at a time. Note that the GPU may be shared with other users, so if you aren't getting good performance try reloading.
Deepnote -> many features for collaboration, GPU use is paid
Deep learning projects & frameworks
TorchGeo -> a PyTorch domain library providing datasets, samplers, transforms, and pre-trained models specific to geospatial data, supported by Microsoft. Read Geospatial deep learning with TorchGeo
rastervision -> An open source Python framework for building computer vision models on aerial, satellite, and other large imagery sets
torchrs -> PyTorch implementation of popular datasets and models in remote sensing tasksenhance) -> Enhance PyTorch vision for semantic segmentation, multi-channel images and TIF file
DeepHyperX -> A Python/pytorch tool to perform deep learning experiments on various hyperspectral datasets
DELTA -> Deep Earth Learning, Tools, and Analysis, by NASA is a framework for deep learning on satellite imagery, based on Tensorflow & using MLflow for tracking experiments
Lightly is a computer vision framework for training deep learning models using self-supervised learning
Icevision offers a curated collection of hundreds of high-quality pre-trained models within an easy to use framework
pytorch_eo -> aims to make Deep Learning for Earth Observation data easy and accessible to real-world cases and research alike
NGVEO -> applying convolutional neural networks (CNN) to Earth Observation (EO) data from Sentinel 1 and 2 using python and PyTorch
http://spaceml.org/ -> A Machine Learning toolbox and developer community building the next generation AI applications for space science and exploration
TorchSat is an open-source deep learning framework for satellite imagery analysis based on PyTorch (no activity since June 2020)
DeepNetsForEO -> Uses SegNET for working on remote sensing images using deep learning (no activity since 2019)
RoboSat -> semantic segmentation on aerial and satellite imagery. Extracts features such as: buildings, parking lots, roads, water, clouds (no longer maintained)
DeepOSM -> Train a deep learning net with OpenStreetMap features and satellite imagery (no activity since 2017)
terragpu -> Python library to process and classify remote sensing imagery by means of GPUs and AI/ML
EOTorchLoader -> Pytorch dataloader and pytorch lightning datamodule for Earth Observation imagery
satellighte -> an image classification library that consist state-of-the-art deep learning methods, using PyTorch Lightning
aeronetlib -> Python library to work with geospatial raster and vector data for deep learning
rsi-semantic-segmentation -> A unified PyTorch framework for semantic segmentation from remote sensing imagery
AiTLAS -> implements state-of-the-art AI methods for exploratory and predictive analysis of satellite images
mmsegmentation -> Semantic Segmentation Toolbox with support for many remote sensing datasets including LoveDA
, Potsdam, Vaihingen & iSAID
ODEON landcover -> a set of command-line tools performing semantic segmentation on remote sensing images (aerial and/or satellite) with as many layers as you wish
aitlas-arena -> An open-source benchmark framework for evaluating state-of-the-art deep learning approaches for image classification in Earth Observation (EO)
PaddleRS -> remote sensing image processing development kit
segmentation_gym -> A neural gym for training deep learning models to carry out geoscientific image segmentation
Neural nets in space
Processing on board a satellite allows less data to be downlinked. e.g. super-resolution image might take 8 images to generate, then a single image is downlinked. Other applications include cloud detection and collision avoidance.
Whilst not involving neural nets the PyCubed project gets a mention here as it is putting python on space hardware such as the V-R3x
WorldFloods will pioneer the detection of global flood events from space, launched on June 30, 2021. This paper describes the model which is run on Intel Movidius Myriad2 hardware capable of processing a 12 MP image in less than a minute
Palantir Edge AI in Space -> using NVIDIA Jetson for ship/aircraft/cloud detection & land cover segmentation
Spiral Blue -> startup building edge computers to run AI analytics on-board satellites
RaVAEn -> a lightweight, unsupervised approach for change detection in satellite data based on Variational Auto-Encoders (VAEs) with the specific purpose of on-board deployment. It flags changed areas to prioritise for downlink, shortening the response time
DL-for-satellite-image-analysis -> short and minimalistic examples covering fundamentals of Deep Learning for Satellite Image Analysis using Jupyter notebooks, created by lakmalnd