This document lists resources for performing deep learning on satellite imagery. To a lesser extent classical Machine learning (e.g. random forests) are also discussed, as are classical image processing techniques. Note there is a huge volume of academic literature published on these topics, and this repository does not seek to index them all but rather list approachable resources with published code that will benefit both the research and developer communities.
- Techniques
- Classification
- Segmentation
- Object detection
- Counting trees
- Oil storage tank detection & oil spills
- Cloud detection & removal
- Change detection
- Time-series
- Crop yield
- Wealth and economic activity
- Disaster response
- Weather phenomena
- Super-resolution
- Pansharpening
- Image-to-image translation
- GANS
- Adversarial ML
- Autoencoders, dimensionality reduction, image embeddings & similarity search
- Image retreival
- Image Captioning & Visual Question Answering
- Mixed data learning
- Few/one/zero/low shot learning
- Self/unsupervised & contrastive learning
- Weakly/semi-supervised learning
- Active learning
- Federated learning
- Image registration
- Data fusion
- Terrain mapping, Disparity Estimation, Lidar, DEMs & NeRF
- Thermal Infrared
- SAR
- NVDI - vegetation index
- General image quality
- Neural nets in space
- ML best practice
- Metrics
- Datasets
- Synthetic data
- Online platforms for analytics
- Free online compute
- State of the art engineering
- Cloud providers
- Deploying models
- Image annotation
- Open source software
- General utilities
- Low level numerical & data formats
- Image processing, handling, manipulation
- Image chipping/tiling & merging
- Image dataset creation
- Image augmentation packages
- Image formats, data management and catalogues
- Deep learning packages, frameworks & projects
- Model tracking, versioning, specification & compilation
- Graphing and visualisation
- Algorithms
- GDAL & Rasterio
- Cloud Optimised GeoTiff (COG)
- SpatioTemporal Asset Catalog specification (STAC)
- OpenStreetMap
- QGIS
- Streamlit
- Julia language
- Movers and shakers on Github
- Companies & organisations on Github
- Courses
- Books
- Podcasts
- Online communities
- Jobs
- About the author
This section explores the different deep and machine learning (ML) techniques applied to common problems in satellite imagery analysis. Good background reading is Deep learning in remote sensing applications: A meta-analysis and review
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. In general, aerial images cover large geographical areas that include multiple classes of land, so treating this is as a classification problem is less common than using semantic segmentation. I recomend to get started with the EuroSAT dataset.
- Land classification on Sentinel 2 data using a simple sklearn cluster algorithm or deep learning CNN
- Land Use Classification on Merced dataset using CNN in Keras or fastai. Also checkout Multi-label Land Cover Classification using the redesigned multi-label Merced dataset with 17 land cover classes
- Multi-Label Classification of Satellite Photos of the Amazon Rainforest using keras or FastAI
- Detecting Informal Settlements from Satellite Imagery using fine-tuning of ResNet-50 classifier with repo
- Vision Transformers Use Case: Satellite Image Classification without CNNs
- Land-Cover-Classification-using-Sentinel-2-Dataset -> well written Medium article accompanying this repo but using the EuroSAT dataset
- Land Cover Classification of Satellite Imagery using Convolutional Neural Networks using Keras and a multi spectral dataset captured over vineyard fields of Salinas Valley, California
- Detecting deforestation from satellite images -> using FastAI and ResNet50, with repo fsdl_deforestation_detection
- Neural Network for Satellite Data Classification Using Tensorflow in Python -> A step-by-step guide for Landsat 5 multispectral data classification for binary built-up/non-built-up class prediction, with repo
- Slums mapping from pretrained CNN network on VHR (Pleiades: 0.5m) and MR (Sentinel: 10m) imagery
- Comparing urban environments using satellite imagery and convolutional neural networks -> includes interesting study of the image embedding features extracted for each image on the Urban Atlas dataset. Accompanying paper
- RSI-CB -> A Large Scale Remote Sensing Image Classification Benchmark via Crowdsource Data. See also Remote-sensing-image-classification
- 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
- Land Use and Land Cover Classification using a ResNet Deep Learning Architecture -> uses fastai and the EuroSAT dataset
- Vision Transformers Use Case: Satellite Image Classification without CNNs
- WaterNet -> a CNN that identifies water in satellite images
- Road-Network-Classification -> Road network classification model using ResNet-34, road classes organic, gridiron, radial and no pattern
- Scaling AI to map every school on the planet
- Landsat classification CNN tutorial with repo
- satellite-crosswalk-classification
- Understanding the Amazon Rainforest with Multi-Label Classification + VGG-19, Inceptionv3, AlexNet & Transfer Learning
- Implementation of the 3D-CNN model for land cover classification -> uses the Sundarbans dataset, with repo. Also read Land cover classification of Sundarbans satellite imagery using K-Nearest Neighbor(K-NNC), Support Vector Machine (SVM), and Gradient Boosting classification algorithms which is by the same author and shares the repo
- 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
- Satellite image classification using multiple machine learning algorithms
- satsense -> a Python library for land use/cover classification using classical features including HoG & NDVI
- PyTorch_UCMerced_LandUse -> simple pytorch implementation fine tuned on ResNet and basic augmentations
- EuroSAT-image-classification -> simple pytorch implementation fine tuned on ResNet
- landcover_classification -> using fast.ai on EuroSAT
- 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
- image.classification.on.EuroSAT -> solution in pure pytorch
- 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
- Brazilian-Coffee-Detection -> uses Keras with public dataset
- tf-crash-severity -> predict the crash severity for given road features contained within satellite images
- ensemble_LCLU -> code for 2021 paper: Deep neural network ensembles for remote sensing land cover and land use classification
- cerraNet -> contextually classify the types of use and coverage in the Brazilian Cerrado
- Urban-Analysis-Using-Satellite-Imagery -> classify urban area as planned or unplanned using a combination of segmentation and classification
- ChipClassification -> code for 2019 paper: Deep learning for multi-modal classification of cloud, shadow and land cover scenes in PlanetScope and Sentinel-2 imagery
- DeeplearningClassficationLandsat-tImages -> Water/Ice/Land Classification Using Large-Scale Medium Resolution Landsat Satellite Images
- wildfire-detection-from-satellite-images-ml -> detect whether an image contains a wildfire, with example flask web app
- mining-discovery-with-deep-learning -> code for the 2020 paper: Mining and Tailings Dam Detection in Satellite Imagery Using Deep Learning
- e-Farmerce-platform -> classify crop type
- sentinel2-deep-learning -> Novel Training Methodologies for Land Classification of Sentinel-2 Imagery
- RSSC-transfer -> code for 2021 paper: The Role of Pre-Training in High-Resolution Remote Sensing Scene Classification
- Classifying Geo-Referenced Photos and Satellite Images for Supporting Terrain Classification -> detect floods
- Pay-More-Attention -> code for 2021 paper: Remote Sensing Image Scene Classification Based on an Enhanced Attention Module
- Remote-Sensing-Image-Classification-via-Improved-Cross-Entropy-Loss-and-Transfer-Learning-Strategy -> code for 2019 paper: Remote Sensing Image Classification via Improved Cross-Entropy Loss and Transfer Learning Strategy Based on Deep Convolutional Neural Networks
- DenseNet40-for-HRRSISC -> DenseNet40 for remote sensing image scene classification, uses UC Merced Dataset
- SKAL -> code for 2022 paper: Looking Closer at the Scene: Multiscale Representation Learning for Remote Sensing Image Scene Classification
- potsdam-tensorflow-practice -> image classification of Potsdam dataset using tensorflow
- 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
- CNN_AircraftDetection -> CNN for aircraft detection in satellite images using keras
Segmentation will assign a class label to each pixel in an image. Segmentation is typically grouped into semantic, instance or panoptic segmentation. In semantic segmentation objects of the same class are assigned the same label, whilst in instance segmentation each object is assigned a unique label. Panoptic segmentation combines instance and semantic predictions. Read this beginner’s guide to segmentation. Single class models are often trained for road or building segmentation, with multi class for land use/crop type classification. Image annotation can take longer than for object detection since every pixel must be annotated. 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
- awesome-satellite-images-segmentation
- Satellite Image Segmentation: a Workflow with U-Net is a decent intro article
- nga-deep-learning -> performs semantic segmentation on high resultion GeoTIF data using a modified U-Net & Keras, published by NASA researchers
- How to create a DataBlock for Multispectral Satellite Image Semantic Segmentation using Fastai
- Using a U-Net for image segmentation, blending predicted patches smoothly is a must to please the human eye -> python code to blend predicted patches smoothly
- Automatic Detection of Landfill Using Deep Learning
- SpectralNET -> a 2D wavelet CNN for Hyperspectral Image Classification, uses Salinas Scene dataset & Keras
- FactSeg -> Foreground Activation Driven Small Object Semantic Segmentation in Large-Scale Remote Sensing Imagery (TGRS), also see FarSeg and FreeNet, implementations of research paper
- SCAttNet -> Semantic Segmentation Network with Spatial and Channel Attention Mechanism
- 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
- 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.
- Semantic Segmentation of Satellite Imagery using U-Net & fast.ai -> with repo
- SSRN -> Implementation of SSRN for Hyperspectral Image Classification
- Implementing Transfer Learning from RGB to Multi-channel Imagery -> Semantic Segmentation using ResNet50 Backbone plus Pyramid Pooling
- clusternet_segmentation -> Unsupervised Segmentation by applying K-Means clustering to the features generated by Neural Network
- DCA -> Code for TGRS 2022 paper "Deep Covariance Alignment for Domain Adaptive Remote Sensing Image Segmentation"
- 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
- Collection of different Unet Variant -> demonstrates VggUnet, ResUnet, DenseUnet, Unet. AttUnet, MobileNetUnet, NestedUNet, R2AttUNet, R2UNet, SEUnet, scSEUnet, Unet_Xception_ResNetBlock, in keras
- Efficient-Transformer -> an efficient transformer to achieve light-weight segmentation with improved edge segmentation by applying explicit and implicit edge enhancement methods, achieves state-of-the-art performance on Potsdam and Vaihingen datasets. Paper
- HRCNet-High-Resolution-Context-Extraction-Network -> code to paper: High-Resolution Context Extraction Network for Semantic Segmentation of Remote Sensing Images
- Semantic segmentation of SAR images using a self supervised technique
- satellite-segmentation-pytorch -> explores a variety of augmentations
- Satellite-Segmentation -> model emsamble: SegNet + U-Net in keras
- IEEE_TGRS_SpectralFormer -> code for 2021 paper: Spectralformer: Rethinking hyperspectral image classification with transformers
- Unsupervised Segmentation of Hyperspectral Remote Sensing Images with Superpixels
- Large-scale-Automatic-Identification-of-Urban-Vacant-Land -> code for 2022 paper: Large-scale automatic identification of urban vacant land using semantic segmentation of high-resolution remote sensing images
- Semantic-Segmentation-with-Sparse-Labels -> codes and data for learning from sparse annotations
- OBIC-GCN -> code for 2021 paper: Object-based Classification Framework of Remote Sensing Images with Graph Convolutional Networks
- SNDF -> code for 2020 paper: Superpixel-enhanced deep neural forest for remote sensing image semantic segmentation
- Satellite-Image-Classification -> using random forest or support vector machines (SVM) and sklearn
- Methane-detection-from-hyperspectral-imagery -> code for 2020 paper: Deep Remote Sensing Methods for Methane Detection in Overhead Hyperspectral Imagery
- 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
- 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
- aerial-segmentation -> code for 2017 paper: Learning Aerial Image Segmentation from Online Maps
- IterativeSegmentation -> code for 2016 paper: Recurrent Neural Networks to Correct Satellite Image Classification Maps
- land-cover -> code for 2021 paper: Model Generalization in Deep Learning Applications for Land Cover Mapping. In Fragile Earth
- 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
- Multi-class semantic segmentation of satellite images using U-Net using DSTL dataset, tensorflow 1 & python 2.7. Accompanying article
- Codebase for multi class land cover classification with U-Net accompanying a masters thesis, uses Keras
- dubai-satellite-imagery-segmentation -> due to the small dataset, image augmentation was used
- U-Net for Semantic Segmentation on Unbalanced Aerial Imagery -> using the Dubai dataset
- CDL-Segmentation -> code for the paper: "Deep Learning Based Land Cover and Crop Type Classification: A Comparative Study", comparing UNet, SegNet & DeepLabv3+
- floatingobjects -> code for the paper: TOWARDS DETECTING FLOATING OBJECTS ON A GLOBAL SCALE WITHLEARNED SPATIAL FEATURES USING SENTINEL 2. Uses U-Net & pytorch
- LoveDA -> code for the paper "A Remote Sensing Land-Cover Dataset for Domain Adaptive Semantic Segmentation"
- Satellite Imagery Semantic Segmentation with CNN -> 7 different segmentation classes, DeepGlobe Land Cover Classification Challenge dataset, with repo
- Aerial Semantic Segmentation using U-Net Deep Learning Model medium article, with repo
- UNet-Satellite-Image-Segmentation -> A Tensorflow implentation of light UNet semantic segmentation framework
- Remote-sensing-image-semantic-segmentation -> The project uses Unet-based improved networks to study Remote sensing image semantic segmentation, which is based on keras
- DeepGlobe Land Cover Classification Challenge solution
- 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
- projects-solar-panel-detection -> List of project to detect solar panels from aerial/satellite images
- Detectron2 FPN + PointRend Model for amazing Satellite Image Segmentation -> 15% increase in accuracy when compared to the U-Net model
- Fusing multiple segmentation models based on different datasets into a single edge-deployable model -> roof, car & road segmentation
- HybridSN -> A keras based implementation of Hybrid-Spectral-Net as in IEEE GRSL paper "HybridSN: Exploring 3D-2D CNN Feature Hierarchy for Hyperspectral Image Classification"
- TNNLS_2022_X-GPN -> Code for paper: Semisupervised Cross-scale Graph Prototypical Network for Hyperspectral Image Classification
- Semantic-segmentation-with-PyTorch-Satellite-Imagery -> predict 25 classes on RGB imagery taken to assess the damage after Hurricane Harvey
- Semantic Segmentation With Sentinel-2 Imagery -> uses LandCoverNet dataset and fast.ai
- CNN_Enhanced_GCN -> code for 2021 paper: CNN-Enhanced Graph Convolutional Network With Pixel- and Superpixel-Level Feature Fusion for Hyperspectral Image Classification
- LULCMapping-WV3images-CORINE-DLMethods -> Land Use and Land Cover Mapping Using Deep Learning Based Segmentation Approaches and VHR Worldview-3 Images
- singleSceneSemSegTgrs2022 -> code for 2022 paper: Unsupervised Single-Scene Semantic Segmentation for Earth Observation
- A-Fast-and-Compact-3-D-CNN-for-HSIC -> code for 2020 paper: A Fast and Compact 3-D CNN for Hyperspectral Image Classification
- HSNRS -> code for 2017 paper: Hourglass-ShapeNetwork Based Semantic Segmentation for High Resolution Aerial 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
- MUnet-LUC -> Land Use with mUnet
- 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)
- Road and Building Semantic Segmentation in Satellite Imagery uses U-Net on the Massachusetts Roads Dataset & keras
- find-unauthorized-constructions-using-aerial-photography -> semantic segmentation using U-Net with custom_f1 metric & Keras. The creation of the dataset is described in this article
- semantic segmentation model to identify newly developed or flooded land using NAIP imagery provided by the Chesapeake Conservancy, training on MS Azure
- Pix2Pix-for-Semantic-Segmentation-of-Satellite-Images -> using Pix2Pix GAN network to segment the building footprint from Satellite Images, uses tensorflow
- SpaceNetUnet -> Baseline model is U-net like, applied to SpaceNet Vegas data, using Keras
- Building footprint detection with fastai on the challenging SpaceNet7 dataset uses U-Net
- 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
- JointNet-A-Common-Neural-Network-for-Road-and-Building-Extraction
- Mapping Africa’s Buildings with Satellite Imagery: Google AI blog post
- nz_convnet -> A U-net based ConvNet for New Zealand imagery to classify building outlines
- polycnn -> End-to-End Learning of Polygons for Remote Sensing Image Classification
- spacenet_building_detection solution by motokimura using Unet
- How to extract building footprints from satellite images using deep learning
- Vec2Instance -> applied to the SpaceNet challenge AOI 2 (Vegas) building footprint dataset, tensorflow v1.12
- EarthquakeDamageDetection -> Buildings segmentation from satellite imagery and damage classification for each build, using Keras
- Semantic-segmentation repo by fuweifu-vtoo -> uses pytorch and the Massachusetts Buildings & Roads Datasets
- Extracting buildings and roads from AWS Open Data using Amazon SageMaker -> uses merged RGB (SpaceNet) and LiDAR (USGS 3DEP) datasets with Unet to reproduce the winning algorithm from SpaceNet challenge 4 by XD_XD. With repo
- 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
- Rooftop-Instance-Segmentation -> VGG-16, Instance Segmentation, uses the Airs dataset
- 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
- Remote-sensing-building-extraction-to-3D-model-using-Paddle-and-Grasshopper
- segmentation-enhanced-resunet -> Urban building extraction in Daejeon region using Modified Residual U-Net (Modified ResUnet) and applying post-processing
- Mask RCNN for Spacenet Off Nadir Building Detection
- 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
- UNET-Image-Segmentation-Satellite-Picture -> Unet to predict roof tops on Crowed AI Mapping dataset, uses keras
- Vector-Map-Generation-from-Aerial-Imagery-using-Deep-Learning-GeoSpatial-UNET -> applied to geo-referenced images which are very large size > 10k x 10k pixels
- 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
- Boundary Enhancement Semantic Segmentation for Building Extraction
- UNet_keras_for_RSimage -> keras code for binary semantic segmentation
- Spacenet-Building-Detection -> uses keras
- 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
- Models for Remote Sensing -> long list of unets etc applied to building detection
- boundary_loss_for_remote_sensing -> code for 2019 paper: Boundary Loss for Remote Sensing Imagery Semantic Segmentation
- Open Cities AI Challenge -> Segmenting Buildings for Disaster Resilience. Winning solutions on Github
- 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
Extracting roads is challenging due to the occlusions caused by other objects and the complex traffic environment
- Semantic segmentation of roads and highways using Sentinel-2 imagery (10m) super-resolved using the SENX4 model up to x4 the initial spatial resolution (2.5m) (results, no repo)
- Semantic Segmentation of roads using U-net Keras, OSM data, project summary article by student, no code
- Road detection using semantic segmentation and albumentations for data augmention using the Massachusetts Roads Dataset, U-net & Keras. With code
- Winning Solutions from SpaceNet Road Detection and Routing Challenge
- RoadVecNet -> Road-Network-Segmentation-and-Vectorization in keras with dataset and paper
- Detecting road and road types jupyter notebook
- 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.
- RoadTracer: Automatic Extraction of Road Networks from Aerial Images -> uses an iterative search process guided by a CNN-based decision function to derive the road network graph directly from the output of the CNN
- 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)
- Road-Network-Extraction using classical Image processing -> blur & canny edge detection
- SPIN_RoadMapper -> Extracting Roads from Aerial Images via Spatial and Interaction Space Graph Reasoning for Autonomous Driving
- road_extraction_remote_sensing -> pytorch implementation, CVPR2018 DeepGlobe Road Extraction Challenge submission. See also DeepGlobe-Road-Extraction-Challenge
- RoadDetections dataset by Microsoft
- 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
- ML_EPFL_Project_2 -> U-Net in Pytorch to perform semantic segmentation of roads on satellite images
- Satellite Imagery Road Segmentation -> intro articule on Medium using the kaggle Massachusetts Roads Dataset
- Label-Pixels -> for semantic segmentation of roads and other features
- Satellite-image-road-extraction -> code for 2018 paper: Road Extraction by Deep Residual U-Net
- road_building_extraction -> Pytorch implementation of U-Net architecture for road and building extraction
- Satellite-Imagery-Road-Extraction -> research project in keras
- 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
- Image-Segmentation) -> using Massachusetts Road dataset and fast.ai
- RoadTracer-M -> code for 2019 paper: Road Network Extraction from Satellite Images Using CNN Based Segmentation and Tracing
- ScRoadExtractor -> code for 2020 paper: Scribble-based Weakly Supervised Deep Learning for Road Surface Extraction from Remote Sensing Images
- RoadDA -> code for 2021 paper: Stagewise Unsupervised Domain Adaptation with Adversarial Self-Training for Road Segmentation of Remote Sensing Images
- DeepSegmentor -> A Pytorch implementation of DeepCrack and RoadNet projects
- Cascade_Residual_Attention_Enhanced_for_Refinement_Road_Extraction -> code for 2021 paper: Cascaded Residual Attention Enhanced Road Extraction from Remote Sensing Images
- nia-road-baseline -> code for 2020 paper: NL-LinkNet: Toward Lighter but More Accurate Road Extraction with Non-Local Operations
- IRSR-net -> code for 2022 paper: Lightweight Remote Sensing Road Detection Network
- Сrор field boundary detection: approaches overview and main challenges - review article, no code
- 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
- What’s growing there? Identify crops from multi-spectral remote sensing data (Sentinel 2) using eo-learn for data pre-processing, cloud detection, NDVI calculation, image augmentation & fastai
- Tree species classification from from airborne LiDAR and hyperspectral data using 3D convolutional neural networks accompanies research paper and uses fastai
- 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)
- Find sports fields using Mask R-CNN and overlay on open-street-map
- An LSTM to generate a crop mask for Togo
- DeepSatModels -> Code for paper "Context-self contrastive pretraining for crop type semantic segmentation"
- farm-pin-crop-detection-challenge -> Using eo-learn and fastai to identify crops from multi-spectral remote sensing data
- Detecting Agricultural Croplands from Sentinel-2 Satellite Imagery -> We developed UNet-Agri, a benchmark machine learning model that classifies croplands using open-access Sentinel-2 imagery at 10m spatial resolution
- DeepTreeAttention -> Implementation of Hang et al. 2020 "Hyperspectral Image Classification with Attention Aided CNNs" for tree species prediction
- Crop-Classification -> crop classification using multi temporal satellite images
- ParcelDelineation -> using a French polygons dataset and unet in keras
- crop-mask -> End-to-end workflow for generating high resolution cropland maps, uses GEE & LSTM model
- DeepCropMapping -> A multi-temporal deep learning approach with improved spatial generalizability for dynamic corn and soybean mapping, uses LSTM
- Segment Canopy Cover and Soil using NDVI and Rasterio
- Use KMeans clustering to segment satellite imagery by land cover/land use
- 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
- global-cropland-mapping -> global multi-temporal cropland mapping
- U-Net for Semantic Segmentation of Soyabean Crop Fields with SAR images
- UNet-RemoteSensing -> uses 7 bands of Landsat and keras
- 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
- UNSOAT used fastai to train a Unet to perform semantic segmentation on satellite imageries to detect water - paper + notebook, accuracy 0.97, precision 0.91, recall 0.92
- Semi-Supervised Classification and Segmentation on High Resolution Aerial Images - Solving the FloodNet problem
- Flood Detection and Analysis using UNET with Resnet-34 as the back bone uses fastai
- 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
- A comprehensive guide to getting started with the ETCI Flood Detection competition -> using Sentinel1 SAR & pytorch
- Map Floodwater of SAR Imagery with SageMaker -> applied to Sentinel-1 dataset
- 1st place solution for STAC Overflow: Map Floodwater from Radar Imagery hosted by Microsoft AI for Earth -> combines Unet with Catboostclassifier, taking their maxima, not the average
- hydra-floods -> an open source Python application for downloading, processing, and delivering surface water maps derived from remote sensing data
- CoastSat -> tool for mapping coastlines which has an extension CoastSeg using segmentation models
- Satellite_Flood_Segmentation_of_Harvey -> explores both deep learning and traditional kmeans
- Flood Event Detection Utilizing Satellite Images
- ETCI-2021-Competition-on-Flood-Detection -> Experiments on Flood Segmentation on Sentinel-1 SAR Imagery with Cyclical Pseudo Labeling and Noisy Student Training, with arxiv paper
- FDSI -> Flood Detection in Satellite Images - 2017 Multimedia Satellite Task
- deepwatermap -> a deep model that segments water on multispectral images
- rivamap -> an automated river analysis and mapping engine
- deep-water -> track changes in water level
- WatNet -> A deep ConvNet for surface water mapping based on Sentinel-2 image, uses the Earth Surface Water Dataset
- A-U-Net-for-Flood-Extent-Mapping -> in keras
- Wild Fire Detection using U-Net trained on Databricks & Keras, semantic segmentation
- A Practical Method for High-Resolution Burned Area Monitoring Using Sentinel-2 and VIIRS with code. Dataset created on Google Earth Engine, downloaded to local machine for model training using fastai. The BA-Net model used is much smaller than U-Net, resulting in lower memory requirements and a faster computation
- AI Geospatial Wildfire Risk Prediction -> A predictive model using geospatial raster data to asses wildfire hazard potential over the contiguous United States using Unet
- IndustrialSmokePlumeDetection -> using Sentinel-2 & a modified ResNet-50
- burned-area-detection -> uses Sentinel-2
- rescue -> code of the paper: Attention to fires: multi-channel deep-learning models forwildfire severity prediction
- smoke_segmentation -> Segmenting smoke plumes and predicting density from GOES imagery
- wildfire-detection -> Using Vision Transformers for enhanced wildfire detection in satellite images
- Burned_Area_Detection -> Detecting Burned Areas with Sentinel-2 data
- landslide4sense -> a competition focused on landslide detection using globally distributed multi-source satellite imagery. Baseline solution unet
- landslide-mapping-with-cnn -> code for 2021 paper: A new strategy to map landslides with a generalized convolutional neural network
- 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
- Detection of Open Landfills -> uses Sentinel-2 to detect large changes in the Normalized Burn Ratio (NBR)
- sea_ice_remote_sensing -> Sea Ice Concentration classification
- DeepSolar -> A Machine Learning Framework to Efficiently Construct a Solar Deployment Database in the United States. Dataset on kaggle, actually used a CNN for classification and segmentation is obtained by applying a threshold to the activation map. Original code is tf1 but tf2/kers and a pytorch implementation are available. Also checkout Visualizations and in-depth analysis .. of the factors that can explain the adoption of solar energy in .. Virginia
- 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"
- solar-panels-detection -> using SegNet, Fast SCNN & ResNet
- 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
- Predicting the Solar Potential of Rooftops using Image Segmentation and Structured Data Medium article, using 20cm imagery & Unet
- 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-panel-segmentation) -> Finding solar panels using USGS satellite 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
The repos below resulted from the ICETCI 2021 competition on Machine Learning based feature extraction of Electrical Substations from Satellite Data using Open Source Tools
- Aarsh2001/ML_Challenge_NRSC -> 3rd place entry
- Electrical-Substation-detection-by-fine-tunning-Segnet-Architecture -> 9th place entry
- electrical_substation_detection -> entry using UNet, Albumentations for image augmentation, and OpenCV for computer vision tasks
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
- count-sea-lion -> uses keras & Count-ception network
- 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
- Cassava Crop Counting
- Counting from Sky -> A Large-scale Dataset for Remote Sensing Object Counting and A Benchmark Method
- PSGCNet -> code for 2022 paper: PSGCNet: A Pyramidal Scale and Global Context Guided Network for Dense Object Counting in Remote Sensing Images
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
- Instance segmentation of center pivot irrigation system in Brazil using free Landsat images, mask R-CNN & Keras
- Oil tank instance segmentation with Mask R-CNN with accompanying article using Keras & Airbus Oil Storage Detection Dataset on Kaggle
- Building-Detection-MaskRCNN -> Building detection from the SpaceNet dataset by using Mask RCNN
- Mask RCNN for Spacenet Off Nadir Building Detection
- Mask_RCNN-for-Caravans -> detect caravan footprints from OS imagery
- parking_bays_detectron2 -> Detecting parking bays with satellite imagery. Used Detectron2 and synthetic data with Unreal, superior performance to using Mask RCNN
- Locate buildings with a dark roof that feed heat island phenomenon using Mask RCNN -> with repo, used INRIA dataset & labelme for annotation
- Circle_Finder -> Circular Shapes Detection in Satellite Imagery, 2nd place solution to the Circle Finder Challenge
- Lawn_maskRCNN -> Detecting lawns from satellite images of properties in the Cedar Rapids area using Mask-R-CNN
- CropMask_RCNN -> Segmenting center pivot agriculture to monitor crop water use in drylands with Mask R-CNN and Landsat satellite imagery
- Mask RCNN for Spacenet Off Nadir Building Detection
- CATNet -> code for 2021 paper: Learning to Aggregate Multi-Scale Context for Instance Segmentation in Remote Sensing Images
- Object-Detection-on-Satellite-Images-using-Mask-R-CNN -> detect ships
- Things and stuff or how remote sensing could benefit from panoptic segmentation
- Panoptic Segmentation Meets Remote Sensing (paper)
- pastis-benchmark
- 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
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 detecion 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.
- Background reading: Anchor Boxes for Object Detection
- Object Detection and Image Segmentation with Deep Learning on Earth Observation Data: A Review
- awesome-aerial-object-detection bu murari023, another by visionxiang and awesome-tiny-object-detection list many relevant papers
- Tackling the Small Object Problem in Object Detection
- Object Detection Accuracy as a Function of Image Resolution -> Medium article using COWC dataset, performance rapidly degrades below 30cm imagery
- 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
- Tensorflow Benchmarks for Object Detection in Aerial Images -> tensorflow-based codebase created to build benchmarks for object detection in aerial images
- Pytorch Benchmarks for Object Detection in Aerial Images -> pytorch-based codebase created to build benchmarks for object detection in aerial images using mmdetection
- ASPDNet -> Counting dense objects in remote sensing images, arxiv paper
- xview-yolov3 -> xView 2018 Object Detection Challenge: YOLOv3 Training and Inference
- Faster RCNN for xView satellite data challenge
- 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
- Object detection on Satellite Imagery using RetinaNet -> using the Kaggle Swimming Pool and Car Detection dataset
- Object Detection Satellite Imagery Multi-vehicles Dataset (SIMD) -> RetinaNet,Yolov3 and Faster RCNN for multi object detection on satellite images dataset
- 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
- pool-detection-from-aerial-imagery -> Use Icevision and Detectron2 to detect swimming pools from aerial imagery
- Electric-Pylon-Detection-in-RSI -> a dataset which contains 1500 remote sensing images of electric pylons used to train ten deep learning models
- Synthesizing Robustness YOLTv4 Results Part 2: Dataset Size Requirements and Geographic Insights -> quantify how much harder rare objects are to localize
- IS-Count -> IS-Count is a sampling-based and learnable method for estimating the total object count in a region.
- Object Detection On Aerial Imagery Using RetinaNet -> ESRI Data Science Challenge 2019 3rd place solution
- Clustered-Object-Detection-in-Aerial-Image
- yolov5s_for_satellite_imagery -> yolov5s applied to the DOTA dataset
- 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
- Object-Detection-YoloV3-RetinaNet-FasterRCNN -> trained on a private datset
- Google-earth-Object-Recognition -> Code for training and evaluating on Dior Dataset (Google Earth Images) using RetinaNet and YOLOV5
- AI-TOD -> a dataset for tiny object detection in aerial images. The mean size of objects in AI-TOD is about 12.8 pixels, which is much smaller than other datasets
- 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
- Detection of Multiclass Objects in Optical Remote Sensing Images -> code for 2018 paper: Detection of Multiclass Objects in Optical Remote Sensing Images
- 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
- Panchromatic to Multispectral: Object Detection Performance as a Function of Imaging Bands -> Medium article, concludes that more bands are not always beneficial, but likely varies by use case
- OPLD-Pytorch -> code for 2020 paper: Learning Point-Guided Localization for Detection in Remote Sensing Images
- F3Net -> code for 2020 paper: Feature Fusion and Filtration Network for Object Detection in Optical Remote Sensing Images
- GLNet -> code for 2021 paper: Global to Local: Clip-LSTM-Based Object Detection From Remote Sensing Images
- SRAF-Net -> code for 2021 paper: A Scene-Relevant Anchor-Free Object Detection Network in Remote Sensing Images
- object_detection_in_remote_sensing_images -> using CNN and attention mechanism
- SHAPObjectDetection -> code for 2022 paper: SHAP-Based Interpretable Object Detection Method for Satellite Imagery
- NWD -> code for 2021 paper: A Normalized Gaussian Wasserstein Distance for Tiny Object Detection. Uses AI-TOD dataset
- OBB: orinted bounding boxes are polygons representing rotated rectangles
- For datasets checkout DOTA & HRSC2016
- mmrotate -> Rotated Object Detection Benchmark, with pretrained models and function for inferencing on very large images
- OBBDetection -> an oriented object detection library, which is based on MMdetection
- rotate-yolov3 -> Rotation object detection implemented with yolov3. Also see yolov3-polygon
- DRBox -> for detection tasks where the objects are orientated arbitrarily, e.g. vehicles, ships and airplanes
- s2anet -> Official code of the paper 'Align Deep Features for Oriented Object Detection'
- CFC-Net -> Official implementation of "CFC-Net: A Critical Feature Capturing Network for Arbitrary-Oriented Object Detection in Remote Sensing Images"
- ReDet -> Official code of the paper "ReDet: A Rotation-equivariant Detector for Aerial Object Detection"
- BBAVectors-Oriented-Object-Detection -> Oriented Object Detection in Aerial Images with Box Boundary-Aware Vectors
- CSL_RetinaNet_Tensorflow -> Code for ECCV 2020 paper: Arbitrary-Oriented Object Detection with Circular Smooth Label
- r3det-on-mmdetection -> R3Det: Refined Single-Stage Detector with Feature Refinement for Rotating Object
- R-DFPN_FPN_Tensorflow -> Rotation Dense Feature Pyramid Networks (Tensorflow)
- R2CNN_Faster-RCNN_Tensorflow -> Rotational region detection based on Faster-RCNN
- Rotated-RetinaNet -> implemented in pytorch, it supports the following datasets: DOTA, HRSC2016, ICDAR2013, ICDAR2015, UCAS-AOD, NWPU VHR-10, VOC2007
- OBBDet_Swin -> The sixth place winning solution in 2021 Gaofen Challenge
- CG-Net -> Learning Calibrated-Guidance for Object Detection in Aerial Images
- OrientedRepPoints_DOTA -> Oriented RepPoints + Swin Transformer/ReResNet
- yolov5_obb -> yolov5 + Oriented Object Detection
- How to Train YOLOv5 OBB -> YOLOv5 OBB tutorial and YOLOv5 OBB noteboook
- OHDet_Tensorflow -> can be applied to rotation detection and object heading detection
- Seodore -> framework maintaining recent updates of mmdetection
- Rotation-RetinaNet-PyTorch -> oriented detector Rotation-RetinaNet implementation on Optical and SAR ship dataset
- AIDet -> an open source object detection in aerial image toolbox based on MMDetection
- rotation-yolov5 -> rotation detection based on yolov5
- ShipDetection -> Ship Detection in HR Optical Remote Sensing Images via Rotated Bounding Box, based on Faster R-CNN and ORN, uses caffe
- SLRDet -> project based on mmdetection to reimplement RRPN and use the model Faster R-CNN OBB
- AxisLearning -> code for 2020 paper: Axis Learning for Orientated Objects Detection in Aerial Images
- Detection_and_Recognition_in_Remote_Sensing_Image -> This work uses PaNet to realize Detection and Recognition in Remote Sensing Image by MXNet
- 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
- 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
- piou -> Orientated Object Detection; IoU Loss, applied to DOTA dataset
- DAFNe -> code for 2021 paper: DAFNe: A One-Stage Anchor-Free Approach for Oriented Object Detection
- Super-Resolution and Object Detection -> Super-resolution is a relatively inexpensive enhancement that can improve object detection performance
- EESRGAN -> Small-Object Detection in Remote Sensing Images with End-to-End Edge-Enhanced GAN and Object Detector Network
- Mid-Low Resolution Remote Sensing Ship Detection Using Super-Resolved Feature Representation
- 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
Detecting the most noticeable or important object in a scene
- ACCoNet -> 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
- Reading list for deep learning based Salient Object Detection in Optical Remote Sensing Images
- ORSSD-dataset -> salient object detection dataset
- EORSSD-dataset -> Extended Optical Remote Sensing Saliency Detection (EORSSD) Dataset
- DAFNet_TIP20 -> code for 2020 paper: Dense Attention Fluid Network for Salient Object Detection in Optical Remote Sensing Images
- EMFINet -> code for 2021 paper: Edge-Aware Multiscale Feature Integration Network for Salient Object Detection in Optical Remote Sensing Images
- ERPNet -> code for 2022 paper: Edge-guided Recurrent Positioning Network for Salient Object Detection in Optical Remote Sensing Images
- FSMINet -> code for 2022 paper: Fully Squeezed Multi-Scale Inference Network for Fast and Accurate Saliency Detection in Optical Remote Sensing Images
- Machine Learning For Rooftop Detection and Solar Panel Installment discusses tiling large images and generating annotations from OSM data. Features of the roofs were calculated using a combination of contour detection and classification. Follow up article using semantic segmentation
- Building Extraction with YOLT2 and SpaceNet Data
- AIcrowd dataset of building outlines -> 300x300 pixel RGB images with annotations in MS-COCO format
- XBD-hurricanes -> Models for building (and building damage) detection in high-resolution (<1m) satellite and aerial imagery using a modified RetinaNet model
- Detecting solar panels from satellite imagery using segmentation
- ssd-spacenet -> Detect buildings in the Spacenet dataset using Single Shot MultiBox Detector (SSD)
- 3DBuildingInfoMap -> simultaneous extraction of building height and footprint from Sentinel imagery using ResNet
- Solar Panel Detection -> using Faster R-CNN & Tensorflow object detection API. With repo
- DeepSolaris -> a EuroStat project to detect solar panels in aerial images, further material here
- ML_ObjectDetection_CAFO -> Detect Concentrated Animal Feeding Operations (CAFO) in Satellite Imagery
- Multi-level-Building-Detection-Framework -> code for 2018 paper: Multilevel Building Detection Framework in Remote Sensing Images Based on Convolutional Neural Networks
- satellite_image_tinhouse_detector -> Detection of tin houses from satellite/aerial images using the Tensorflow Object Detection API
- Automatic Damage Annotation on Post-Hurricane Satellite Imagery -> detect damaged buildings using tensorflow object detection API. With repos here and here
- Also see the kaggle competition run by Airbus
- How hard is it for an AI to detect ships on satellite images?
- Object Detection in Satellite Imagery, a Low Overhead Approach
- Detecting Ships in Satellite Imagery using the Planet dataset and Keras
- Planet use non DL felzenszwalb algorithm to detect ships
- Ship detection using k-means clustering & CNN classifier on patches
- sentinel2-xcube-boat-detection -> detect and count boat traffic in Sentinel-2 imagery using temporal, spectral and spatial features
- Arbitrary-Oriented Ship Detection through Center-Head Point Extraction -> arxiv paper. Keypoint estimation is performed to find the center of ships. Then, the size and head point of the ships are regressed. Repo ASD
- ship_detection -> using an interesting combination of CNN classifier, Class Activation Mapping (CAM) & UNET segmentation. Accompanying three part blog post
- Building a complete Ship detection algorithm using YOLOv3 and Planet satellite images -> covers finding and annotating data (using LabelMe), preprocessing large images into chips, and training Yolov3. Repo
- Ship-detection-in-satellite-images -> experiments with UNET, YOLO, Mask R-CNN, SSD, Faster R-CNN, RETINA-NET
- Ship-Detection-from-Satellite-Images-using-YOLOV4 -> uses Kaggle Airbus Ship Detection dataset
- kaggle-airbus-ship-detection-challenge -> using oriented SSD
- shipsnet-detector -> Detect container ships in Planet imagery using machine learning
- Classifying Ships in Satellite Imagery with Neural Networks -> applied to the Kaggle Ships in Satellite Imagery dataset
- Mask R-CNN for Ship Detection & Segmentation blog post with repo
- contrastive_SSL_ship_detection -> Contrastive self supervised learning for ship detection in Sentinel 2 images
- Boat detection with multi-region-growing method in satellite images
- 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-Classification-in-Satellite-Images -> Convolutional neural network model for ship classification in satellite images
- 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
- marine-debris-ml-model -> Marine Debris Detection using tensorflow object detection 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
- Histogram of Oriented Gradients (HOG) Boat Heading Classification -> Medium article
- 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
- 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
- cowc_car_counting -> car counting on the Cars Overhead With Context (COWC) dataset. Not sctictly object detection but a CNN to predict the car count in a tile
- CarCounting -> using Yolov3 & COWC dataset
- Traffic density estimation as a regression problem instead of object detection -> inspired by this paper
- Applying Computer Vision to Railcar Detection -> useful insights into counting railcars (i.e. train carriages) using Mask-RCNN with rotated bounding boxes output
- Leveraging Deep Learning for Vehicle Detection And Classification
- Detection of parkinglots and driveways with retinanet
- pytorch-vedai -> object detection on the VEDAI dataset: Vehicle Detection in Aerial Imagery
- Rotation-EfficientDet-D0 -> PyTorch implementation of Rotated EfficientDet, applied to a custom rotation vehicle dataset (car counting)
- RSVC2021-Dataset -> A dataset for Vehicle Counting in Remote Sensing images, created from the DOTA & ITCVD Datasets
- Car Localization and Counting with Overhead Imagery, an Interactive Exploration -> Medium article by Adam Van Etten
- yoltv4 includes examples on the RarePlanes dataset
- 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
- rareplanes-yolov5 -> using YOLOv5 and the RarePlanes dataset to detect and classify sub-characteristics of aircraft
- detecting-aircrafts-on-airbus-pleiades-imagery-with-yolov5
- Using Detectron2 to segment aircraft from satellite imagery -> pytorch and Rare Planes
- Faster RCNN to detect airplanes
- aircraft-detection-from-satellite-images-yolov3 -> trained on kaggle cgi-planes-in-satellite-imagery-w-bboxes dataset
- HRPlanesv2-Data-Set -> YOLOv4 and YOLOv5 weights trained on the HRPlanesv2 dataset
- Deep-Learning-for-Aircraft-Recognition -> A CNN model trained to classify and identify various military aircraft through satellite imagery
- FRCNN-for-Aircraft-Detection -> faster-rcnn & keras
- 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
- wind-turbine-detector -> Wind Turbine Object Detection from Aerial Imagery Using TensorFlow Object Detection API
- Water Tanks and Swimming Pools Detection -> uses Faster R-CNN
A variety of techniques can be used to count animals, including object detection and instance segmentation. For convenience they are all listed here:
- cownter_strike -> counting cows, located with point-annotations, two models: CSRNet (a density-based method) & LCFCN (a detection-based method)
- elephant_detection -> Using Keras-Retinanet to detect elephants from aerial images
- CNN-Mosquito-Detection -> determining the locations of potentially dangerous breeding grounds, compared YOLOv4, YOLOR & YOLOv5
- Borowicz_etal_Spacewhale -> locate whales using ResNet
- walrus-detection-and-count -> uses Mask R-CNN instance segmentation
- Object Tracking in Satellite Videos Based on a Multi-Frame Optical Flow Tracker arxiv paper
- CFME -> Object Tracking in Satellite Videos by Improved Correlation Filters With Motion Estimations
- TGraM -> code and dataset for 2022 paper: Multi-Object Tracking in Satellite Videos with Graph-Based Multi-Task Modeling
- satellite_video_mod_groundtruth -> groundtruth on satellite video for evaluating moving object detection algorithm
- ThickSiam -> High-resolution Satellite Video Object Tracking Based on ThickSiam Framework
- Moving-object-detection-DSFNet -> code for 2021 paper: DSFNet: Dynamic and Static Fusion Network for Moving Object Detection in Satellite Videos
- DeepForest is a python package for training and predicting individual tree crowns from airborne RGB imagery
- Official repository for the "Identifying trees on satellite images" challenge from Omdena
- Counting-Trees-using-Satellite-Images -> create an inventory of incoming and outgoing trees for an annual tree inspections, uses keras & semantic segmentation
- 2020 Nature paper - An unexpectedly large count of trees in the West African Sahara and Sahel -> tree detection framework based on U-Net & tensorflow 2 with code here
- TreeDetection -> A color-based classifier to detect the trees in google image data along with tree visual localization and crown size calculations via OpenCV
Oil is stored in tanks at many points between extraction and sale, and the volume of oil in storage is an important economic indicator.
- A Beginner’s Guide To Calculating Oil Storage Tank Occupancy With Help Of Satellite Imagery
- Oil Storage Tank’s Volume Occupancy On Satellite Imagery Using YoloV3 with repo
- Oil-Tank-Volume-Estimation -> combines object detection and classical computer vision
- 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.
- Oil tank instance segmentation with Mask R-CNN with accompanying article using Keras & Airbus Oil Storage Detection Dataset on Kaggle
- https://www.kaggle.com/towardsentropy/oil-storage-tanks -> large kaggle dataset, note however that approx 85% of images contain no tanks
- https://www.kaggle.com/airbusgeo/airbus-oil-storage-detection-dataset -> smaller kaggle dataset
- ognet -> a Global Oil and Gas Infrastructure Database using Deep Learning on Remotely Sensed Imagery
- RSOD-Dataset -> dataset for object detection in PASCAL VOC format. Aircraft, playgrounds, overpasses & oiltanks
- oil_storage-detector -> using yolov5 and the Airbus Oil Storage Detection dataset
- oil_well_detector -> detect oil wells in the Bakken oil field based on satellite imagery
- OGST -> Oil and Gas Tank Dataset
- AContrarioTankDetection -> code for 2020 paper: Oil Tank Detection in Satellite Images via a Contrario Clustering
- SubpixelCircleDetection -> code for 2020 paper: CIRCULAR-SHAPED OBJECT DETECTION IN LOW RESOLUTION SATELLITE IMAGES
- Oil Storage Detection on Airbus Imagery with YOLOX -> uses the Kaggle Airbus Oil Storage Detection dataset
Generally treated as a semantic segmentation problem or custom features created using band math
- See section Kaggle - Understanding Clouds from Satellite 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.
- Segmentation of Clouds in Satellite Images Using Deep Learning -> semantic segmentation using a Unet on the Kaggle 38-cloud Landsat dataset
- Cloud Detection in Satellite Imagery compares FPN+ResNet18 and CheapLab architectures on Sentinel-2 L1C and L2A imagery
- Cloud-Removal-with-GAN-Satellite-Image-Processing
- Benchmarking Deep Learning models for Cloud Detection in Landsat-8 and Sentinel-2 images
- Landsat-8 to Proba-V Transfer Learning and Domain Adaptation for Cloud detection
- Multitemporal Cloud Masking in Google Earth Engine
- s2cloudmask -> Sentinel-2 Cloud and Shadow Detection using Machine Learning
- sentinel2-cloud-detector -> Sentinel Hub Cloud Detector for Sentinel-2 images in Python
- 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
- satellite-cloud-removal-dip -> Satellite cloud removal with Deep Image Prior, with paper
- 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
- HOW TO USE DEEP LEARNING, PYTORCH LIGHTNING, AND THE PLANETARY COMPUTER TO PREDICT CLOUD COVER IN SATELLITE IMAGERY
- cloud-cover-winners -> Code from the winning submissions for the On Cloud N: Cloud Cover Detection Challenge
- On-Cloud-N: Cloud Cover Detection Challenge - 19th Place Solution
- 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
- Cloud-Net: A semantic segmentation CNN for cloud detection -> an end-to-end cloud detection algorithm for Landsat 8 imagery, trained on 38-Cloud Training Set
- fcd -> code for 2021 paper: Fixed-Point GAN for Cloud Detection. A weakly-supervised approach, training with only image-level labels
- CloudX-Net -> an efficient and robust architecture used for detection of clouds from satellite images
- A simple cloud-detection walk-through using Convolutional Neural Network (CNN and U-Net) and fast.ai library
- 38Cloud-Medium -> Walk-through using u-net to detect clouds in satellite images with fast.ai
- cloud_detection_using_satellite_data -> performed on Sentinel 2 data
- 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
- cloud-removal-deploy -> flask app for cloud removal
- 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
- Detecting Cloud Cover Via Sentinel-2 Satellite Data -> blog post on Benjamin Warners Top-10 Percent Solution to DrivenData’s On CloudN Competition using fast.ai & customized version of XResNeXt50. Repo
- AISD -> code (Matlab) and dataset for 2020 paper: Deeply supervised convolutional neural network for shadow detection based on a novel aerial shadow imagery dataset
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..!
- awesome-remote-sensing-change-detection lists many datasets and publications
- Change-Detection-Review -> A review of change detection methods, including code and open data sets for deep learning
- Unsupervised Changed Detection in Multi-Temporal Satellite Images using PCA & K-Means -> python 2
- Unstructured-change-detection-using-CNN
- Siamese neural network to detect changes in aerial images -> uses Keras and VGG16 architecture
- Change Detection in 3D: Generating Digital Elevation Models from Dove Imagery
- QGIS plugin for applying change detection algorithms on high resolution satellite imagery
- LamboiseNet -> Master thesis about change detection in satellite imagery using Deep Learning
- Fully Convolutional Siamese Networks for Change Detection -> with paper
- Urban Change Detection for Multispectral Earth Observation Using Convolutional Neural Networks -> with paper, used the Onera Satellite Change Detection (OSCD) dataset
- 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
- Self-supervised Change Detection in Multi-view Remote Sensing Images
- MFPNet -> Remote Sensing Change Detection Based on Multidirectional Adaptive Feature Fusion and Perceptual Similarity
- GitHub for the DIUx xView Detection Challenge -> The xView2 Challenge focuses on automating the process of assessing building damage after a natural disaster
- DASNet -> Dual attentive fully convolutional siamese networks for change detection of high-resolution satellite images
- Self-Attention for Raw Optical Satellite Time Series Classification
- 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
- A deeply supervised image fusion network for change detection in high resolution bi-temporal remote sening images
- Satellite-Image-Alignment-Differencing-and-Segmentation -> thesis on change detection
- Change Detection in Multi-temporal Satellite Images -> uses Principal Component Analysis (PCA) and K-means clustering
- Unsupervised Change Detection Algorithm using PCA and K-Means Clustering -> in Matlab but has paper
- 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
- Heterogeneous_CD -> Heterogeneous Change Detection in Remote Sensing Images. Accompanies Code-Aligned Autoencoders for Unsupervised Change Detection in Multimodal Remote Sensing Images
- 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 -> Pytorch codes of paper: Bi-Temporal Semantic Reasoning for the Semantic Change Detection in HR Remote Sensing 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
- 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
- Change-Detection-in-Remote-Sensing-Images -> using PCA & K-means
- End-to-end-CD-for-VHR-satellite-image -> code for 2019 paper: End-to-End Change Detection for High Resolution Satellite Images Using Improved UNet++
- 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
- Unsupervised-Remote-Sensing-Change-Detection -> code for 2021 paper: An Unsupervised Remote Sensing Change Detection Method Based on Multiscale Graph Convolutional Network and Metric Learning
- CropLand-CD -> code for 2022 paper: A CNN-transformer Network with Multi-scale Context Aggregation for Fine-grained Cropland Change Detection
- contrastive-surface-image-pretraining -> code for 2022 paper: Supervising Remote Sensing Change Detection Models with 3D Surface Semantics
- 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_FDNY -> Damage assessment using pre and post orthoimagery. Fifth-place model from the DIU xView2 competition
- 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
- SentinelClearcutDetection -> Scripts for deforestation detection on the Sentinel-2 Level-A images
- clearcut_detection -> research & web-service for clearcut detection
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
- LANDSAT Time Series Analysis for Multi-temporal Land Cover Classification using Random Forest
- 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
- Classification of Crop Fields through Satellite Image Time Series -> using a pytorch-psetae & Sentinel-2 data
- 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
- Crop yield Prediction with Deep Learning -> code for the paper Deep Gaussian Process for Crop Yield Prediction Based on Remote Sensing Data
- Deep-Transfer-Learning-Crop-Yield-Prediction
- 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
- Building a Crop Yield Prediction App in Senegal Using Satellite Imagery and Jupyter Voila
- Crop Yield Prediction Using Deep Neural Networks and LSTM
- Deep transfer learning techniques for crop yield prediction, published in COMPASS 2018
- Understanding crop yield predictions from CNNs
- Advanced Deep Learning Techniques for Predicting Maize Crop Yield using Sentinel-2 Satellite Imagery
- pycrop-yield-prediction -> A PyTorch Implementation of Jiaxuan You's Deep Gaussian Process for Crop Yield Prediction
- PredictYield -> using data scraped from Google Earth Engine, this predicts the yield of Corn, Soybean, and Wheat in the USA with Keras
- Crop-Yield-Prediction-and-Estimation-using-Time-series-remote-sensing-data -> student research
The goal is to predict economic activity from satellite imagery rather than conducting labour intensive ground surveys
- Using publicly available satellite imagery and deep learning to understand economic well-being in Africa, Nature Comms 22 May 2020 -> Used CNN on Ladsat imagery (night & day) to predict asset wealth of African villages
- Combining Satellite Imagery and machine learning to predict poverty -> review article
- Measuring Human and Economic Activity from Satellite Imagery to Support City-Scale Decision-Making during COVID-19 Pandemic -> arxiv article
- Predicting Food Security Outcomes Using CNNs for Satellite Tasking -> arxiv article
- Measuring the Impacts of Poverty Alleviation Programs with Satellite Imagery and Deep Learning -> code and paper
- Building a Spatial Model to Classify Global Urbanity Levels -> estimage global urbanity levels from population data, nightime lights and road networks
- deeppop -> Deep Learning Approach for Population Estimation from Satellite Imagery, also on Github
- Estimating telecoms demand in areas of poor data availability -> with papers on arxiv and Science Direct
- 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
- Cancer-Prevalence-Satellite-Images -> Predict Health Outcomes from Features of Satellite Images
- Mapping Poverty in Bangladesh with Satellite Images and Deep Learning -> combines health data with OpenStreetMaps Data & night and daytime satellite imagery
- Population Estimation from Satellite Imagery
- 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
Also checkout the sections on change detection and water/fire/building segmentation
- DisaVu -> combines building & damage detection and provides an app for viewing predictions
- Soteria -> uses machine learning with satellite imagery to map natural disaster impacts for faster emergency response
- DisasterHack -> Wildfire Mitigation: Computer Vision Identification of Hazard Fuels Using Landsat
- forestcasting -> Forest fire prediction powered by analytics
- Machine Learning-based Damage Assessment for Disaster Relief on Google AI blog -> uses object detection to locate buildings, then a classifier to determine if a building is damaged. Challenge of generalising due to small dataset
- 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
- hurricane_damage -> Post-hurricane structure damage assessment based on aerial imagery with CNN
- rescue -> code of the paper: Attention to fires: multi-channel deep-learning models forwildfire severity prediction
- Disaster-Classification -> A disaster classification model to predict the type of disaster given an input image, trained on this dataset
- Coarse-to-fine weakly supervised learning method for green plastic cover segmentation -> with paper
- Detection of destruction in satellite imagery
- BDD-Net -> code for 2020 paper: A General Protocol for Mapping Buildings Damaged by a Wide Range of Disasters Based on Satellite Imagery
- Automatic_Disaster_Detection -> detect the affected area by natural disasters by using the way of semantic segmentation and change detection method
- Flooding Damage Detection from Post-Hurricane Satellite Imagery Based on Convolutional Neural Networks
- IBM-Disaster-Response-Hack -> identifying optimal terrestrial routes through calamity-stricken areas. Satellite image data informs road condition assessment and obstruction detection
- Automatic Damage Annotation on Post-Hurricane Satellite Imagery -> detect damaged buildings using tensorflow object detection API. With repos here and here
- Hurricane-Damage-Detection -> Waterloo's Hack the North 2020++ submission. A convolutional neural network model used to detect hurricane damage in RGB satellite images
- 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 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. For an introduction to this topic read this excellent article. Note that super resolution techniques are generally grouped into single image super resolution (SISR) or a multi image super resolution (MISR) which is typically applied to video frames.
- Super-Resolution on Satellite Imagery using Deep Learning -> Nov 2016 blog post by CosmiQ Works with a nice introduction to the topic. Proposes and demonstrates a new architecture with perturbation layers with practical guidance on the methodology and code. Three part series
- Introduction to spatial resolution
- Awesome-Super-Resolution -> another 'awesome' repo, getting a little out of date now
- Super-Resolution (python) Utilities for managing large satellite images
- pytorch-enhance -> Library of Image Super-Resolution Models, Datasets, and Metrics for Benchmarking or Pretrained Use. Also checkout this implementation in Jax
- Super Resolution in OpenCV
- AI-based Super resolution and change detection to enforce Sentinel-2 systematic usage -> Worldview-2 images (2m) were used to create a reference dataset and increase the spatial resolution of the Copernicus sensor from 10m to 5m
- 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
- Model-Guided Deep Hyperspectral Image Super-resolution -> code accompanying the paper Model-Guided Deep Hyperspectral Image Super-Resolution
- Super-resolving beyond satellite hardware -> paper assessing SR performance in reconstructing realistically degraded satellite images
- 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
- Super Resolution for Satellite Imagery - srcnn repo
- TensorFlow implementation of "Accurate Image Super-Resolution Using Very Deep Convolutional Networks" adapted for working with geospatial data
- Random Forest Super-Resolution (RFSR repo) including sample data
- Enhancing Sentinel 2 images by combining Deep Image Prior and Decrappify. Repo for deep-image-prior and article on decrappify
- Image Super-Resolution using an Efficient Sub-Pixel CNN -> the keras docs have a great tutorial on this light weight but well performing model
- super-resolution-using-gan -> Super-Resolution of Sentinel-2 Using Generative Adversarial Networks
- Super-resolution of Multispectral Satellite Images Using Convolutional Neural Networks with paper
- Multi-temporal Super-Resolution on Sentinel-2 Imagery using HighRes-Net, repo
- SSPSR-Pytorch -> A spatial-spectral prior deep network for single hyperspectral image super-resolution
- Sentinel-2 Super-Resolution: High Resolution For All (Bands)
- CinCGAN -> Unofficial Implementation of Unsupervised Image Super-Resolution using Cycle-in-Cycle Generative Adversarial Networks
- Satellite-image-SRGAN using PyTorch
- EEGAN -> Edge Enhanced GAN For Remote Sensing Image Super-Resolution, TensorFlow 1.1
- PECNN -> A Progressively Enhanced Network for Video Satellite Imagery Super-Resolution, minimal documentation
- hs-sr-tvtv -> Enhanced Hyperspectral Image Super-Resolution via RGB Fusion and TV-TV Minimization
- sr4rs -> Super resolution for remote sensing, with pre-trained model for Sentinel-2, SRGAN-inspired
- Restoring old aerial images with Deep Learning -> Medium article on Super Resolution with Perceptual Loss function and real images as input
- 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
- 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
- EDSR-Super-Resolution -> EDSR model using PyTorch applied to satellite imagery
- CycleCNN -> code for 2021 paper: Nonpairwise-Trained Cycle Convolutional Neural Network for Single Remote Sensing Image Super-Resolution
Note that nearly all the MISR publications resulted from the PROBA-V Super Resolution competition
- 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
- 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
- The missing ingredient in deep multi-temporal satellite image super-resolution -> Permutation invariance harnesses the power of ensembles in a single model, with repo piunet
- MSTT-STVSR -> Space-time Super-resolution for Satellite Video: A Joint Framework Based on Multi-Scale Spatial-Temporal Transformer, JAG, 2022
- Self-Supervised Super-Resolution for Multi-Exposure Push-Frame Satellites
- DDRN -> Deep Distillation Recursive Network for Video Satellite Imagery Super-Resolution
Image fusion of low res multispectral with high res pan band.
- Several algorithms described in the ArcGIS docs, with the simplest being taking the mean of the pan and RGB pixel value.
- For into to classical methods see this notebook and this kaggle kernel
- rio-pansharpen -> pansharpening Landsat scenes
- Simple-Pansharpening-Algorithms
- Working-For-Pansharpening -> long list of pansharpening methods and update of Awesome-Pansharpening
- PSGAN -> A Generative Adversarial Network for Remote Sensing Image Pan-sharpening, arxiv paper
- Pansharpening-by-Convolutional-Neural-Network
- PBR_filter -> {P}ansharpening by {B}ackground {R}emoval algorithm for sharpening RGB images
- py_pansharpening -> multiple algorithms implemented in python
- 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
- PanColorGAN-VHR-Satellite-Images -> code for 2020 paper: Rethinking CNN-Based Pansharpening: Guided Colorization of Panchromatic Images via GANs
- MTL_PAN_SEG -> code for 2019 paper: Multi-task deep learning for satellite image pansharpening and segmentation
- Z-PNN -> code for 2022 paper: Pansharpening by convolutional neural networks in the full resolution framework
- GTP-PNet -> code for 2021 paper: GTP-PNet: A residual learning network based on gradient transformation prior for pansharpening
- UDL -> code for 2021 paper: Dynamic Cross Feature Fusion for Remote Sensing Pansharpening
- PSData -> A Large-Scale General Pan-sharpening DataSet, which contains PSData3 (QB, GF-2, WV-3) and PSData4 (QB, GF-1, GF-2, WV-2).
- AFPN -> Adaptive Detail Injection-Based Feature Pyramid Network For Pan-sharpening
- pan-sharpening -> multiple methods demonstrated for multispectral and panchromatic images
- PSGan-Family -> code for 2020 paper: PSGAN: A Generative Adversarial Network for Remote Sensing Image Pan-Sharpening
Translate images e.g. from SAR to RGB.
- How to Develop a Pix2Pix GAN for Image-to-Image Translation -> how to develop a Pix2Pix model for translating satellite photographs to Google map images. A good intro to GANS
- A growing problem of ‘deepfake geography’: How AI falsifies satellite images
- 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
- Pytorch implementation of UNet for converting aerial satellite images into google maps kinda images
- Seamless-Satellite-image-Synthesis -> generate abitrarily large RGB images from a map
- How to Develop a Pix2Pix GAN for Image-to-Image Translation -> article on machinelearningmastery.com
- Satellite-Imagery-to-Map-Translation-using-Pix2Pix-GAN-framework
- SAR to RGB Translation using CycleGAN -> uses a CycleGAN model in the ArcGIS API for Python
- RSIT_SRM_ISD -> PyTorch implementation of Remote sensing image translation via style-based recalibration module and improved style discriminator
- pix2pix_google_maps -> Converts satellite images to map images using pix2pix models
- sar2color-igarss2018-chainer -> code for 2018 paper: Image Translation Between Sar and Optical Imagery with Generative Adversarial Nets
- HSI2RGB -> Create realistic looking RGB images using remote sensing hyperspectral images
- sat_to_map -> Learning mappings to generate city maps images from corresponding satellite images
GANS are famously used for generating synthetic data, see the section Synthetic data
- Anomaly Detection on Mars using a GAN
- Using Generative Adversarial Networks to Address Scarcity of Geospatial Training Data -> GAN perform better than CNN in segmenting land cover classes outside of the training dataset (article, no code)
- 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
- Satellite-Image-Forgery-Detection-and-Localization
- STGAN -> PyTorch Implementation of STGAN for Cloud Removal in Satellite Images, with paper
- ds-gan-spatiotemporal-evaluation -> evaluating use of deep generative models in remote sensing applications
- pub-ffi-gan -> code for 2018 paper: Applying generative adversarial networks for anomaly detection in hyperspectral remote sensing imagery
- GAN-based method to generate high-resolution remote sensing for data augmentation and image classification
- Remote-Sensing-Image-Generation -> Generate RS Images using Generative Adversarial Networks (GAN)
- RoadDA -> code for 2021 paper: Stagewise Unsupervised Domain Adaptation with Adversarial Self-Training for Road Segmentation of Remote Sensing Images
- PSGan-Family -> code for 2020 paper: PSGAN: A Generative Adversarial Network for Remote Sensing Image Pan-Sharpening
Efforts to detect falsified images & deepfakes. Also checkout Synthetic data
- UAE-RS -> dataset that provides black-box adversarial samples in the remote sensing field
- PSGAN -> code for paper: Perturbation Seeking Generative Adversarial Networks: A Defense Framework for Remote Sensing Image Scene Classification
- Autoencoders & their Application in Remote Sensing -> intro article and example use case applied to SAR data for land classification
- LEt-SNE -> Dimensionality Reduction and visualization technique that compensates for the curse of dimensionality
- AutoEncoders for Land Cover Classification of Hyperspectral Images -> An autoencoder nerual net is used to reduce 103 band data to 60 features (dimensionality reduction), keras. Also read part 2 which implements K-NNC, SVM and Gradient Boosting
- Image-Similarity-Search -> an app that helps perform super fast image retrieval on PyTorch models for better embedding space interpretability
- Interactive-TSNE -> a tool that provides a way to visually view a PyTorch model's feature representation for better embedding space interpretability
- How Airbus Detects Anomalies in ISS Telemetry Data Using TFX -> uses an autoencoder
- RoofNet -> identify roof age using historical satellite images to lower the customer acquisition cost for new solar installations. Uses a VAE: Variational Autoencoder
- Visual search over billions of aerial and satellite images -> implemented at Descartes labs
- parallax -> Tool for interactive embeddings visualization
- Deep-Gapfill -> Official implementation of Optical image gap filling using deep convolutional autoencoder from optical and radar images
- Mxnet repository for generating embeddings on satellite images -> Includes sampling of images, mining algorithms, different architectures, error functions, measures for evaluation.
- Fine tuning CLIP with Remote Sensing (Satellite) images and captions -> fine tuning CLIP on the RSICD image captioning dataset, to enable querying large catalogues in natural language. With repo, uses 🤗
- Image search with 🤗 datasets -> tutorial on fine tuning an image search model
- 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
- Reverse image search using deep discrete feature extraction and locality-sensitive hashing
- SNCA_CE -> code for the paper Deep Metric Learning based on Scalable Neighborhood Components for Remote Sensing Scene Characterization
- LandslideDetection-from-satellite-imagery -> Using Attention and Autoencoder boosted CNN
- 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
- split-brain-remote-sensing -> code for 2018 paper: Analysis of Color Space Quantization in Split-Brain Autoencoder for Remote Sensing Image Classification
- image-similarity-measures -> Implementation of eight evaluation metrics to access the similarity between two images. Blog post here
- Large_Scale_GeoVisual_Search -> ResNet architecture on UC Merced Land Use Dataset with hamming distance for similarity based search
- geobacter -> Generates useful feature embeddings for geospatial locations
- Satellite-Image-Segmentation -> the KV-Net model uses this feature of autoencoders to reconnect the disconnected roads
- Satellite-Image-Enhancement -> Image enhancement using GAN's and autoencoders
- Variational-Autoencoder-For-Satellite-Imagery -> a special VAE to squeeze N images into one single representation with colors segmentating the different objects
- 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
- Train SimSiam on Satellite Images using Lightly to generate embeddings that can be used for data exploration and understanding
- Airbus_SDC_dup -> Project focused on detecting duplicate regions of overlapping satellite imagery. Applied to Airbus ship detection dataset
- Demo_AHCL_for_TGRS2022 -> code for 2022 paper: Asymmetric Hash Code Learning (AHCL) for remote sensing image retreival
- GaLR -> code for 2022 paper: Remote Sensing Cross-Modal Text-Image Retrieval Based on Global and Local Information
- retrievalSystem -> cross-modal image retrieval system
- AMFMN -> code for the 2021 paper: Exploring a Fine-grained Multiscale Method for Cross-modal Remote Sensing Image Retrieval
- Active-Learning-for-Remote-Sensing-Image-Retrieval -> unofficial implementation of paper: A Novel Active Learning Method in Relevance Feedback for Content-Based Remote Sensing Image Retrieval
- CMIR-NET -> code for 2020 paper: A deep learning based model for cross-modal retrieval in remote sensing
- Deep-Hash-learning-for-Remote-Sensing-Image-Retrieval -> code for 2020 paper: Deep Hash Learning for Remote Sensing Image Retrieval
- MHCLN -> code for 2018 paper: Deep Metric and Hash-Code Learning for Content-Based Retrieval of Remote Sensing Images
- HydroViet_VOR -> Object Retrieval in satellite images with Triplet Network
- See the section Image captioning datasets
- remote-sensing-image-caption -> image classification and image caption by PyTorch
- Fine tuning CLIP with Remote Sensing (Satellite) images and captions -> fine tuning CLIP on the RSICD image captioning dataset, to enable querying large catalogues in natural language. With repo, uses 🤗
- VQA-easy2hard -> code for 2022 paper: From Easy to Hard: Learning Language-guided Curriculum for Visual Question Answering on Remote Sensing Data
- CapFormer -> Pure transformer for remote sensing image caption
- remote_sensing_image_captioning -> code for 2019 paper: Region Driven Remote Sensing Image Captioning
- Remote Sensing Image Captioning with Transformer and Multilabel Classification
- Siamese-spatial-Graph-Convolution-Network -> code for 2019 paper: Siamese graph convolutional network for content based remote sensing image retrieval
- MLAT -> code for 2022 paper: Remote-Sensing Image Captioning Based on Multilayer Aggregated Transformer
- WordSent -> code for 2020 paper: Word–Sentence Framework for Remote Sensing Image Captioning
These techniques combine multiple data types, e.g. imagery and text data.
- Predicting the locations of traffic accidents with satellite imagery and convolutional neural networks -> Combining satellite imagery and structured data to predict the location of traffic accidents with a neural network of neural networks, with repo
- Multi-Input Deep Neural Networks with PyTorch-Lightning - Combine Image and Tabular Data -> excellent intro article using pytorch, not actually applied to satellite data but to real estate data, with repo
- Joint Learning from Earth Observation and OpenStreetMap Data to Get Faster Better Semantic Maps -> fusion based architectures and coarse-to-fine segmentation to include the OpenStreetMap layer into multispectral-based deep fully convolutional networks, arxiv paper
- Inferring High-Resolution Traffic Accident Risk Maps Based on Satellite Imagery and GPS Trajectories -> input satellite imagery, GPS trajectories, road maps and the history of accidents to generate high-resolution (5 meters) accident risk maps
- Composing Decision Forest and Neural Network models tensorflow documentation
- pyimagesearch article on mixed-data
- 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
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.
- Unseen Land Cover Classification from High-Resolution Orthophotos Using Integration of Zero-Shot Learning and Convolutional Neural Networks
- FSODM -> Official Code for paper "Few-shot Object Detection on Remote Sensing Images" on arxiv
- Few-Shot Classification of Aerial Scene Images via Meta-Learning -> 2020 publication, a classification model that can quickly adapt to unseen categories using only a few labeled samples
- Papers about Few-shot Learning / Meta-Learning on Remote Sensing
- SPNet -> code for 2021 paper: Siamese-Prototype Network for Few-Shot Remote Sensing Image Scene Classification
- MDL4OW -> code for 2020 paper: Few-Shot Hyperspectral Image Classification With Unknown Classes Using Multitask Deep Learning
- P-CNN -> code for 2021 paper: Prototype-CNN for Few-Shot Object Detection in Remote Sensing Images
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
- Unsupervised Learning for Land Cover Classification in Satellite Imagery
- Tile2Vec: Unsupervised representation learning for spatially distributed data
- 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.
- Sentinel-2 image clustering in python
- MARTA GANs: Unsupervised Representation Learning for Remote Sensing Image Classification and code
- A generalizable and accessible approach to machine learning with global satellite imagery nature publication -> MOSAIKS is designed to solve an unlimited number of tasks at planet-scale quickly using feature vectors, with repo. Also see mosaiks-api
- contrastive-satellite -> Using contrastive learning to create embeddings from optical EuroSAT Satellite-2 imagery
- Self-Supervised Learning of Remote Sensing Scene Representations Using Contrastive Multiview Coding -> arxiv paper and code
- 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
- contrastive_SSL_ship_detection -> Contrastive self supervised learning for ship detection in Sentinel 2 images
- 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)
- K-Means Clustering for Surface Segmentation of Satellite Images
- Sentinel-2 satellite imagery for crop classification using unsupervised clustering -> label groups of pixels based on temporal trends of their NDVI values
- TheColorOutOfSpace -> Pytorch code for the paper "The color out of space: learning self-supervised representations for Earth Observation imagery" using the BigEarthNet dataset
- Semantic segmentation of SAR images using a self supervised technique
- STEGO -> Unsupervised Semantic Segmentation by Distilling Feature Correspondences, with paper
- Unsupervised Segmentation of Hyperspectral Remote Sensing Images with Superpixels
- SoundingEarth -> Self-supervised Audiovisual Representation Learning for Remote Sensing Data, uses the SoundingEarth Dataset
- singleSceneSemSegTgrs2022 -> code for 2022 paper: Unsupervised Single-Scene Semantic Segmentation for Earth Observation
- SSLRemoteSensing -> code for 2021 paper: Semantic Segmentation of Remote Sensing Images With Self-Supervised Multitask Representation Learning
- CBT code for 2022 paper: Continual Barlow Twins: continual self-supervised learning for remote sensing semantic segmentation
- Unsupervised Satellite Image Classification based on Partial Adversarial Domain Adaptation -> Code for course project
- selfsup_openrep -> self-supervised learning method framework for domain representation
- T2FTS -> code for 2022 paper: Teaching Teachers First and Then Student: Hierarchical Distillation to Improve Long-Tailed Object Recognition in Aerial Images
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
- Semantic Segmentation of Satellite Images Using Point Supervision
- 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
- Flood Segmentation on Sentinel-1 SAR Imagery with Semi-Supervised Learning with arxiv paper
- Semi-supervised learning in satellite image classification -> experimenting with MixMatch and the EuroSAT data set
- ScRoadExtractor -> code for 2020 paper: Scribble-based Weakly Supervised Deep Learning for Road Surface Extraction from Remote Sensing Images
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
- Active learning for object detection in high-resolution satellite images -> arxiv paper
- AIDE V2 - Tools for detecting wildlife in aerial images using active learning
- AstronomicAL -> An interactive dashboard for visualisation, integration and classification of data using Active Learning
- Read about active learning on the lightly platform and in label-studio
- Active-Labeler by spaceml-org -> a CLI Tool that facilitates labeling datasets with just a SINGLE line of code
- Labelling platform for Mapping Africa active learning project
- ChangeDetectionProject -> Trying out Active Learning in with deep CNNs for Change detection on remote sensing data
- ALS4GAN -> Active Learning for Improved Semi Supervised Semantic Segmentation in Satellite Images, with paper
- Active-Learning-for-Remote-Sensing-Image-Retrieval -> unofficial implementation of paper: A Novel Active Learning Method in Relevance Feedback for Content-Based Remote Sensing Image Retrieval
Federated learning is a process for training models in a distributed fashion without sharing of data
- Federated-Learning-for-Remote-Sensing -> implementation of three Federated Learning models
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.
- Wikipedia article on registration -> register for change detection or image stitching
- 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
- Detecting Ground Control Points via Convolutional Neural Network for Stereo Matching -> code?
- Image Registration: From SIFT to Deep Learning -> background reading on has the state of the art has evolved from OpenCV to Neural Networks
- ImageCoregistration -> Image registration with openCV using sift and RANSAC
- 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
- RStoolbox supports Image to Image Co-Registration based on Mutual Information
- Reprojecting the Perseverance landing footage onto satellite imagery
- Kornia provides image registration by gradient decent
- 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
- unsupervisedDeepHomographyRAL2018 -> Unsupervised Deep Homography applied to aerial data
- registration_cnn_ntg -> code for paper: A Multispectral Image Registration Method Based on Unsupervised Learning
- remote-sensing-images-registration-dataset -> at 0.23m, 3.75m & 30m resolution
- semantic-template-matching -> code for 2021 paper: A deep learning semantic template matching framework for remote sensing image registration
- GMN-Generative-Matching-Network -> code for 2018 paper: Deep Generative Matching Network for Optical and SAR Image Registration
- SOMatch -> code for 2020 paper: A deep learning framework for matching of SAR and optical imagery
- Interspectral image registration dataset -> including satellite and drone imagery
- 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
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
- Awesome-Data-Fusion-for-Remote-Sensing
- UDALN_GRSL -> Deep Unsupervised Blind Hyperspectral and Multispectral Data Fusion
- CropTypeMapping -> Crop type mapping from optical and radar (Sentinel-1&2) time series using attention-based deep learning
- Multimodal-Remote-Sensing-Toolkit -> uses Hyperspectral and LiDAR 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'
- Matching between acoustic and satellite images
- MapRepair -> Deep Cadastre Maps Alignment and Temporal Inconsistencies Fix in Satellite Images
- Compressive-Sensing-and-Deep-Learning-Framework -> Compressive Sensing is used as an initial guess to combine data from multiple sources, with LSTM used to refine the result
- DeepSim -> code for paper: DeepSIM: GPS Spoofing Detection on UAVs using Satellite Imagery Matching
- MHF-net -> code for 2019 paper: Multispectral and Hyperspectral Image Fusion by MS/HS Fusion Net
- Remote_Sensing_Image_Fusion -> code for 2021 paper: Semi-Supervised Remote Sensing Image Fusion Using Multi-Scale Conditional Generative Adversarial network with Siamese Structure
- CNNs for Multi-Source Remote Sensing Data Fusion -> code for 2021 paper: Single-stream CNN with Learnable Architecture for Multi-source Remote Sensing Data
- 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
- robust_matching_network_on_remote_sensing_imagery_pytorch -> code for 2019 paper: A Robust Matching Network for Gradually Estimating Geometric Transformation on Remote Sensing Imagery
- 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
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
- Wikipedia DEM article and phase correlation article
- Intro to depth from stereo
- Map terrain from stereo images to produce a digital elevation model (DEM) -> high resolution & paired images required, typically 0.3 m, e.g. Worldview
- Process of creating a DEM here and here.
- ArcGIS can generate DEMs from stereo images
- https://github.com/MISS3D/s2p -> produces elevation models from images taken by high resolution optical satellites -> demo code on https://gfacciol.github.io/IS18/
- Automatic 3D Reconstruction from Multi-Date Satellite Images
- Semi-global matching with neural networks
- Predict the fate of glaciers
- monodepth - Unsupervised single image depth prediction with CNNs
- Stereo Matching by Training a Convolutional Neural Network to Compare Image Patches
- Terrain and hydrological analysis based on LiDAR-derived digital elevation models (DEM) - Python package
- Phase correlation in scikit-image
- 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
- The Mapbox API provides images and elevation maps, article here
- Reconstructing 3D buildings from aerial LiDAR with Mask R-CNN
- ResDepth -> A Deep Prior For 3D Reconstruction From High-resolution Satellite Images
- overhead-geopose-challenge -> competition to build computer vision algorithms that can effectively model the height and pose of ground objects for monocular satellite images taken from oblique angles. Blog post MEET THE WINNERS OF THE OVERHEAD GEOPOSE CHALLENGE
- 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
- SatelliteSurfaceReconstruction -> 3D Surface Reconstruction From Multi-Date Satellite Images, ISPRS, 2021
- 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
- The World Needs (a lot) More Thermal Infrared Data from Space
- IR2VI thermal-to-visible image translation framework based on GANs with code
- The finest resolution urban outdoor heat exposure maps in major US cities -> urban microclimate modeling based on high resolution 3D urban models and meteorological data makes it possible to examine how people are exposed to heat stress at a fine spatio-temporal level.
- Object_Classification_in_Thermal_Images -> classification accuracy was improved by adding the object size as a feature directly within the CNN
- Thermal imaging with satellites blog post by Christoph Rieke
- 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
- Fire alerts service by Descartes Labs
- Background Invariant Classification on Infrared Imagery by Data Efficient Training and Reducing Bias in CNNs
- CMAFF -> code for 2021 paper: Cross-Modality Attentive Feature Fusion for Object Detection in Multispectral Remote Sensing Imagery
- awesome-sar -> A curated list of awesome Synthetic Aperture Radar (SAR) software, libraries, and resources
- Removing speckle noise from Sentinel-1 SAR using a CNN
- A dataset which is specifically made for deep learning on SAR and optical imagery is the SEN1-2 dataset, which contains corresponding patch pairs of Sentinel 1 (VV) and 2 (RGB) data. It is the largest manually curated dataset of S1 and S2 products, with corresponding labels for land use/land cover mapping, SAR-optical fusion, segmentation and classification tasks. Data: https://mediatum.ub.tum.de/1474000
- so2sat on Tensorflow datasets -> So2Sat LCZ42 is a dataset consisting of co-registered synthetic aperture radar and multispectral optical image patches acquired by the Sentinel-1 and Sentinel-2 remote sensing satellites, and the corresponding local climate zones (LCZ) label. The dataset is distributed over 42 cities across different continents and cultural regions of the world.
- You do not need clean images for SAR despeckling with deep learning -> How Speckle2Void learned to stop worrying and love the noise
- PySAR - InSAR (Interferometric Synthetic Aperture Radar) timeseries analysis in python
- Synthetic Aperture Radar (SAR) Analysis With Clarifai
- Labeled SAR imagery dataset of ten geophysical phenomena from Sentinel-1 wave mode consists of more than 37,000 SAR vignettes divided into ten defined geophysical categories
- Deep Learning and SAR Applications
- Implementing an Ensemble Convolutional Neural Network on Sentinel-1 Synthetic Aperture Radar data and Sentinel-3 Radiometric data for the detecting of forest fires
- s1_parking_occupancy -> Source code for PARKING OCCUPANCY ESTIMATION ON SENTINEL-1 IMAGES, ISPRS 2020
- Experiments on Flood Segmentation on Sentinel-1 SAR Imagery with Cyclical Pseudo Labeling and Noisy Student Training
- SpaceNet_SAR_Buildings_Solutions -> The winning solutions for the SpaceNet 6 Challenge
- Mapping and monitoring of infrastructure in desert regions with Sentinel-1
- xView3 is a competition to detect dark vessels using computer vision and global SAR satellite imagery. The-First-Place-Solution and second place solution. sar_vessel_detect
- Winners of the STAC Overflow: Map Floodwater from Radar Imagery competition
- deSpeckNet-TF-GEE -> implementation of the paper 'deSpeckNet: Generalizing Deep Learning Based SAR Image Despeckling'
- cnn_sar_image_classification -> CNN for classifying SAR images of the Amazon Rainforest
- s1_icetype_cnn -> Retrieve sea ice type from Sentinel-1 SAR with CNN
- SARSeg -> pytorch code for the paper 'MP-ResNet: Multi-path Residual Network for the Semantic segmentation of PolSAR Images'
- TGRS_DisOptNet -> Distilling Semantic Knowledge from Optical Images for Weather-independent Building Segmentation
- SAR_CD_DDNet -> PyTorch implementation of Change Detection in Synthetic Aperture Radar Images Using a Dual Domain Network
- SAR_CD_MS_CapsNet -> Code for the paper "Change Detection in SAR Images Based on Multiscale Capsule Network" IEEE GRSL 2021
- anomaly-detection-in-SAR-imagery -> identify an unknown ship in docks using keras & retinanet
- sar_transformer -> Transformer based SAR image despeckling, trained with synthetic imagery, with paper
- SSDD ship detection dataset
- Semantic segmentation of SAR images using a self supervised technique
- Ship Detection on Remote Sensing Synthetic Aperture Radar Data -> based on the architectures of the Faster-RCNN and YOLOv5 networks
- Target Recognition in SAR -> Identify Military Vehicles in Satellite Imagery with TensorFlow, with article
- DSN -> code for 2020 paper: Deep SAR-Net: Learning objects from signals
- SAR_denoising -> project on application of FFDNet to SAR images
- sarCdUsingDeepTranscoding -> Details of a SAR to optical transcoder training. The generator of the transcoder is subsequently used for transfer learning in a change detection framework
- cnninsar -> code for 2018 paper: CNN-Based InSAR Denoising and Coherence Metric
- sar -> Despeckling Synthetic Aperture Radar Images using a Deep Residual CNN
- GCBANet -> code for 2022 paper: A Global Context Boundary-Aware Network for SAR Ship Instance Segmentation
- SAR_CD_GKSNet -> code for 2022 paper: Change Detection from Synthetic Aperture Radar Images via Graph-Based Knowledge Supplement Network
- pixel-wise-segmentation-of-sar -> code for 2020 paper: Pixel-Wise Segmentation of SAR Imagery Using Encoder-Decoder Network and Fully-Connected CRF
- CenterSAR -> CenterNet for SAR ship detection based on Detectron2
- SAR_Ship_detection_CFAR -> An improved two-parameter CFAR algorithm based on Rayleigh distribution and Mathematical Morphology for SAR ship detection
- Calculated via band math
ndvi = np.true_divide((ir - r), (ir + r))
but challenging due to the size of the imagery - Example notebook local
- Landsat data in cloud optimised (COG) format analysed for NVDI with medium article here.
- Identifying Buildings in Satellite Images with Machine Learning and Quilt -> NDVI & edge detection via gaussian blur as features, fed to TPOT for training with labels from OpenStreetMap, modelled as a two class problem, “Buildings” and “Nature”
- Seeing Through the Clouds - Predicting Vegetation Indices Using SAR
- A walkthrough on calculating NDWI water index for flooded areas -> Derive zonal statistics from Sentinel 2 images using Rasterio and Geopandas
- NDVI-Net -> code for 2020 paper: NDVI-Net: A fusion network for generating high-resolution normalized difference vegetation index in remote sensing
- Awesome-Vegetation-Index
- Remote-Sensing-Indices-Derivation-Tool -> Calculate spectral remote sensing indices from satellite imagery
- Convolutional autoencoder network can be employed to image denoising, read about this on the Keras blog
- jitter-compensation -> Remote Sensing Image Jitter Detection and Compensation Using CNN
- DeblurGANv2 -> Deblurring (Orders-of-Magnitude) Faster and Better
- image-quality-assessment -> CNN to predict the aesthetic and technical quality of images
- Convolutional autoencoder for image denoising -> keras guide
- 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
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.
- Lockheed Martin and USC to Launch Jetson-Based Nanosatellite for Scientific Research Into Orbit - Aug 2020 - One app that will run on the GPU-accelerated satellite is SuperRes, an AI-based application developed by Lockheed Martin, that can automatically enhance the quality of an image.
- Intel to place movidius in orbit to filter images of clouds at source - Oct 2020 - Getting rid of these images before they’re even transmitted means that the satellite can actually realize a bandwidth savings of up to 30%
- 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
- How AI and machine learning can support spacecraft docking with repo uwing Yolov3
- exo-space -> startup with plans to release an AI hardware addon for satellites
- Sony’s Spresense microcontroller board is going to space -> vision applications include cloud detection, more details here
- Ororatech Early Detection of Wildfires From Space -> OroraTech is launching its own AI nanosatellites with the NVIDIA Jetson Xavier NX system onboard
- Palantir Edge AI in Space -> using NVIDIA Jetson for ship/aircraft/cloud detection & land cover segmentation
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
- Since satellite images are typically very large, it is common to tile them before processing. Alternatively checkout Fully Convolutional Image Classification on Arbitrary Sized Image -> TLDR replace the fully-connected layer with a convolution-layer
- 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
- Read A Recipe for Training Neural Networks by Andrej Karpathy
- Seven steps towards a satellite imagery dataset
- Implementing Transfer Learning from RGB to Multi-channel Imagery -> takes a resnet50 model pre-trained on an input of 224x224 pixels with 3 channels (RGB) and updates it for a new input of 480x400 pixels and 15 channels (12 new + RGB) using keras
- How to implement augmentations for Multispectral Satellite Images Segmentation using Fastai-v2 and Albumentations
- Principal Component Analysis: In-depth understanding through image visualization applied to Landsat TM images, with repo
- Leveraging Geolocation Data for Machine Learning: Essential Techniques -> A Gentle Guide to Feature Engineering and Visualization with Geospatial data, in Plain English
- 3 Tips to Optimize Your Machine Learning Project for Data Labeling
- Image Classification Labeling: Single Class versus Multiple Class Projects
- Labeling Satellite Imagery for Machine Learning
- Image Augmentations for Aerial Datasets
- Leveraging satellite imagery for machine learning computer vision applications
- Best Practices for Preparing and Augmenting Image Data for CNNs
- Using TensorBoard While Training Land Cover Models with Satellite Imagery
- An Overview of Model Compression Techniques for Deep Learning in Space
- Visualise Embeddings with Tensorboard -> also checkout the Tensorflow Embedding Projector
- Introduction to Satellite Image Augmentation with Generative Adversarial Networks - video
- Use Gradio and W&B together to monitor training and view predictions
- Every important satellite imagery analysis project is challenging, but here are ten straightforward steps to get started
- Challenges with SpaceNet 4 off-nadir satellite imagery: Look angle and target azimuth angle -> building prediction in images taken at nearly identical look angles — for example, 29 and 30 degrees — produced radically different performance scores.
- How not to test your deep learning algorithm? - bad ideas to avoid
- AI products and remote sensing: yes, it is hard and yes, you need a good infra -> advice on building an in-house data annotation service
- Boosting object detection performance through ensembling on satellite imagery
- How to use deep learning on satellite imagery — Playing with the loss function
- On the importance of proper data handling
- Generate SSD anchor box aspect ratios using k-means clustering -> tutorial showing how to discover a set of aspect ratios that are custom-fit for your dataset, applied to tensorflow object detection
- Transfer Learning on Greyscale Images: How to Fine-Tune Pretrained Models on Black-and-White Datasets
- How to create a DataBlock for Multispectral Satellite Image Segmentation with the Fastai
- A comprehensive list of ML and AI acronyms and abbreviations
- Finding an optimal number of “K” classes for unsupervised classification on Remote Sensing Data -> i.e 'elbow' method
- 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
- The law of diminishing returns often applies to dataset size, read Quantifying the Effects of Resolution on Image Classification Accuracy
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
- TP = true positive, FP = false positive, TN = true negative, FN = false negative
Precision
is the % of correct positive predictions, calculated asprecision = TP/(TP+FP)
Recall
or true positive rate (TPR), is the % of true positives captured by the model, calculated asrecall = 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 asF1 = 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 thresholdmAP@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"- For more comprehensive definitions checkout Object-Detection-Metrics
This section contains a short list of datasets relevant to deep learning, particularly those which come up regularly in the literature. For a more comprehensive list of datasets checkout awesome-satellite-imagery-datasets & Awesome_Satellite_Benchmark_Datasets and review the long list of satellite missions with example imagery. If you want datasets ready to train in deep learning frameworks checkout the datasets in torchgeo
Warning satellite image files can be LARGE, even a small data set may comprise 50 GB of imagery
- As part of the EU Copernicus program, multiple Sentinel satellites are capturing imagery -> see wikipedia.
- 13 bands, Spatial resolution of 10 m, 20 m and 60 m, 290 km swath, the temporal resolution is 5 days
- awesome-sentinel - a curated list of awesome tools, tutorials and APIs related to data from the Copernicus Sentinel Satellites.
- Sentinel-2 Cloud-Optimized GeoTIFFs and Sentinel-2 L2A 120m Mosaic
- Open access data on GCP
- Paid access to Sentinel & Landsat data via sentinel-hub and python-api
- Example loading sentinel data in a notebook
- so2sat on Tensorflow datasets - So2Sat LCZ42 is a dataset consisting of co-registered synthetic aperture radar and multispectral optical image patches acquired by the Sentinel-1 and Sentinel-2 remote sensing satellites, and the corresponding local climate zones (LCZ) label. The dataset is distributed over 42 cities across different continents and cultural regions of the world.
- BigEarthNet - The BigEarthNet is a new large-scale Sentinel-2 benchmark archive, consisting of 590,326 Sentinel-2 image patches. The image patch size on the ground is 1.2 x 1.2 km with variable image size depending on the channel resolution. This is a multi-label dataset with 43 imbalanced labels. Also available in torchgeo
- Jupyter Notebooks for working with Sentinel-5P Level 2 data stored on S3. The data can be browsed here
- Sentinel NetCDF data
- Analyzing Sentinel-2 satellite data in Python with Keras
- Xarray backend to Copernicus Sentinel-1 satellite data products
- SEN2VENµS -> a dataset for the training of Sentinel-2 super-resolution algorithms
- Long running US program -> see Wikipedia
- 8 bands, 15 to 60 meters, 185km swath, the temporal resolution is 16 days
- Landsat 4, 5, 7, and 8 imagery on Google, see the GCP bucket here, with Landsat 8 imagery in COG format analysed in this notebook
- Landsat 8 imagery on AWS, with many tutorials and tools listed
- https://github.com/kylebarron/landsat-mosaic-latest -> Auto-updating cloudless Landsat 8 mosaic from AWS SNS notifications
- Visualise landsat imagery using Datashader
- Landsat-mosaic-tiler -> This repo hosts all the code for landsatlive.live website and APIs.
- Satellites owned by Maxar (formerly DigitalGlobe) include GeoEye-1, WorldView-2, 3 & 4
- Open Data images for humanitarian response
- Maxar ARD (COG plus data masks, with STAC) sample data in S3
- Dataset on AWS -> see this getting started notebook and this notebook on the off-Nadir dataset
- cloud_optimized_geotif here used in the 3D modelling notebook here.
- WorldView cloud optimized geotiffs used in the 3D modelling notebook here.
- For more Worldview imagery see Kaggle DSTL competition.
- Planet’s high-resolution, analysis-ready mosaics of the world’s tropics, supported through Norway’s International Climate & Forests Initiative. BBC coverage
- Planet have made imagery available via kaggle competitions
- Land use classification dataset with 21 classes and 100 RGB TIFF images for each class
- Each image measures 256x256 pixels with a pixel resolution of 1 foot
- http://weegee.vision.ucmerced.edu/datasets/landuse.html
- Available as a Tensorflow dataset -> https://www.tensorflow.org/datasets/catalog/uc_merced
- Also available as a multi-label dataset
- Read Vision Transformers for Remote Sensing Image Classification where a Vision Transformer classifier achieves 98.49% classification accuracy on Merced
- Land use classification dataset of Sentinel-2 satellite images covering 13 spectral bands and consisting of 10 classes with 27000 labeled and geo-referenced samples. Available in RGB and 13 band versions
- EuroSAT: Land Use and Land Cover Classification with Sentinel-2 -> publication where a CNN achieves a classification accuracy 98.57%
- Repos using fastai here and here
- evolved_channel_selection -> explores the trade off between mixed resolutions and whether to use a channel at all, with repo
- RGB version available as dataset in pytorch with the 13 band version in torchgeo. Checkout the tutorial on data augmentation with this dataset
- RGB and 13 band versions in tensorflow
- Land use classification dataset with 38 classes and 800 RGB JPG images for each class
- https://sites.google.com/view/zhouwx/dataset?authuser=0
- Publication: PatternNet: A Benchmark Dataset for Performance Evaluation of Remote Sensing Image Retrieval
- https://captain-whu.github.io/DiRS/
- a new large-scale benchmark dataset containing million instances for RS scene classification
- 51 scene categories organized by the hierarchical category
- Pretrained models
- Also see AID, AID-Multilabel-Dataset & DFC15-multilabel-dataset
- https://gcheng-nwpu.github.io/
- https://arxiv.org/abs/1909.00133
- "DIOR" is a large-scale benchmark dataset for object detection in optical remote sensing images, which consists of 23,463 images and 192,518 object instances annotated with horizontal bounding boxes
- ors-detection -> Object Detection on the DIOR dataset using YOLOv3
- dior_detect -> benchmarks for object detection on DIOR dataset
- Tools -> for dealing with the DIOR
- https://multiscene.github.io/ & https://github.com/Hua-YS/Multi-Scene-Recognition
- MultiScene dataset aims at two tasks: Developing algorithms for multi-scene recognition & Network learning with noisy labels
- FAIR1M: A Benchmark Dataset for Fine-grained Object Recognition in High-Resolution Remote Sensing Imagery
- Download at gaofen-challenge.com
- https://captain-whu.github.io/DOTA/index.html
- A Large-Scale Benchmark and Challenges for Object Detection in Aerial Images
- DOTA_devkit for loading dataset
- Arxiv paper
- Pretrained models in mmrotate
- DOTA2VOCtools -> dataset split and transform to voc format
- https://www.kaggle.com/datasets/guofeng/hrsc2016
- Pretrained models in mmrotate
- Rotation-RetinaNet-PyTorch
- https://github.com/hust-rslab/SAR-aircraft-data
- 2966 nonoverlapped 224×224 slices are collected with 7835 aircraft targets
- http://xviewdataset.org/
- One million annotated objects on 30cm imagery
- The XView Dataset and Baseline Results blog post by Picterra
- Databricks tutorial demonstrating inference of xView images and using SQL to generate meaningful insights
- https://downloads.greyc.fr/vedai/
- pytorch-vedai -> object detection on the VEDAI dataset: Vehicle Detection in Aerial Imagery
- http://gdo152.ucllnl.org/cowc/
- https://github.com/LLNL/cowc
- Large set of annotated cars from overhead
- Established baseline for detection and counting tasks
- https://github.com/jwwangchn/AI-TOD
- The mean size of objects in AI-TOD is about 12.8 pixels, which is much smaller than other datasets
- NWD -> code for 2021 paper: A Normalized Gaussian Wasserstein Distance for Tiny Object Detection. Uses AI-TOD dataset
- A Large-scale Dataset for Remote Sensing Object Counting and A Benchmark Method
- https://github.com/gaoguangshuai/Counting-from-Sky-A-Large-scale-Dataset-for-Remote-Sensing-Object-Counting-and-A-Benchmark-Method
- https://www.airs-dataset.com
- Public dataset for roof segmentation from very-high-resolution aerial imagery (7.5cm)
- AIRS dataset covers almost the full area of Christchurch, the largest city in the South Island of New Zealand.
- Also on Kaggle
- Rooftop-Instance-Segmentation -> VGG-16, Instance Segmentation, uses the Airs dataset
- https://project.inria.fr/aerialimagelabeling/contest/
- RGB GeoTIFF at spatial resolution of 0.3 m
- Data covering Austin, Chicago, Kitsap County, Western & Easter Tyrol, Innsbruck, San Francisco & Vienna
- SemSegBuildings -> Project using fast.ai framework for semantic segmentation on Inria building segmentation dataset
- UNet_keras_for_RSimage -> keras code for binary semantic segmentation
- Dataset release as part of the mapping-challenge
- 300x300 pixel RGB images with annotations in COCO format
- Imagery appears to be global but with significant fraction from North America
- Winning solution published by neptune.ai here, achieved precision 0.943 and recall 0.954 using Unet with Resnet.
- https://github.com/jwwangchn/BONAI
- BONAI (Buildings in Off-Nadir Aerial Images) is a dataset for building footprint extraction (BFE) in off-nadir aerial images
- https://justchenhao.github.io/LEVIR/
- FCCDN_pytorch -> pytorch implemention of FCCDN for change detection task
- RSICC -> the Remote Sensing Image Change Captioning dataset uses LEVIR-CD imagery
- A Curated Dataset of Georeferenced Multi-Spectral Sentinel-1/2 Imagery for Deep Learning and Data Fusion
- https://arxiv.org/abs/1906.07789
- SEN12MS toolbox
- Many referenced uses on paperswithcode.com
- land-use-land-cover-datasets
- EORSSD-dataset -> Extended Optical Remote Sensing Saliency Detection (EORSSD) Dataset
- RSD46-WHU -> 46 scene classes for image classification, free for education, research and commercial use
- RSOD-Dataset -> dataset for object detection in PASCAL VOC format. Aircraft, playgrounds, overpasses & oiltanks
- VHR-10_dataset_coco -> Object detection and instance segmentation dataset based on NWPU VHR-10 dataset. RGB & SAR
- HRSID -> high resolution sar images dataset for ship detection, semantic segmentation, and instance segmentation tasks
- MAR20 -> Military Aircraft Recognition dataset
- RSSCN7 -> Dataset of the article “Deep Learning Based Feature Selection for Remote Sensing Scene Classification”
- Sewage-Treatment-Plant-Dataset -> object detection
- TGRS-HRRSD-Dataset -> High Resolution Remote Sensing Detection (HRRSD)
- MUSIC4HA -> MUltiband Satellite Imagery for object Classification (MUSIC) to detect Hot Area
- MUSIC4GC -> MUltiband Satellite Imagery for object Classification (MUSIC) to detect Golf Course
- MUSIC4P3 -> MUltiband Satellite Imagery for object Classification (MUSIC) to detect Photovoltaic Power Plants (solar panels)
- ABCDdataset -> damage detection dataset to identify whether buildings have been washed-away by tsunami
- OGST -> Oil and Gas Tank Dataset
- LS-SSDD-v1.0-OPEN -> Large-Scale SAR Ship Detection Dataset
- S2Looking -> A Satellite Side-Looking Dataset for Building Change Detection, paper
- Zurich Summer Dataset -> Semantic segmentation of urban scenes
- AISD -> Aerial Imagery dataset for Shadow Detection
- LEVIR-Ship -> a dataset for tiny ship detection under medium-resolution remote sensing images
- Awesome-Remote-Sensing-Relative-Radiometric-Normalization-Datasets
- SearchAndRescueNet -> Satellite Imagery for Search And Rescue Dataset, with example Faster R-CNN model
- geonrw -> orthorectified aerial photographs, LiDAR derived digital elevation models and segmentation maps with 10 classes. With repo
Kaggle hosts over > 200 satellite image datasets, search results here. The kaggle blog is an interesting read.
- https://www.kaggle.com/c/planet-understanding-the-amazon-from-space/data
- 3-5 meter resolution GeoTIFF images from planet Dove satellite constellation
- 12 classes including - cloudy, primary + waterway etc
- 1st place winner interview - used 11 custom CNN
- FastAI Multi-label image classification
- Multi-Label Classification of Satellite Photos of the Amazon Rainforest
- Understanding the Amazon Rainforest with Multi-Label Classification + VGG-19, Inceptionv3, AlexNet & Transfer Learning
- amazon-classifier -> compares random forest with CNN
- multilabel-classification -> compares various CNN architecutres
- Planet-Amazon-Kaggle -> uses fast.ai
- deforestation_deep_learning
- Track-Human-Footprint-in-Amazon-using-Deep-Learning
- https://www.kaggle.com/c/dstl-satellite-imagery-feature-detection
- Rating - medium, many good examples (see the Discussion as well as kernels), but as this competition was run a couple of years ago many examples use python 2
- WorldView 3 - 45 satellite images covering 1km x 1km in both 3 (i.e. RGB) and 16-band (400nm - SWIR) images
- 10 Labelled classes include - Buildings, Road, Trees, Crops, Waterway, Vehicles
- Interview with 1st place winner who used segmentation networks - 40+ models, each tweaked for particular target (e.g. roads, trees)
- ZF_UNET_224_Pretrained_Model 2nd place solution ->
- 3rd place soluton -> which explored pansharpening & calculating reflectance indices, with arxiv paper
- Deepsense 4th place solution
- Entry by lopuhin using UNet with batch-normalization
- Multi-class semantic segmentation of satellite images using U-Net using DSTL dataset, tensorflow 1 & python 2.7. Accompanying article
- Deep-Satellite-Image-Segmentation
- Dstl-Satellite-Imagery-Feature-Detection-Improved
- Satellite-imagery-feature-detection
- Satellite_Image_Classification -> using XGBoost and ensemble classification methods
- Unet-for-Satellite
- https://www.kaggle.com/datasets/crawford/deepsat-sat4 & https://www.kaggle.com/datasets/crawford/deepsat-sat6
- DeepSat-Kaggle -> uses Julia
- deepsat-aws-emr-pyspark -> Using PySpark for Image Classification on Satellite Imagery of Agricultural Terrains
- https://www.kaggle.com/c/airbus-ship-detection/overview
- Rating - medium, most solutions using deep-learning, many kernels, good example kernel
- I believe there was a problem with this dataset, which led to many complaints that the competition was ruined
- Deep Learning for Ship Detection and Segmentation -> treated as instance segmentation problem, with notebook
- Lessons Learned from Kaggle’s Airbus Challenge
- Airbus-Ship-Detection -> This solution scored 139 out of 884 for the competition, combines ResNeXt50 based classifier and a U-net segmentation model
- Ship-Detection-Project -> uses Mask R-CNN and UNet model
- Airbus_SDC
- Airbus_SDC_dup -> Project focused on detecting duplicate regions of overlapping satellite imagery. Applied to Airbus ship detection dataset
- https://www.kaggle.com/rhammell/ships-in-satellite-imagery -> Classify ships in San Franciso Bay using Planet satellite imagery
- 4000 80x80 RGB images labeled with either a "ship" or "no-ship" classification, 3 meter pixel size
- shipsnet-detector -> Detect container ships in Planet imagery using machine learning
- https://www.kaggle.com/tomluther/ships-in-google-earth
- 794 jpegs showing various sized ships in satellite imagery, annotations in Pascal VOC format for object detection models
- kaggle-ships-in-Google-Earth-yolov5
- https://www.kaggle.com/datasets/rhammell/ships-in-satellite-imagery
- 4000 80x80 RGB images labeled with either a "ship" or "no-ship" classification, provided by Planet
- DeepLearningShipDetection
- Ship-Detection-Using-Satellite-Imagery
- https://www.kaggle.com/kbhartiya83/swimming-pool-and-car-detection
- 3750 satellite images of residential areas with annotation data for swimming pools and cars
- Object detection on Satellite Imagery using RetinaNet
- https://www.kaggle.com/rhammell/planesnet -> Detect aircraft in Planet satellite image chips
- 20x20 RGB images, the "plane" class includes 8000 images and the "no-plane" class includes 24000 images
- Dataset repo and planesnet-detector demonstrates a small CNN classifier on this dataset
- ergo-planes-detector -> An ergo based project that relies on a convolutional neural network to detect airplanes from satellite imagery, uses the PlanesNet dataset
- https://www.kaggle.com/datasets/aceofspades914/cgi-planes-in-satellite-imagery-w-bboxes
- 500 computer generated satellite images of planes
- Faster RCNN to detect airplanes
- aircraft-detection-from-satellite-images-yolov3
- https://www.kaggle.com/c/draper-satellite-image-chronology/data
- Rating - hard. Not many useful kernels.
- Images are grouped into sets of five, each of which have the same setId. Each image in a set was taken on a different day (but not necessarily at the same time each day). The images for each set cover approximately the same area but are not exactly aligned.
- Kaggle interviews for entrants who used XGBOOST and a hybrid human/ML approach
- deep-cnn-sat-image-time-series -> uses LSTM
- https://www.kaggle.com/humansintheloop/semantic-segmentation-of-aerial-imagery
- 72 satellite images of Dubai, the UAE, and is segmented into 6 classes
- dubai-satellite-imagery-segmentation -> due to the small dataset, image augmentation was used
- U-Net for Semantic Segmentation on Unbalanced Aerial Imagery -> using the Dubai dataset
- Multiclass-semantic-segmentation-in-satallite-images -> uses keras
- Semantic-Segmentation-using-U-Net -> uses keras
- https://www.kaggle.com/datasets/balraj98/massachusetts-roads-dataset
- https://www.kaggle.com/datasets/balraj98/massachusetts-buildings-dataset
- Road and Building Semantic Segmentation in Satellite Imagery uses U-Net on the Massachusetts Roads Dataset & keras
- Semantic-segmentation repo by fuweifu-vtoo -> uses pytorch and the Massachusetts Buildings & Roads Datasets
- ssai-cnn -> This is an implementation of Volodymyr Mnih's dissertation methods on his Massachusetts road & building dataset
- 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
- Road detection using semantic segmentation and albumentations for data augmention using the Massachusetts Roads Dataset, U-net & Keras
- Image-Segmentation) -> using Massachusetts Road dataset and fast.ai
Not satellite but airborne imagery. Each sample image is 28x28 pixels and consists of 4 bands - red, green, blue and near infrared. The training and test labels are one-hot encoded 1x6 vectors. Each image patch is size normalized to 28x28 pixels. Data in .mat
Matlab format. JPEG?
- Sat4 500,000 image patches covering four broad land cover classes - barren land, trees, grassland and a class that consists of all land cover classes other than the above three
- Sat6 405,000 image patches each of size 28x28 and covering 6 landcover classes - barren land, trees, grassland, roads, buildings and water bodies.
- https://www.kaggle.com/guofeng/hrsc2016
- Ship images harvested from Google Earth
- HRSC2016_SOTA -> Fair comparison of different algorithms on the HRSC2016 dataset
- https://www.kaggle.com/datasets/lilitopia/swimship-wake-imagery-mass
- An optical ship wake detection benchmark dataset built for deep learning
- 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
In this challenge, you will build a model to classify cloud organization patterns from satellite images.
- https://www.kaggle.com/c/understanding_cloud_organization/
- 3rd place solution on Github by naivelamb
- 15th place solution on Github by Soongja
- 69th place solution on Github by yukkyo
- 161st place solution on Github by michal-nahlik
- Solution by yurayli
- Solution by HazelMartindale uses 3 versions of U-net architecture
- Solution by khornlund
- Solution by Diyago
- https://www.kaggle.com/airbusgeo/airbus-aircrafts-sample-dataset
- One hundred civilian airports and over 3000 annotated commercial aircrafts
- detecting-aircrafts-on-airbus-pleiades-imagery-with-yolov5
- pytorch-remote-sensing -> Aircraft detection using the 'Airbus Aircraft Detection' dataset and Faster-RCNN with ResNet-50 backbone in pytorch
- https://www.kaggle.com/airbusgeo/airbus-oil-storage-detection-dataset
- Oil-Storage Tank Instance Segmentation with Mask R-CNN with accompanying article
- Oil Storage Detection on Airbus Imagery with YOLOX -> uses the Kaggle Airbus Oil Storage Detection dataset
- https://www.kaggle.com/kmader/satellite-images-of-hurricane-damage
- https://github.com/dbuscombe-usgs/HurricaneHarvey_buildingdamage
- https://www.kaggle.com/franchenstein/austin-zoning-satellite-images
- classify a images of Austin into one of its zones, such as residential, industrial, etc. 3667 satellite images
- https://www.kaggle.com/c/statoil-iceberg-classifier-challenge/data
- Deep Learning for Iceberg detection in Satellite Images
- radar-image-recognition
- Iceberg-Classification-Using-Deep-Learning
- Deep-Learning-Project
- iceberg-classifier-challenge solution by ShehabSunny
- https://www.kaggle.com/balraj98/deepglobe-land-cover-classification-dataset
- Satellite Imagery Semantic Segmentation with CNN -> 7 different segmentation classes, DeepGlobe Land Cover Classification Challenge dataset, with repo
- 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
- DeepGlobe Land Cover Classification Challenge solution
A Data Set to Predict Wildfire Spreading from Remote-Sensing Data
Inspired by the above dataset, using different data sources
- https://www.kaggle.com/satellitevu/satellite-next-day-wildfire-spread
- https://github.com/SatelliteVu/SatelliteVu-AWS-Disaster-Response-Hackathon
The xView2 Challenge focuses on automating the process of assessing building damage after a natural disaster
- https://www.kaggle.com/tunguz/xview2-challenge-dataset-train-and-test
- https://xview2.org/
- GitHub for the challenge
- A look at IBM's approach -> used a single U-Net model
- Simple Building detection example
- https://www.kaggle.com/datasets/amerii/spacenet-7-multitemporal-urban-development
- SatFootprint -> building segmentation on the Spacenet 7 dataset
- https://www.kaggle.com/datasets/sandeshbhat/satellite-images-to-predict-povertyafrica
- Uses satellite imagery and nightlights data to predict poverty levels at a local level
- Predicting-Poverty -> Combining satellite imagery and machine learning to predict poverty, in PyTorch
- https://www.kaggle.com/competitions/noaa-fisheries-steller-sea-lion-population-count -> count sea lions from aerial images
- Sealion-counting
- Sealion_Detection_Classification
- https://www.kaggle.com/datasets/alexandersylvester/arctic-sea-ice-image-masking
- sea_ice_remote_sensing
- A Benchmark Satellite Dataset as Drop-In Replacement for MNIST
- https://www.kaggle.com/datamunge/overheadmnist -> kaggle
- https://arxiv.org/abs/2102.04266 -> paper
- https://github.com/reveondivad/ov-mnist -> github
- https://www.kaggle.com/reubencpereira/spatial-data-repo -> Satellite + loan data
- https://www.kaggle.com/towardsentropy/oil-storage-tanks -> Image data of industrial tanks with bounding box annotations, estimate tank fill % from shadows
- https://www.kaggle.com/airbusgeo/airbus-wind-turbines-patches -> Airbus SPOT satellites images over wind turbines for classification
- https://www.kaggle.com/aceofspades914/cgi-planes-in-satellite-imagery-w-bboxes -> CGI planes object detection dataset
- https://www.kaggle.com/atilol/aerialimageryforroofsegmentation -> Aerial Imagery for Roof Segmentation
- https://www.kaggle.com/andrewmvd/ship-detection -> 621 images of boats and ships
- https://www.kaggle.com/alpereniek/vehicle-detection-from-satellite-images-data-set
- https://www.kaggle.com/sergiishchus/maxar-satellite-data -> Example Maxar data at 15 cm resolution
- https://www.kaggle.com/cici118/swimming-pool-detection-algarves-landscape
- https://www.kaggle.com/datasets/donkroco/solar-panel-module -> object detection for solar panels
- https://www.kaggle.com/datasets/balraj98/deepglobe-road-extraction-dataset -> segment roads
- spacenet.ai is an online hub for data, challenges, algorithms, and tools. Note that CosmiQ Ended its Leadership of SpaceNet, handing over the reigns to Maxar
- SpaceNet ran a series consisting of seven challenges with datasets and utilities provided. Challenges covered (1&2) building segmentation, (3) road segmentation, (4) off-nadir buildings, (5) road network extraction, (6)multi-senor mapping, (7) multi-temporal urban change
- Building datasets covered a number of cities including: Rio, Paris, Vegas, Shanghai, Khartoum, Atlana, Moscow, Mumbai & Rotterdam
- The SpaceNet 7 Multi-Temporal Urban Development Challenge: Dataset Release
- spacenet-three-topcoder solution
- official utilities -> Packages intended to assist in the preprocessing of SpaceNet satellite imagery data corpus to a format that is consumable by machine learning algorithms
- andraugust spacenet-utils -> Display geotiff image with building-polygon overlay & label buildings using kNN on the pixel spectra
- Spacenet-Building-Detection -> uses keras and Spacenet 1 dataset
- resisc45 -> RESISC45 dataset is a publicly available benchmark for Remote Sensing Image Scene Classification (RESISC), created by Northwestern Polytechnical University (NWPU). This dataset contains 31,500 images, covering 45 scene classes with 700 images in each class.
- eurosat -> EuroSAT dataset is based on Sentinel-2 satellite images covering 13 spectral bands and consisting of 10 classes with 27000 labeled and geo-referenced samples.
- BigEarthNet -> a large-scale Sentinel-2 land use classification dataset, consisting of 590,326 Sentinel-2 image patches. The image patch size on the ground is 1.2 x 1.2 km with variable image size depending on the channel resolution. This is a multi-label dataset with 43 imbalanced labels. Official website includes version of the dataset with Sentinel 1 & 2 chips
- so2sat -> a dataset consisting of co-registered synthetic aperture radar and multispectral optical image patches acquired by Sentinel 1 & 2
- Earth on AWS is the AWS equivalent of Google Earth Engine
- Currently 36 satellite datasets on the Registry of Open Data on AWS
- US Building Footprints -> building footprints in all 50 US states, GeoJSON format, generated using semantic segmentation. Also Australia, Canadian, Uganda-Tanzania, Kenya-Nigeria and GlobalMLBuildingFootprints are available. Checkout RasterizingBuildingFootprints to convert vector shapefiles to raster layers
- Microsoft Planetary Computer is a Dask-Gateway enabled JupyterHub deployment focused on supporting scalable geospatial analysis, source repo
- Ai for Earth program
- landcover-orinoquia -> Land cover mapping of the Orinoquía region in Colombia, in collaboration with Wildlife Conservation Society Colombia. An #AIforEarth project
- RoadDetections dataset by Microsoft
Since there is a whole community around GEE I will not reproduce it here but list very select references. Get started at https://developers.google.com/earth-engine/
- Various imagery and climate datasets, including Landsat & Sentinel imagery
- Supports large scale processing with classical algorithms, e.g. clustering for land use. For deep learning, you export datasets from GEE as tfrecords, train on your preferred GPU platform, then upload inference results back to GEE
- awesome-google-earth-engine
- Awesome-GEE
- awesome-earth-engine-apps
- How to Use Google Earth Engine and Python API to Export Images to Roboflow -> to acquire training data
- ee-fastapi is a simple FastAPI web application for performing flood detection using Google Earth Engine in the backend.
- How to Download High-Resolution Satellite Data for Anywhere on Earth
- https://www.radiant.earth/
- Datasets and also models on https://mlhub.earth/
- RSICD -> 10921 images with five sentences descriptions per image. Used in Fine tuning CLIP with Remote Sensing (Satellite) images and captions, models at this repo
- RSICC -> the Remote Sensing Image Change Captioning dataset contains 10077 pairs of bi-temporal remote sensing images and 50385 sentences describing the differences between images. Uses LEVIR-CD imagery
- Shuttle Radar Topography Mission, search online at usgs.gov
- Copernicus Digital Elevation Model (DEM) on S3, represents the surface of the Earth including buildings, infrastructure and vegetation. Data is provided as Cloud Optimized GeoTIFFs. link
- UK metoffice -> https://www.metoffice.gov.uk/datapoint
- NASA (make request and emailed when ready) -> https://search.earthdata.nasa.gov
- NOAA (requires BigQuery) -> https://www.kaggle.com/noaa/goes16/home
- Time series weather data for several US cities -> https://www.kaggle.com/selfishgene/historical-hourly-weather-data
- DeepWeather -> improve weather forecasting accuracy by analyzing satellite images
- awesome-forests -> A curated list of ground-truth forest datasets for the machine learning and forestry community
- Resource Watch provides a wide range of geospatial datasets and a UI to visualise them
- BreizhCrops -> A Time Series Dataset for Crop Type Mapping
- The SeCo dataset contains image patches from Sentinel-2 tiles captured at different timestamps at each geographical location. Download SeCo here
- Onera Satellite Change Detection Dataset comprises 24 pairs of multispectral images taken from the Sentinel-2 satellites between 2015 and 2018
- SYSU-CD -> The dataset contains 20000 pairs of 0.5-m aerial images of size 256×256 taken between the years 2007 and 2014 in Hong Kong
- Many on https://www.visualdata.io
- AU-AIR dataset -> a multi-modal UAV dataset for object detection.
- ERA -> A Dataset and Deep Learning Benchmark for Event Recognition in Aerial Videos.
- Aerial Maritime Drone Dataset
- RetinaNet for pedestrian detection
- Aerial Maritime Drone Dataset
- EmergencyNet -> identify fire and other emergencies from a drone
- OpenDroneMap -> generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images.
- Dataset of thermal and visible aerial images for multi-modal and multi-spectral image registration and fusion -> The dataset consists of 30 visible images and their metadata, 80 thermal images and their metadata, and a visible georeferenced orthoimage.
- BIRDSAI: A Dataset for Detection and Tracking in Aerial Thermal Infrared Videos -> TIR videos of humans and animals with several challenging scenarios like scale variations, background clutter due to thermal reflections, large camera rotations, and motion blur
- ERA: A Dataset and Deep Learning Benchmark for Event Recognition in Aerial Videos
- DroneVehicle -> Drone-based RGB-Infrared Cross-Modality Vehicle Detection via Uncertainty-Aware Learning
- UAVOD10 -> 10 class of objects at 15 cm resolution. Classes are; building, ship, vehicle, prefabricated house, well, cable tower, pool, landslide, cultivation mesh cage, and quarry.
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.
- The Synthinel-1 dataset: a collection of high resolution synthetic overhead imagery for building segmentation with repo
- 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
- Combining Synthetic Data with Real Data to Improve Detection Results in Satellite Imagery
- 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
- Synthesizing Robustness -> explores how to best leverage and enhance synthetic data
- rendered.ai -> The Platform as a Service for Creating Synthetic Data
- synthetic_xview_airplanes -> creation of airplanes synthetic dataset using ArcGIS CityEngine
- Combining Synthetic Data with Real Data to Improve Detection Results in Satellite Imagery: Case Study
- SynImageAnalysis -> comparing syn and real sattlelite images in the latent feature space (embeddings)
- Import OpenStreetMap data into Unreal Engine 4
- deepfake-satellite-images -> dataset that includes over 1M images of synthetic aerial images
- synthetic-disaster -> Generate synthetic satellite images of natural disasters using deep neural networks
- STPLS3D -> A Large-Scale Synthetic and Real Aerial Photogrammetry 3D Point Cloud Dataset
- LESS -> LargE-Scale remote sensing data and image Simulation framework over heterogeneous 3D scenes
- Synthesizing Robustness: Dataset Size Requirements and Geographic Insights -> Medium article, concludes that synthetic data is most beneficial to the rarest object classes and that extracting utility from synthetic data often takes significant effort and creativity
- rs_img_synth -> code for 2020 paper: Synthesizing Optical and SAR Imagery From Land Cover Maps and Auxiliary Raster Data
- This article discusses some of the available platforms
- Pangeo -> There is no single software package called “pangeo”; rather, the Pangeo project serves as a coordination point between scientists, software, and computing infrastructure. Includes open source resources for parallel processing using Dask and Xarray. Pangeo recently announced their 2.0 goals: pivoting away from directly operating cloud-based JupyterHubs, and towards eductaion and research
- Descartes Labs -> access to EO imagery from a variety of providers via python API
- Planet have a Jupyter notebook platform which can be deployed locally.
- eurodatacube.com -> data & platform for EO analytics in Jupyter env, paid
- up42 is a developer platform and marketplace, offering all the building blocks for powerful, scalable geospatial products
- Microsoft Planetary Computer -> direct Google Earth Engine competitor in the making?
- eofactory.ai -> supports multi public and private data sources that can be used to analyse and extract information
- mapflow.ai -> imagery analysis platform with its instant access to the major satellite imagery providers, models for extract building footprints etc & QGIS plugin
- openeo by ESA data platform
- Adam platform -> the Advanced geospatial Data Management platform (ADAM) is a tool to access a large variety and volume of global environmental data
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.
- 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.
- Also a pro tier for $10 a month -> https://colab.research.google.com/signup
- Tensorflow, pytorch & fastai available but you may need to update them
- Colab Alive is a chrome extension that keeps Colab notebooks alive.
- colab-ssh -> lets you ssh to a colab instance like it’s an EC2 machine and install packages that require full linux functionality
- Free to use
- GPU Kernels - may run for 1 hour
- Tensorflow, pytorch & fastai available but you may need to update them
- Advantage that many datasets are already available
- SageMaker Studio Lab is a recent release which competes with Google colab being free to use with no credit card or AWS account required
- Github profile
- Paperspace gradient -> free tier includes GPU usage
- Deepnote -> many features for collaboration, GPU use is paid
- Compute and data storage are on the cloud. Read how Planet and Airbus use the cloud
- Traditional data formats aren't designed for processing on the cloud, so new standards are evolving such as COG and STAC
- Google Earth Engine and Microsoft Planetary Computer are democratising access to 'planetary scale' compute
- Google Colab and others are prodiving free acces to GPU compute to enable training deep learning models
- No-code platforms and auto-ml are making ML techniques more accessible than ever
- Serverless compute (e.g. AWS Lambda) mean that managing servers may become a thing of the past
- Custom hardware is being developed for rapid training and inferencing with deep learning models, both in the datacenter and at the edge
- Supervised ML methods typically require large annotated datasets, but approaches such as self-supervised and active learning require less or even no annotation
- Computer vision traditionally delivered high performance image processing on a CPU by using compiled languages like C++, as used by OpenCV for example. The advent of GPUs are changing the paradigm, with alternatives optimised for GPU being created, such as Kornia
- Whilst the combo of python and keras/tensorflow/pytorch are currently preeminent, new python libraries such as Jax and alternative languages such as Julia are showing serious promise
An overview of the most relevant services provided by AWS, Google and Microsoft. Also consider one of the many smaller but more specialised platorms such as paperspace
- Host your data on S3 and metadata in a db such as postgres
- For batch processing use Batch. GPU instances are available for batch deep learning inferencing. See how Rastervision implement this here
- If processing can be performed in 15 minutes or less, serverless Lambda functions are an attractive option owing to their ability to scale. Note that lambda may not be a particularly quick solution for deep learning applications, since you do not have the option to batch inference on a GPU. Creating a docker container with all the required dependencies can be a challenge. To get started read Using container images to run PyTorch models in AWS Lambda and for an image classification example checkout this repo. Also read Processing satellite imagery with serverless architecture which discusses queuing & lambda. For managing a serverless infrastructure composed of multiple lambda functions use AWS SAM and read How to continuously deploy a FastAPI to AWS Lambda with AWS SAM
- Use Glue for data preprocessing - or use Sagemaker
- To orchestrate basic data pipelines use Step functions. Use the AWS Step Functions Workflow Studio to get started. Read Orchestrating and Monitoring Complex, Long-running Workflows Using AWS Step Functions. Note that step functions are defined in JSON
- If step functions are too limited or you want to write pipelines in python and use Directed Acyclic Graphs (DAGs) for workflow management, checkout hosted AWS managed Airflow. Read Orchestrate XGBoost ML Pipelines with Amazon Managed Workflows for Apache Airflow and checkout amazon-mwaa-examples
- Sagemaker is a whole ecosystem of ML tools that includes a hosted Jupyter environment for training of ML models. There are also tools for deployment of models using docker. Read Build GAN with PyTorch and Amazon SageMaker
- SageMaker Studio Lab competes with Google colab being free to use with no credit card or AWS account required
- Deep learning AMIs are EC2 instances with deep learning frameworks preinstalled. They do require more setup from the user than Sagemaker but in return allow access to the underlying hardware, which makes debugging issues more straightforward. There is a good guide to setting up your AMI instance on the Keras blog. Read Deploying the SpaceNet 6 Baseline on AWS
- Specifically created for deep learning inferencing is AWS Inferentia
- Rekognition custom labels is a 'no code' annotation, training and inferencing service. Read Training models using Satellite (Sentinel-2) imagery on Amazon Rekognition Custom Labels. For a comparison with Azure and Google alternatives read this article
- When developing you will definitely want to use boto3 and probably aws-data-wrangler
- For managing infrastructure use Terraform. Alternatively if you wish to use TypeScript, JavaScript, Python, Java, or C# checkout AWS CDK, although I found relatively few examples to get going using python
- AWS Ground Station now supports data delivery to Amazon S3
- Redshift is a fast, scalable data warehouse that can extend queries to S3. Redshift is based on PostgreSQL but has some differences. Redshift supports geospatial data.
- AWS App Runner enables quick deployment of containers as apps
- AWS Athena allows running SQL queries against CSV files stored on S3. Serverless so pay only for the queries you run
- If you are using pytorch checkout the S3 plugin for pytorch which provides streaming data access
- Amazon AppStream 2.0 is a service to securely share desktop apps over the internet, see this post on sharing access to ArcGIS Pro
- aws-gdal-robot -> A proof of concept implementation of running GDAL based jobs using AWS S3/Lambda/Batch
- Building a robust data pipeline for processing Satellite Imagery at scale using AWS services & Airflow
- Using artificial intelligence to detect product defects with AWS Step Functions -> demonstrates image classification workflow
- sagemaker-defect-detection -> demonstrates object detection training and deployment
- For storage use Cloud Storage (AWS S3 equivalent)
- For data warehousing use BigQuery (AWS Redshift equivalent). Visualize massive spatial datasets directly in BigQuery using CARTO
- For model training use Vertex (AWS Sagemaker equivalent)
- For containerised apps use Cloud Run (AWS App Runner equivalent but can scale to zero)
- Azure Orbital -> Satellite ground station and scheduling services for fast downlinking of data
- ShipDetection -> use the Azure Custom Vision service to train an object detection model that can detect and locate ships in a satellite image
- SwimmingPoolDetection -> Swimming pool detection with Azure Custom Vision
- Geospatial analysis with Azure Synapse Analytics and repo
This section discusses how to get a trained machine learning & specifically deep learning model into production. For an overview on serving deep learning models checkout Practical-Deep-Learning-on-the-Cloud. There are many options if you are happy to dedicate a server, although you may want a GPU for batch processing. For serverless use AWS lambda.
A common approach to serving up deep learning model inference code is to wrap it in a rest API. The API can be implemented in python (flask or FastAPI), and hosted on a dedicated server e.g. EC2 instance. Note that making this a scalable solution will require significant experience.
- Basic API: https://blog.keras.io/building-a-simple-keras-deep-learning-rest-api.html with code here
- Advanced API with request queuing: https://www.pyimagesearch.com/2018/01/29/scalable-keras-deep-learning-rest-api/
- How to make a geospatial Rest Api web service with Python, Flask and Shapely - Tutorial
- BMW-YOLOv4-Training-Automation -> project that demos training ML model via rest API
- Basic REST API for a keras model using FastAPI
- NI4OS-RSSC -> Web Service for Remote Sensing Scene Classification (RS2C) using TensorFlow Serving and Flask
- Sat2Graph Inference Server -> API in Go for road segmentation model inferencing
- API algorithm to apply object detection model to terabyte size satellite images with 800% better performance and 8 times less resources usage
- clearcut_detection -> django backend
If you are happy to live with some lock-in, these are good options:
- Tensorflow serving is limited to Tensorflow models
- Pytorch serve is easy to use, limited to Pytorch models, can be deployed via AWS Sagemaker
- sagemaker-inference-toolkit -> Serve machine learning models within a Docker container using AWS SageMaker
- The Triton Inference Server provides an optimized cloud and edge inferencing solution. Read CAPE Analytics Uses Computer Vision to Put Geospatial Data and Risk Information in Hands of Property Insurance Companies
- RedisAI is a Redis module for executing Deep Learning/Machine Learning models and managing their data
Using lambda functions allows inference without having to configure or manage the underlying infrastructure
- On AWS either use regular lambdas from AWS or SageMaker Serverless Inference
- Object detection inference with AWS Lambda and IceVision (PyTorch) with repo
- Deploying PyTorch on AWS Lambda
- Example deployment behind an API Gateway Proxy
The model is run in the browser itself on live images, ensuring processing is always with the latest model available and removing the requirement for dedicated server side inferencing
The general approaches are outlined in 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. There are also toolkits for optimisation, in particular ONNX which is framework agnostic.
Once your model is deployed you will want to monitor for data errors, broken pipelines, and model performance degradation/drift ref
- Blog post by Neptune: Doing ML Model Performance Monitoring The Right Way
- whylogs -> Profile and monitor your ML data pipeline end-to-end
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.
Also check the section Image handling, manipulation & dataset creation
- 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
- diffgram describes itself as a complete training data platform for machine learning delivered as a single application, supports streaming data to pytorch & tensorflow. COGS can be annotated
- 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
- encord -> supports annotatin SAR
- awesome-data-labeling -> long list of annotation tools
- awesome-open-data-annotation -> another long list of annotation tools
- 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
- CVAT suports object detection, segmentation and classification via a local web app. There is an open issue to support large TIFF files. This article on Roboflow gives a good intro to CVAT. Checkout CVAT images validator
- VoTT -> an electron app for building end to end Object Detection Models from Images and Videos, by Microsoft
- Create your own annotation tool using Bokeh Holoviews, tkinter, or see these dash examples for object detection and segmentation
- 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.
- Alturos.ImageAnnotation is a collaborative tool for labeling image data on S3 for yolo
- pigeonXT can be used to 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
- SuperAnnotate can be run locally or used via a cloud service
- 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
- BMW-Labeltool-Lite -> bounding box annotator
- django-labeller -> An image labelling tool for creating segmentation data sets, for Django and Flask
- scalabel -> supports 2D images and 3D point clouds
- Detection-Label-Tool -> Change detection and object annotation, uses PyQt
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
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
- Many more formats listed here
- OBB: orinted bounding boxes are polygons representing rotated rectangles
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!
- rebox -> Easily convert between bounding box annotation formats
- Pascal VOC BBox Viewer
- 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
By software, I here mean desktop type apps. A note on licensing: The two general types of licenses for open source are copyleft and permissive. Copyleft requires that subsequent derived software products also carry the license forward, e.g. the GNU Public License (GNU GPLv3). For permissive, options to modify and use the code as one please are more open, e.g. MIT & Apache 2. Checkout choosealicense.com/
- awesome-earthobservation-code -> lists many useful tools and resources
- Orfeo toolbox - remote sensing toolbox with python API (just a wrapper to the C code). Do activites such as pansharpening, ortho-rectification, image registration, image segmentation & classification. Not much documentation.
- QUICK TERRAIN READER - view DEMS, Windows
- dl-satellite-docker -> docker files for geospatial analysis, including tensorflow, pytorch, gdal, xgboost...
- AIDE V2 - Tools for detecting wildlife in aerial images using active learning
- Land Cover Mapping web app from Microsoft
- Solaris -> An open source ML pipeline for overhead imagery by CosmiQ Works, similar to Rastervision but with some unique very vool features
- openSAR -> Synthetic Aperture Radar (SAR) Tools and Documents from Earth Big Data LLC (http://earthbigdata.com/)
- YMIR -> YMIR provides a Rapid Data-centric Development Platform for Vision Applications. Read the paper here.
- qhub -> QHub enables teams to build and maintain a cost effective and scalable compute/data science platform in the cloud.
- imagej -> a very versatile image viewer and processing program
- Geo Data Viewer extension for VSCode which enables opening and viewing various geo data formats with nice visualisations
- Datasette is a tool for exploring and publishing data as an interactive website and accompanying API, with SQLite backend. Various plugins extend its functionality, for example to allow displaying geospatial info, render images (useful for thumbnails), and add user authentication. Available as a desktop app. Read Drawing shapes on a map to query a SpatiaLite database
- Photoprism is a privately hosted app for browsing, organizing, and sharing your photo collection, with support for tiffs
- dbeaver is a free universal database tool and SQL client with geospatial features
- Grafana can be used to make interactive dashboards, checkout this example showing Point data. Note there is an AWS managed service for Grafana
- litestream -> Continuously stream SQLite changes to S3-compatible storage
- ImageFusion) -> Temporal fusion of raster image time-Series
- nvtop -> NVIDIA GPUs htop like monitoring tool
- rgis -> Geospatial data viewer written in Rust
- aerialbot -> A simple yet highly configurable bot that tweets geotagged aerial imagery of a random location in the world
Scripts and command line applications.
- geospatial-cli -> a collection of geospatial programs with commandline interface
- PyShp -> The Python Shapefile Library (PyShp) reads and writes Shapefiles in pure Python
- 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
- EarthPy -> A set of helper functions to make working with spatial data in open source tools easier. readExploratory Data Analysis (EDA) on Satellite Imagery Using EarthPy
- pygeometa -> provides a lightweight and Pythonic approach for users to easily create geospatial metadata in standards-based formats using simple configuration files
- pesto -> PESTO is designed to ease the process of packaging a Python algorithm as a processing web service into a docker image. It contains shell tools to generate all the boiler plate to build an OpenAPI processing web service compliant with the Geoprocessing-API. By Airbus Defence And Space
- GEOS -> Google Earth Overlay Server (GEOS) is a python-based server for creating Google Earth overlays of tiled maps. Your can also display maps in the web browser, measure distances and print maps as high-quality PDF’s.
- GeoDjango intends to be a world-class geographic Web framework. Its goal is to make it as easy as possible to build GIS Web applications and harness the power of spatially enabled data. Some features of GDAL are supported.
- rasterstats -> summarize geospatial raster datasets based on vector geometries
- turfpy -> a Python library for performing geospatial data analysis which reimplements turf.js
- rsgislib -> Remote Sensing and GIS Software Library; python module tools for processing spatial and image data
- eo-learn is a collection of open source Python packages that have been developed to seamlessly access and process spatio-temporal image sequences acquired by any satellite fleet in a timely and automatic manner
- RStoolbox: Tools for Remote Sensing Data Analysis in R
- nd -> Framework for the analysis of n-dimensional, multivariate Earth Observation data, built on xarray
- reverse-geocoder -> a fast, offline reverse geocoder in Python
- MuseoToolBox -> a python library to simplify the use of raster/vector, especially for machine learning and remote sensing
- py6s -> an interface to the Second Simulation of the Satellite Signal in the Solar Spectrum (6S) atmospheric Radiative Transfer Model
- timvt -> PostGIS based Vector Tile server built on top of the modern and fast FastAPI framework
- titiler -> A dynamic Web Map tile server using FastAPI
- BRAILS -> an AI-based pipeline for city-scale building information modelling (BIM)
- color-thief-py -> Grabs the dominant color or a representative color palette from an image
- force -> an all-in-one processing engine for medium-resolution Earth Observation image archives
- mapwarper -> an open source map geo-rectification, warping and georeferencing application
- sarpy -> A basic Python library to demonstrate reading, writing, display, and simple processing of complex SAR data using the NGA SICD standard
- buzzard -> Advanced raster and geometry manipulations
- sentinel1denoised -> Thermal noise subtraction, scalloping correction, angular correction
- RStoolbox -> Remote Sensing Data Analysis in R
- kart -> Distributed version-control for geospatial and tabular data
- picogeojson -> a Python library for reading, writing, and working with GeoJSON
- shareloc -> a simple remote sensing geometric library, to perform image coordinates projections between sensor and ground and vice versa
- geoblaze -> Blazing Fast JavaScript Raster Processing Engine
- nasa-wildfires -> Download wildfire hotspots detected by NASA satellites and the Fire Information for Resource Management System (FIRMS)
- SSGP-toolbox -> Simple Spatial Gapfilling Processor. Toolbox for filling gaps in spatial datasets
- imgreg2D -> 2D image registration in python, using napari
- georust -> A collection of geospatial tools and libraries written in Rust
- DataPillager -> Download data from Esri REST service
- xarray -> N-D labeled arrays and datasets. Read Handling multi-temporal satellite images with Xarray. Checkout xarray_leaflet for tiled map plotting and sklearn-xarray for metadata-aware machine learning. Publish Xarray Datasets via a REST API uisng xpublish
- xarray-spatial -> Fast, Accurate Python library for Raster Operations. Implements algorithms using Numba and Dask, free of GDAL
- xarray-beam -> Distributed Xarray with Apache Beam by Google
- Geowombat -> geo-utilities applied to air and space-borne imagery, uses Rasterio, Xarray and Dask for I/O and distributed computing with named coordinates. Create Land Use Classification using Geowombat & Sklearn
- NumpyTiles -> a specification for providing multiband full-bit depth raster data in the browser
- Zarr -> Zarr is a format for the storage of chunked, compressed, N-dimensional arrays. Zarr depends on NumPy
- geoparquet -> Specification for storing geospatial vector data (point, line, polygon) in Parquet
- TFRecord reader for PyTorch
- Pillow is the Python Imaging Library -> this will be your go-to package for image manipulation in python
- opencv-python is pre-built CPU-only OpenCV packages for Python
- kornia is a differentiable computer vision library for PyTorch, like openCV but on the GPU. Perform image transformations, epipolar geometry, depth estimation, and low-level image processing such as filtering and edge detection that operate directly on tensors.
- tifffile -> Read and write TIFF files
- xtiff -> A small Python 3 library for writing multi-channel TIFF stacks
- geotiff -> A noGDAL tool for reading and writing geotiff files
- geolabel-maker -> combine satellite or aerial imagery with vector spatial data to create your own ground-truth dataset in the COCO format for deep-learning models
- imagehash -> Image hashes tell whether two images look nearly identical
- fake-geo-images -> A module to programmatically create geotiff images which can be used for unit tests
- imagededup -> Finding duplicate images made easy! Uses perceptual hashing
- duplicate-img-detection -> A basic duplicate image detection service using perceptual image hash functions and nearest neighbor search, implemented using faiss, fastapi, and imagehash
- rmstripes -> Remove stripes from images with a combined wavelet/FFT approach
- activeloopai Hub -> The fastest way to store, access & manage datasets with version-control for PyTorch/TensorFlow. Works locally or on any cloud. Scalable data pipelines.
- sewar -> All image quality metrics you need in one package
- Satellite imagery label tool -> provides an easy way to collect a random sample of labels over a given scene of satellite imagery
- Missing-Pixel-Filler -> given images that may contain missing data regions (like satellite imagery with swath gaps), returns these images with the regions filled
- color_range_filter -> a script that allows us to find range of colors in images using openCV, and then convert them into geo vectors
- eo4ai -> easy-to-use tools for preprocessing datasets for image segmentation tasks in Earth Observation
- rasterix -> a cross-platform utility built around the GDAL library and the Qt framework designed to process geospatial raster data
- datumaro -> Dataset Management Framework, a Python library and a CLI tool to build, analyze and manage Computer Vision datasets
- sentinelPot -> a python package to preprocess Sentinel 1&2 imagery
- ImageAnalysis -> Aerial imagery analysis, processing, and presentation scripts.
- rastertodataframe -> Convert any GDAL compatible raster to a Pandas DataFrame
- yeoda -> provides lower and higher-level data cube classes to work with well-defined and structured earth observation data
- tiles-to-tiff -> Python script for converting XYZ raster tiles for slippy maps to a georeferenced TIFF image
- telluric -> a Python library to manage vector and raster geospatial data in an interactive and easy way
- Sniffer -> A python application for sorting through geospatial imagery
- pyjeo -> a library for image processing for geospatial data implemented in JRC Ispra, with paper
- vpv -> Image viewer designed for image processing experts
- arop -> Automated Registration and Orthorectification Package
- satellite_image -> Python package to process images from Landsat satellites and return geographic information, cloud mask, numpy array, geotiff
- large_image -> Python modules to work with large multiresolution images
- ResizeRight -> The correct way to resize images or tensors. For Numpy or Pytorch (differentiable)
- pysat -> a package providing a simple and flexible interface for downloading, loading, cleaning, managing, processing, and analyzing scientific measurements
- plcompositor -> c++ tool from Planet to create seamless and cloudless image mosaics from deep stacks of satellite imagery
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
- image-reconstructor-patches -> Reconstruct Image from Patches with a Variable Stride
- rpc_cropper -> A small standalone tool to crop satellite images and their RPC
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
- GEES2Downloader -> Downloader for GEE S2 bands
- Sentinel-2 satellite tiles images downloader from Copernicus -> Minimizes data download and combines multiple tiles to return a single area of interest
- felicette -> Satellite imagery for dummies. Generate JPEG earth imagery from coordinates/location name with publicly available satellite data
- Easy Landsat Download
- A simple python scrapper to get satellite images of Africa, Europe and Oceania's weather using the Sat24 website
- 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
- eodag -> Earth Observation Data Access Gateway
- 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
- Export thumbnails from Earth Engine
- deepsentinel-osm -> A repository to generate land cover labels from OpenStreetMap
- img2dataset -> Easily turn large sets of image urls to an image dataset. Can download, resize and package 100M urls in 20h on one machine
- ohsome2label -> Historical OpenStreetMap (OSM) Objects to Machine Learning Training Samples
- Label Maker -> downloads OpenStreetMap QA Tile information and satellite imagery tiles and saves them as an
.npz
file for use in machine learning training. This should be used instead of the deprecated skynet-data - sentinel2tools -> downloading, basic processing sentinel2 satellite images
- 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
Image augmentation is a technique used to expand a training dataset in order to improve ability of the model to generalise
- AugLy -> A data augmentations library for audio, image, text, and video. By Facebook
- albumentations -> Fast image augmentation library and an easy-to-use wrapper around other libraries
- FoHIS -> Towards Simulating Foggy and Hazy Images and Evaluating their Authenticity
- Kornia provides augmentation on the GPU
- toolbox by ming71 -> various cv tools, such as label tools, data augmentation, label conversion, etc.
- AstroAugmentations -> augmentations designed around astronomical instruments
- Chessmix -> data augmentation method for remote sensing semantic segmentation
- satellite_object_augmentation -> Object-based augmentation for remote sensing images segmentation via CNN
- GeoServer -> an open source server for sharing geospatial data
- Open Data Cube - serve up cubes of data https://www.opendatacube.org/
- https://terria.io/ for pretty catalogues
- Large datasets may come in HDF5 format, can view with -> https://www.hdfgroup.org/downloads/hdfview/
- Climate data is often in netcdf format, which can be opened using xarray
- The xarray docs list a number of ways that data can be stored and loaded.
- TileDB -> a 'Universal Data Engine' to store, analyze and share any data (beyond tables), with any API or tool (beyond SQL) at planet-scale (beyond clusters), open source and managed options. Recently hiring to work with xarray, dask, netCDF and cloud native storage
- BigVector database -> A fully-managed, highly-scalable, and cost-effective database for vectors. Vectorize structured data or orbital imagery and discover new insights
- Read about Serverless PostGIS on AWS Aurora
- Hub -> The fastest way to store, access & manage datasets with version-control for PyTorch/TensorFlow. Works locally or on any cloud. Read Faster Machine Learning Using Hub by Activeloop: A code walkthrough of using the hub package for satellite imagery
- A Comparison of Spatial Functions: PostGIS, Athena, PrestoDB, BigQuery vs RedShift
- Unfolded Studio -> visualization platform building on open source geospatial technologies including kepler.gl, deck.gl and H3. Processing is performed browser side enabling very responsive visualisations.
- DroneDB -> can index and extract useful information from the EXIF/XMP tags of aerial images to display things like image footprint, flight path and image GPS location
- embeddinghub -> A vector database for machine learning embeddings
- Resonant GeoData -> a Django application well suited for catalogging and searching annotated geospatial imagery, shapefiles, and full motion video datasets
- fastdup -> a tool for gaining insights from a large image collection. It can find anomalies, duplicate and near duplicate images
- torchgeo -> popular datasets & models, supported by Microsoft
- 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
- chip-n-scale-queue-arranger by developmentseed -> an orchestration pipeline for running machine learning inference at scale. Supports fastai models
- 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)
- mapwith.ai -> AI assisted mapping of roads with OpenStreetMap. Part of Open-Mapping-At-Facebook
- sahi -> A vision library for performing sliced inference on large images/small objects. Read the arxiv paper and article A practical guide to using Slicing-Aided Hyper Inference for analyzing satellite images
- 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
- dvc -> a git extension to keep track of changes in data, source code, and ML models together
- Weights and Biases -> keep track of your ML projects. Log hyperparameters and output metrics from your runs, then visualize and compare results and quickly share findings with your colleagues
- geo-ml-model-catalog -> provides a common metadata definition for ML models that operate on geospatial data
- hummingbird -> a library for compiling trained traditional ML models into tensor computations, e.g. scikit learn model to pytorch for fast inference on a GPU
- deepchecks -> Deepchecks is a Python package for comprehensively validating your machine learning models and data with minimal effort
- hvplot -> A high-level plotting API for the PyData ecosystem built on HoloViews. Allows overlaying data on map tiles, see Exploring USGS Terrain Data in COG format using hvPlot
- Pyviz examples include several interesting geospatial visualisations
- napari -> napari is a fast, interactive, multi-dimensional image viewer for Python. It’s designed for browsing, annotating, and analyzing large multi-dimensional images. By integrating closely with the Python ecosystem, napari can be easily coupled to leading machine learning and image analysis tools. Note that to view a 3GB COG I had to install the napari-tifffile-reader plugin.
- pixel-adjust -> Interactively select and adjust specific pixels or regions within a single-band raster. Built with rasterio, matplotlib, and panel.
- Plotly Dash can be used for making interactive dashboards
- folium -> a python wrapper to the excellent leaflet.js which makes it easy to visualize data that’s been manipulated in Python on an interactive leaflet map. Also checkout the streamlit-folium component for adding folium maps to your streamlit apps
- ipyearth -> An IPython Widget for Earth Maps
- geopandas-view -> Interactive exploration of GeoPandas GeoDataFrames
- geogif -> Turn xarray timestacks into GIFs
- leafmap -> geospatial analysis and interactive mapping with minimal coding in a Jupyter environment
- xmovie -> A simple way of creating movies from xarray objects
- acquisition-time -> Drawing (Satellite) acquisition dates in a timeline
- splot -> Lightweight plotting for geospatial analysis in PySAL
- prettymaps -> A small set of Python functions to draw pretty maps from OpenStreetMap data
- Tools to Design or Visualize Architecture of Neural Network
- AstronomicAL -> An interactive dashboard for visualisation, integration and classification of data using Active Learning
- pyodi -> A simple tool for explore your object detection dataset
- Interactive-TSNE -> a tool that provides a way to visually view a PyTorch model's feature representation for better embedding space interpretability
- fastgradio -> Build fast gradio demos of fastai learners
- pysheds -> Simple and fast watershed delineation in python
- mapboxgl-jupyter -> Use Mapbox GL JS to visualize data in a Python Jupyter notebook
- cartoframes -> integrate CARTO maps, analysis, and data services into data science workflows
- datashader -> create meaningful representations of large datasets quickly and flexibly. Read Creating Visual Narratives from Geospatial Data Using Open-Source Technology Maxar blog post
- Kaleido -> Fast static image export for web-based visualization libraries with zero dependencies
- Embedding Projector in Wandb -> allows users to plot multi-dimensional embeddings on a 2D plane using common dimension reduction algorithms like PCA, UMAP, and t-SNE
- PlotNeuralNet -> Latex code for making neural networks diagrams
- Damage Assessment Visualizer -> leverages satellite imagery from a disaster region to visualize conditions of building and structures before and after a disaster
- NN-SVG -> is a tool for creating Neural Network (NN) architecture drawings parametrically rather than manually
- bbox-visualizer -> Make drawing and labeling bounding boxes easy as cake
- jupyter-bbox-widget -> A Jupyter widget for annotating images with bounding boxes
- EOmaps -> A library to create interactive maps of geographical datasets
- H3-Pandas -> Integrates H3 with GeoPandas and Pandas
- gmplot -> a matplotlib-like interface to render all the data you'd like on top of Google Maps
- NPYViewer -> a simple GUI tool that provides multiple ways to view
.npy
files containing 2D NumPy Arrays - pyGEOVis -> Visualize geo-tiff/json based on folium
- bokeh-tiler -> Tile large geospatial images for use in Bokeh. Read Serving up SpaceNet Imagery for Bokeh
- torchshow -> Visualize PyTorch tensor in one-line of code
- pixels -> Mapping and charting pixels from remote sensing Earth observation data with JavaScript
- MulimgViewer -> a multi-image viewer that can open multiple images in one interface
- cnn-explainer -> Learning Convolutional Neural Networks with Interactive Visualization
- Overlay-GeoTiff-Raster-with-nodata-On-Interactive-Map
- WaterDetect -> an end-to-end algorithm to generate open water cover mask, specially conceived for L2A Sentinel 2 imagery. It can also be used for Landsat 8 images and for other multispectral clustering/segmentation tasks.
- GatorSense Hyperspectral Image Analysis Toolkit -> This repo contains algorithms for Anomaly Detectors, Classifiers, Dimensionality Reduction, Endmember Extraction, Signature Detectors, Spectral Indices
- detectree -> Tree detection from aerial imagery
- pylandstats -> compute landscape metrics
- dg-calibration -> Coefficients and functions for calibrating DigitalGlobe imagery
- python-fmask -> Implementation in Python of the cloud and shadow algorithms known collectively as Fmask
- pyshepseg -> Python implementation of image segmentation algorithm of Shepherd et al (2019) Operational Large-Scale Segmentation of Imagery Based on Iterative Elimination.
- Shadow-Detection-Algorithm-for-Aerial-and-Satellite-Images -> shadow detection and correction algorithm
- faiss -> A library for efficient similarity search and clustering of dense vectors, e.g. image embeddings
- awesome-spectral-indices -> A ready-to-use curated list of Spectral Indices for Remote Sensing applications
- urban-footprinter -> A convolution-based approach to detect urban extents from raster datasets
- ocean_color -> Tools and algorithms for drone and satellite based ocean color science
- poliastro -> pure Python library for interactive Astrodynamics and Orbital Mechanics, with a focus on ease of use, speed, and quick visualization
- acolite -> generic atmospheric correction module
- pmapper -> a super-resolution and deconvolution toolkit for python. PMAP stands for Poisson Maximum A-Posteriori, a highly flexible and adaptable algorithm for these problems
- pylandtemp -> Algorithms for computing global land surface temperature and emissivity from NASA's Landsat satellite images with Python
- sarsen -> Algorithms and utilities for Synthetic Aperture Radar (SAR) sensors
- sun-position -> code for computing sun position
- simple_ortho -> Fast and simple orthorectification of images with known DEM and camera model
- imageResolution -> Simple spatial resolution calculator for nadir & oblique aerial imagery
- Spectral-Clustering -> normalized and unnormalized spectral clustering algorithms
- Fogpy -> nowcasting of fog and low stratus clouds
- orthorectification -> Orthorectification in Python. Note that all of this functionality already exists in libraries like GDAL and others. The goal of this codebase was to present and deep dive into these subroutines
- Flood-Severity-Estimation -> estimate the height of the water in geo-referenced photos that depict floods using DEMs from JAXA
- coastline-extraction -> Methods to identify and extract coastline from remote sensed data
- Near real-time shadow detection and removal in remote sensing imagery application
- image-registration -> using Point Feature Detection, Normalized DLT, RANSAC & Image Warping
- pyTSEB -> A python Two Source Energy Balance model for estimation of evapotranspiration with remote sensing data
- libpredict -> satellite orbit prediction library
So improtant this pair gets their own section. GDAL is THE command line tool for reading and writing raster and vector geospatial data formats. If you are using python you will probably want to use Rasterio which provides a pythonic wrapper for GDAL
- GDAL and on twitter
- GDAL is a dependency of Rasterio and can be difficult to build and install. I recommend using conda, brew (on OSX) or docker in these situations
- GDAL docker quickstart:
docker pull osgeo/gdal
thendocker run --rm -v $(pwd):/data/ osgeo/gdal gdalinfo /data/cog.tiff
- Even Rouault maintains GDAL, please consider sponsoring him
- Rasterio -> reads and writes GeoTIFF and other raster formats and provides a Python API based on Numpy N-dimensional arrays and GeoJSON. There are a variety of plugins that extend Rasterio functionality.
- rio-cogeo -> Cloud Optimized GeoTIFF (COG) creation and validation plugin for Rasterio.
- rioxarray -> geospatial xarray extension powered by rasterio
- aws-lambda-docker-rasterio -> AWS Lambda Container Image with Python Rasterio for querying Cloud Optimised GeoTiffs. See this presentation
- godal -> golang wrapper for GDAL
- Write rasterio to xarray
- Loam: A Client-Side GDAL Wrapper for Javascript
- Short list of useful GDAL commands while working in data science for remote sensing
- gdal-segment -> implements various segmentation algorithms over raster images
- aws-gdal-robot -> A proof of concept implementation of running GDAL based jobs using AWS S3/Lambda/Batch
- gdal2tiles -> A python library for generating map tiles based on gdal2tiles.py from GDAL project
A Cloud Optimized GeoTIFF (COG) is a regular GeoTIFF that supports HTTP range requests, enabling downloading of specific tiles rather than the full file. COG generally work normally in GIS software such as QGIS, but are larger than regular GeoTIFFs
- https://www.cogeo.org/
- cog-best-practices
- COGs in production
- rio-cogeo -> Cloud Optimized GeoTIFF (COG) creation and validation plugin for Rasterio.
- aiocogeo -> Asynchronous cogeotiff reader (python asyncio)
- Landsat data in cloud optimised (COG) format analysed for NVDI with medium article Cloud Native Geoprocessing of Earth Observation Satellite Data with Pangeo.
- Working with COGS and STAC in python using geemap
- Load, Experiment, and Download Cloud Optimized Geotiffs (COG) using Python with Google Colab -> short read which covers finding COGS, opening with Rasterio and doing some basic manipulations, all in a Colab Notebook.
- Exploring USGS Terrain Data in COG format using hvPlot -> local COG from public AWS bucket, open with rioxarray, visualise with hvplot. See the Jupyter notebook
- aws-lambda-docker-rasterio -> AWS Lambda Container Image with Python Rasterio for querying Cloud Optimised GeoTiffs. See this presentation
- cogbeam -> a python based Apache Beam pipeline, optimized for Google Cloud Dataflow, which aims to expedite the conversion of traditional GeoTIFFs into COGs
- cogserver -> Expose a GDAL file as a HTTP accessible on-the-fly COG
- Displaying a gridded dataset on a web-based map - Step by step guide for displaying large GeoTIFFs, using Holoviews, Bokeh, and Datashader
- cog_worker -> Scalable arbitrary analysis on COGs
The STAC specification provides a common metadata specification, API, and catalog format to describe geospatial assets, so they can more easily indexed and discovered.
- Spec at https://github.com/radiantearth/stac-spec
- STAC 1.0.0: The State of the STAC Software Ecosystem
- Planet Disaster Data catalogue has the catalogue source on Github and uses the stac-browser
- Getting Started with STAC APIs intro article
- SpatioTemporal Asset Catalog API specification -> an API to make geospatial assets openly searchable and crawlable
- stacindex -> STAC Catalogs, Collections, APIs, Software and Tools
- Several useful repos on https://github.com/sat-utils
- Intake-STAC -> Intake-STAC provides an opinionated way for users to load Assets from STAC catalogs into the scientific Python ecosystem. It uses the intake-xarray plugin and supports several file formats including GeoTIFF, netCDF, GRIB, and OpenDAP.
- sat-utils/sat-search -> Sat-search is a Python 3 library and a command line tool for discovering and downloading publicly available satellite imagery using STAC compliant API
- franklin -> A STAC/OGC API Features Web Service focused on ease-of-use for end-users.
- stacframes -> A Python library for working with STAC Catalogs via Pandas DataFrames
- sat-api-pg -> A Postgres backed STAC API
- stactools -> Command line utility and Python library for STAC
- pystac -> Python library for working with any STAC Catalog
- STAC Examples for Nightlights data -> minimal example STAC implementation for the Light Every Night dataset of all VIIRS DNB and DMSP-OLS nighttime satellite data
- stackstac -> Turn a STAC catalog into a dask-based xarray
- stac-fastapi -> STAC API implementation with FastAPI
- stac-fastapi-elasticsearch -> Elasticsearch backend for stac-fastapi
- ml-aoi -> An Item and Collection extension to provide labeled training data for machine learning models
- Discoverable and Reusable ML Workflows for Earth Observation -> part 1 and part 2 with the Geospatial Machine Learning Model Catalog (GMLMC)
- eoAPI -> Earth Observation API with STAC + dynamic Raster/Vector Tiler
- stac-nb -> STAC in Jupyter Notebooks
- xstac -> Generate STAC Collections from xarray datasets
- qgis-stac-plugin -> QGIS plugin for reading STAC APIs
- cirrus-geo -> a STAC-based processing pipeline
- stac-interactive-search -> A simple (browser based) UI for searching STAC APIs
- easystac -> A Python package for simple STAC queries
- stacmap -> Explore STAC items with an interactive map
- odc-stac -> Load STAC items into xarray Datasets. Process locally or distribute data loading and computation with Dask.
- AWS Lambda SenCloud Monitoring -> keep up-to-date your own derived data from the Sentinel-2 COG imagery archive using AWS lambda
OpenStreetMap (OSM) is a map of the world, created by people like you and free to use under an open license. Quite a few publications use OSM data for annotations & ground truth. Note that the data is created by volunteers and the quality can be variable
- osmnx -> Retrieve, model, analyze, and visualize data from OpenStreetMap
- ohsome2label -> Historical OpenStreetMap Objects to Machine Learning Training Samples
- Label Maker -> downloads OpenStreetMap QA Tile information and satellite imagery tiles and saves them as an
.npz
file for use in machine learning training. This should be used instead of the deprecated skynet-data - prettymaps -> A small set of Python functions to draw pretty maps from OpenStreetMap data
- Joint Learning from Earth Observation and OpenStreetMap Data to Get Faster Better Semantic Maps -> fusion based architectures and coarse-to-fine segmentation to include the OpenStreetMap layer into multispectral-based deep fully convolutional networks, arxiv paper
- Identifying Buildings in Satellite Images with Machine Learning and Quilt -> NDVI & edge detection via gaussian blur as features, fed to TPOT for training with labels from OpenStreetMap, modelled as a two class problem, “Buildings” and “Nature”
- Import OpenStreetMap data into Unreal Engine 4
- OSMDeepOD -> perform object detection with retinanet
- Match Bing Map Aerial Imagery with OpenStreetMap roads
- Computer Vision With OpenStreetMap and SpaceNet — A Comparison
- url-map -> A tiny web app to create images from OpenStreetMap maps
A popular open source alternative to ArcGIS, desktop appication written in python and extended with plugins
- QGIS
- Create, edit, visualise, analyse and publish geospatial information. Open source alternative to ArcGIS.
- Python scripting
- Plugins extend the functionality of QGIS - note these are essentially python scripts
- Create your own plugins using the QGIS Plugin Builder
- DeepLearningTools plugin -> aid training Deep Learning Models
- Mapflow.ai plugin -> various models to extract building footprints etc from Maxar imagery
- dzetsaka plugin -> classify different kind of vegetation
- Coregistration-Qgis-processing -> Qgis processing plugin for image co-registration; projection and pixel alignment based on a target image, uses Arosics
- qgis-stac-plugin -> QGIS plugin for reading STAC APIs
- buildseg -> a building extraction plugin of QGIS based on ONNX
- deep-learning-datasets-maker -> a QGIS plugin to make datasets creation easier for raster and vector data
- Modzy-QGIS-Plugin -> demos Vehicle Detection model
- kart -> provides modern, open source, distributed version-control for geospatial and tabular datasets
- Plugin for Landcover Classification -> capable of implementing machine learning algorithms such as Random forest, SVM and CNN algorithms such as UNET through a simple GUI framework.
- [pg_tileserv])(https://github.com/CrunchyData/pg_tileserv) -> A very thin PostGIS-only tile server in Go. Takes in HTTP tile requests, executes SQL, returns MVT tiles.
- pg_featureserv -> Lightweight RESTful Geospatial Feature Server for PostGIS in Go
- osm-instance-segmentation -> QGIS plugin for finding changes in vector data from orthophotos (i.e. aerial imagery) using tensorflow
- Semi-Automatic Classification Plugin -> supervised classification of remote sensing images, providing tools for the download, the preprocessing and postprocessing of images
Dask provides advanced parallelism and distributed out-of-core computation with a dask.dataframe
module designed to scale pandas.
- Dask works with your favorite PyData libraries to provide performance at scale for the tools you love
- Coiled is a managed Dask service. Get started by reading Democratizing Satellite Imagery Analysis with Dask
- Dask with PyTorch for large scale image analysis
- dask-geopandas -> offers geospatial capabilities of GeoPandas backed by Dask
- stackstac -> Turn a STAC catalog into a dask-based xarray
- dask-geomodeling -> On-the-fly operations on geographical maps
- dask-image -> many SciPy ndimage functions implemented
- Detecting Green Roofs in Toronto -> compares deep learning (Mask R-CNN & fast.ai) and classical approach using NDVI scaled on Dask
- Analyze terabyte-scale geospatial datasets with Dask and Jupyter on AWS
Flask is often used to serve up a simple web app based on templated HTML files
- FastMap -> Flask deployment of deep learning model performing segmentation task on aerial imagery building footprints
- Querying Postgres with Python Fastapi Backend and Leaflet-Geoman Frontend
- cropcircles -> a purely-client-side web app originally designed for accurately cropping circular center pivot irrigation fields from aerial imagery
- django-large-image -> Django endpoints for working with large images for tile serving
- Earth Classification API -> Flask based app that serves a CNN model and interfaces with a React and Leaflet front-end
- Demo flask map app -> Building Python-based, database-driven web applications (with maps!) using Flask, SQLite, SQLAlchemy and MapBox
- Building a Web App for Instance Segmentation using Docker, Flask and Detectron2
- greppo -> Build & deploy geospatial applications quick and easy. Read Build a geospatial dashboard in Python using Greppo
- localtileserver -> image tile server for viewing geospatial rasters with ipyleaflet, folium, or CesiumJS locally in Jupyter or remotely in Flask applications. Checkout bokeh-tiler
- flask-geocoding-webapp -> A quick example Flask application for geocoding and rendering a webmap using Folium/Leaflet
- flask-vector-tiles -> A simple Flask/leaflet based webapp for rendering vector tiles from PostGIS
- Crash Severity Prediction -> using CAS Open Data and Maxar Satellite Imagery, React app
- wildfire-detection-from-satellite-images-ml -> simple flask app for classification
- SlumMappingViaRemoteSensingImagery -> learning slum segmentation and localization using satellite imagery and visualising on a flask app
- cloud-removal-deploy -> flask app for cloud removal
- clearcut_detection -> research & web-service for clearcut detection
Streamlit is an awesome python framework for creating apps with python. Additionally they will host the apps free of charge. Here I list resources which are EO related. Note that a component is an addon which extends Streamlits basic functionality
- cogviewer -> Simple Cloud Optimized GeoTIFF viewer
- cogcreator -> Simple Cloud Optimized GeoTIFF Creator. Generates COG from GeoTIFF files.
- cogvalidator -> Simple Cloud Optimized GeoTIFF validator
- streamlit-image-juxtapose -> A simple Streamlit component to compare images in Streamlit apps
- streamlit-folium -> Streamlit Component for rendering Folium maps
- streamlit-keplergl -> Streamlit component for rendering kepler.gl maps
- streamlit-light-leaflet -> Streamlit quick & dirty Leaflet component that sends back coordinates on map click
- leafmap-streamlit -> various examples showing how to use streamlit to: create a 3D map using Kepler.gl, create a heat map, display a GeoJSON file on a map, and add a colorbar or change the basemap on a map
- geemap-apps -> build a multi-page Earth Engine App using streamlit and geemap
- streamlit-geospatial -> A multi-page streamlit app for geospatial
- geospatial-apps -> A collection of streamlit web apps for geospatial applications
- BirdsPyView -> convert images to top-down view and get coordinates of objects
- Build a useful web application in Python: Geolocating Photos -> Step by Step tutorial using Streamlit, Exif, and Pandas
- Wild fire detection app
- dvc-streamlit-example -> how dvc and streamlit can help track model performance during R&D exploration
- stacdiscovery -> Simple STAC Catalogs discovery tool
- SARveillance -> Sentinel-1 SAR time series analysis for OSINT use
- streamlit-template -> A streamlit app template for geospatial applications
- streamlit-labelstudio -> A Streamlit component that provides an annotation interface using the LabelStudio Frontend
- streamlit-img-label -> a graphical image annotation tool using streamlit. Annotations are saved as XML files in PASCAL VOC format
- Streamlit-Authenticator -> A secure authentication module to validate user credentials in a Streamlit application
- prettymapp -> Create beautiful maps from OpenStreetMap data in a webapp
- mapa-streamlit -> creating 3D-printable models of the earth surface based on mapa
- BoulderAreaDetector -> CNN to classify whether a satellite image shows an area would be a good rock climbing spot or not, deployed to streamlit app
- streamlit-remotetileserver -> Easily visualize a remote raster given a URL and check if it is a valid Cloud Optimized GeoTiff (COG)
- Streamlit_Image_Sorter -> Generic Image Sorter Interface for Streamlit
- Streamlit-Folium + Snowflake + OpenStreetMap -> demonstrates the power of Snowflake Geospatial data types and queries combined with Streamlit
Julia looks and feels a lot like Python, but can be much faster. Julia can call Python, C, and Fortran libraries and is capabale of C/Fortran speeds. Julia can be used in the familiar Jupyterlab notebook environment
- Why you should invest in Julia now, as a Data Scientist
- eBook: Introduction to Datascience with Julia
- FastAI.jl -> Repository of best practices for deep learning in Julia, inspired by fastai
- Flux.jl -> the ML library that doesn't make you tensor. Checkout The Deep Learning with Julia book
- GDAL.jl -> Thin Julia wrapper for GDAL
- GeoInterface.jl -> A Julia Protocol for Geospatial Data
- GeoJSON.jl -> Utilities for working with GeoJSON data
- JuliaImages: image processing and machine vision for Julia
- Julia_Geospatial -> Examples for a blog series on Geospatial Julia using ArchGDAL
- MLJ.jl -> A Julia machine learning framework
- Proj4.jl -> Julia wrapper for the PROJ cartographic projections library
- Rasters.jl -> types and methods for reading, writing and manipulating rasterized spatial data including GeoTIFF and NetCDF
- RemoteS.jl -> Remote sensing data processing
- SatelliteToolbox.jl -> This package contains several functions to build simulations related with satellites
- SatelliteDynamics.jl -> a satellite dynamics modeling package
- Sentinel.jl -> library for processing ESA Sentinel 2 satellite data
- DeepSat-Kaggle -> uses Julia
- Adam Van Etten is doing interesting things in object detection and segmentation
- Andrew Cutts cohosts the Scene From Above podcast and has many interesting repos
- Ankit Kariryaa published a recent nature paper on tree detection
- Chris Holmes is doing great things at Planet
- Christoph Rieke maintains a very popular imagery repo and has published his thesis on segmentation
- Daniel J Dufour builds geotiff.io and more
- Daniel Moraite is publishing some excellent articles
- Even Rouault maintains several of the most critical tools in this domain such as GDAL
- Fatih Cagatay Akyon aka fcakyon is maintaining sahi and many other useful projects
- Gonzalo Mateo García is working on clouds and Water segmentation with CNNs
- Isaac Corley is working on super-resolution and torchrs
- Jake Shermeyer many interesting repos
- Martin Black is tech lead at Sparkgeo in the UK
- Maxime Lenormand authors the Minds Behind Maps podcast
- Mike Skaug is a Data scientist at Aurora Insight
- Mort Canty is an expert in change detection
- Mykola Kozyr is working on streamlit apps
- Nicholas Murray is an Australia-based scientist with a focus on delivering the science necessary to inform large scale environmental management and conservation
- Oscar Mañas is advancing the state of the art in SSL
- Qiusheng Wu is an Assistant Professor in the Department of Geography at the University of Tennessee, checkout his YouTube channel
- Rodrigo Caye Daudt is doing great work on change detection
- Robin Wilson is a former academic who is very active in the satellite imagery space
- Rohit Singh has some great Medium articles
For a full list of companies, on and off Github, checkout awesome-geospatial-companies. The following lists companies with interesting Github profiles
- Airbus Defence And Space
- Agricultural Impacts Research Group
- Astraea
- Applied-GeoSolutions
- Azavea -> lots of interesting repos around STAC
- CARTO -> "The leading platform for Location Intelligence and Spatial Data Science"
- Cervest -> Climate Intelligence
- Citymapper
- Defense Innovation Unit (DIU) -> run the xView challenges
- Development Seed
- Descartes Labs
- Dymaxion Labs
- DHI GRAS
- ElementAI
- Element 84
- ESA-PhiLab
- Esri
- Geoalert -> checkout their Medium articles
- Global Environmental Remote Sensing Laboratory
- GIC-AIT -> Aisan Institute of Technology
- HSG-AIML -> Artificial Intelligence & Machine Learning (AI:ML Lab) at HSG
- Hummingbird Technologies Ltd -> sustainability and optimised food production
- ICEYE
- indigo-ag
- L3Harris Geospatial Solutions (HGSI)
- Mapbox -> thanks for Rasterio!
- Maxar-Analytics
- ml6team
- NASA
- NASA-JPL -> THE Jet Propulsion Laboratory
- National Geospatial-Intelligence Agency USA
- Near Space Labs
- OpenGeoScales
- Open Geospatial Consortium -> the OGC
- Ordnance Survey
- OroraTech
- Planet Labs -> thanks for COGS!
- Preligens -> formerly Earthcube Lab
- pyronear -> Preserving forests from wildfires one commit at a time
- SatelliteVu -> thermal imagery from space!
- Sinergise -> maintaining Sentinel-hub
- SIAnalytics -> Korean AI firm
- SkyTruth
- SpaceKnow
- Sparkgeo
- Tracasa -> created SEN2ROAD
- up42 -> Airbus spinout providing 'The easiest way to build geospatial solutions'
- Vortexa -> energy & shipping insights
- Introduction to Geospatial Raster and Vector Data with Python -> an intro course on a single page
- Manning: Monitoring Changes in Surface Water Using Satellite Image Data
- Automating GIS processes includes a lesson on automating raster data processing
- For deep learning checkout the fastai course which uses the fastai library & pytorch
- pyimagesearch.com hosts courses and plenty of material using opencv and keras
- Official opencv courses on opencv.org
- TensorFlow Developer Professional Certificate
- Geospatial_Python_CourseV1 -> a collection of blog posts turned into a course format
- Satellite Machine Learning Training -> lessons on how to apply Machine Learning analysis to satellite data
- DL-for-satellite-image-analysis -> short and minimalistic examples covering fundamentals of Deep Learning for Satellite Image Analysis using Jupyter notebooks, created by lakmalnd
- Machine Learning on Earth Observation: ML4EO Bootcamp
- Artificial Intelligence (AI) for Earth Monitoring
- Deep Learning DIY
- UvA Deep Learning Tutorials
- Practical Data Science Specialization -> AWS specific, develop and scale your data science projects into the cloud using Amazon SageMaker
- Disaster Risk Monitoring Using Satellite Imagery by NVIDIA
- Course materials for: Geospatial Data Science
- Stanford CS231n: Deep Learning for Computer Vision
- Data-Science-For-Beginners -> by Microsoft
- AI-For-Beginners -> by Microsoft
- Remote Sensing Tutorials -> by the Canada Centre for Mapping and Earth Observation
- I highly recommend Deep Learning with Python by François Chollet
- Image Analysis, Classification and Change Detection in Remote Sensing With Algorithms for Python, Fourth Edition, By Morton John Canty -> code here
- Practical Deep Learning for Cloud, Mobile & Edge
- d2l.ai -> Interactive deep learning book with code, math, and discussions
- interpretable-ml-book
- pyGIS -> an online textbook covering all the core geospatial functionality available in Python
- Deep Learning Interviews book
- Geographic Data Science with Python -> data science applied to geographic problems and data
- eBook: Introduction to Datascience with Julia
- Deep Learning In Production Book
- fast AI geospatial study group
- Kaggle Intro to Satellite imagery Analysis group
- Omdena brings together small teams of engineers to work on AI projects
Signup for the geospatial-jobs-newsletter and Pangeo discourse lists multiple jobs, global. List of job portals below:
- Capella Space
- Development SEED
- Earthdaily
- EO-jobs -> List of earth observation companies and job sites
- Planet
- Satellite Vu
- Sparkgeo
My background is in optical physics, and I hold a PhD from NanoPhotonics group at Cambridge on the topic of surface plasmons. Since academia I have held a variety of roles in industry, including as a researcher at the former Sharp Labs Europe, and later as an engineer of optical systems at Surrey Satellites (SSTL). It was whilst at SSTL that I started this repository as a personal resource. Over time I have gravitated towards data science and deep learning with python, and I now work as a senior data scientist at Satellite Vu. Please feel free to connect with me on Twitter & LinkedIn, and do let me know if this repository is useful to your work as this is a great motivator!