Home

Awesome

Detection of Floating Objects

Check our ISPRS Conference Paper (Annals) and please consider citing

Mifdal, J., Longépé, N., and Rußwurm, M.: TOWARDS DETECTING FLOATING OBJECTS ON A GLOBAL SCALE WITH LEARNED SPATIAL FEATURES USING SENTINEL 2, ISPRS Ann. Photogramm. Remote Sens. Spatial Inf. Sci., V-3-2021, 285–293, https://doi.org/10.5194/isprs-annals-V-3-2021-285-2021, 2021.

Check also our most recent publication OCEANS Conference Paper

Carmo, R., Mifdal, J., and Rußwurm, M.: Detecting Macro Floating Objects on Coastal Water Bodies using Sentinel-2 Data, OCEANS 2021 San Diego – Porto, 2021.

Getting Started

The dataset is assumed to be located at /data. It can be downloaded from this link with the script python code/download.py /data

Environments

Anaconda

conda create -n floatingobjects pip
conda activate floatingobjects
conda install -c conda-forge gdal # GDAL needs to be conda installed
pip install -r requirements.txt

Docker

A docker with configured environment can be built and run via

# build
docker build -t floatingobjects .
# run
docker run -v /data:/data floatingobjects python main.py

Predict

Usa a model snapshot (--snapshot-path) to predict floating objects on an image (--image-path). The results will be stored in as tif in the location specified by --prediction-path

python code/predictor.py --prediction-path "prediction.tif" \\
    --image-path "Limassol20181215_l2a.tif" \\
    --snapshot-path unet-posweight10-lr001-aug1.pth.tar

Train

For the 5-fold training run

python code/main.py train --results-dir models --data-path /data

Load pretrained models using PyTorch Hub

Here you can load the models with pretrained weights from the 2-fold training of U-Net and MA-Net, according to what has been published in OCEANS Conference Paper

import torch
unet_seed0 = torch.hub.load('ESA-PhiLab/floatingobjects:master', 'unet_seed0')
unet_seed1 = torch.hub.load('ESA-PhiLab/floatingobjects:master', 'unet_seed1')
manet_seed0 = torch.hub.load('ESA-PhiLab/floatingobjects:master', 'manet_seed0')
manet_seed1 = torch.hub.load('ESA-PhiLab/floatingobjects:master', 'manet_seed1')

Dataset

Download

The dataset can be manually downloaded using this link and unzipped via

python code/download.py ./data/

to ./data

Dataset Overview and Predictions

Click on images for a detailed overview powered by the COG-Explorer of EOX.

The RGB, NDVI, FDI overview created from the 12/13-band Sentinel 2 images with code/create_overview_table.py.

Region/DateRGBNDVIFDIpredictions
accra_20181031accra_20181031accra_20181031accra_20181031accra_20181031
danang_20181005danang_20181005danang_20181005danang_20181005danang_20181005
kolkata_20201115_l2akolkata_20201115_l2akolkata_20201115_l2akolkata_20201115_l2akolkata_20201115_l2a
lagos_20190101_l2alagos_20190101_l2alagos_20190101_l2alagos_20190101_l2alagos_20190101_l2a
longxuyen_20181102longxuyen_20181102longxuyen_20181102longxuyen_20181102longxuyen_20181102
mandaluyong_20180314mandaluyong_20180314mandaluyong_20180314mandaluyong_20180314mandaluyong_20180314
panama_20190425_l2apanama_20190425_l2apanama_20190425_l2apanama_20190425_l2apanama_20190425_l2a
riodejaneiro_20180504_l2ariodejaneiro_20180504_l2ariodejaneiro_20180504_l2ariodejaneiro_20180504_l2ariodejaneiro_20180504_l2a
sandiego_20180804_l2asandiego_20180804_l2asandiego_20180804_l2asandiego_20180804_l2asandiego_20180804_l2a
venice_20180630_l2avenice_20180630_l2avenice_20180630_l2avenice_20180630_l2avenice_20180630_l2a
venice_20180928_l2avenice_20180928_l2avenice_20180928_l2avenice_20180928_l2avenice_20180928_l2a
vungtau_20180423vungtau_20180423vungtau_20180423vungtau_20180423vungtau_20180423

Tests

The dataset.py tests require a downloaded dataset

export TESTS_DATA_ROOT=/data
python tests/dataset.py

and check if all samples of the datasets can be returned and that no overlap exists in the train/test splits.

Bibtex

@Article{mifdal2021floating,
    AUTHOR = {Mifdal, J. and Long\'ep\'e, N. and Ru{\ss}wurm, M.},
    TITLE = {TOWARDS DETECTING FLOATING OBJECTS ON A GLOBAL SCALE WITH LEARNED SPATIAL FEATURES USING SENTINEL 2},
    JOURNAL = {ISPRS Annals of the Photogrammetry, Remote Sensing and Spatial Information Sciences},
    VOLUME = {V-3-2021},
    YEAR = {2021},
    PAGES = {285--293},
    URL = {https://www.isprs-ann-photogramm-remote-sens-spatial-inf-sci.net/V-3-2021/285/2021/},
    DOI = {10.5194/isprs-annals-V-3-2021-285-2021}
}