CoolFace
Datasetpublic

csaybar/CloudSEN12-high

🚨 New Dataset Version Released! We are excited to announce the release of Version [1.1] of our dataset! This update includes: [L2A & L1C support]. [Temporal support]. [Check the data without downloading (Cloud-optimized properties)]. 📥 Go to: https://huggingface.co/datasets/tacofoundation/cloudsen12 and follow the instructions in colab CloudSEN12 HIGH-QUALITY A Benchmark Dataset for Cloud Semantic… See the full description on the dataset page: https://huggingface.co/datasets/csaybar/CloudSEN12-high.

sourceHugging Facecc-by-nc-4.0updated 2y agoView on Hugging Face
2likes2.2kdownloads
Dataset Card

🚨 New Dataset Version Released!

We are excited to announce the release of Version [1.1] of our dataset!

This update includes:

  • [L2A & L1C support].
  • [Temporal support].
  • [Check the data without downloading (Cloud-optimized properties)].

📥 Go to: https://huggingface.co/datasets/tacofoundation/cloudsen12 and follow the instructions in colab

CloudSEN12 HIGH-QUALITY

A Benchmark Dataset for Cloud Semantic Understanding

CloudSEN12 Images

CloudSEN12 is a LARGE dataset (~1 TB) for cloud semantic understanding that consists of 49,400 image patches (IP) that are evenly spread throughout all continents except Antarctica. Each IP covers 5090 x 5090 meters and contains data from Sentinel-2 levels 1C and 2A, hand-crafted annotations of thick and thin clouds and cloud shadows, Sentinel-1 Synthetic Aperture Radar (SAR), digital elevation model, surface water occurrence, land cover classes, and cloud mask results from six cutting-edge cloud detection algorithms.

CloudSEN12 is designed to support both weakly and self-/semi-supervised learning strategies by including three distinct forms of hand-crafted labeling data: high-quality, scribble and no-annotation. For more details on how we created the dataset see our paper.

Ready to start using [CloudSEN12](https://cloudsen12.github.io/)?

[Download Dataset](https://cloudsen12.github.io/download.html)

[Paper - Scientific Data](https://www.nature.com/articles/s41597-022-01878-2)

[Inference on a new S2 image](https://colab.research.google.com/github/cloudsen12/examples/blob/master/example02.ipynb)

[Enter to cloudApp](https://github.com/cloudsen12/CloudApp)

[CloudSEN12 in Google Earth Engine](https://gee-community-catalog.org/projects/cloudsen12/)

<br>

General Description

<br>

FileNameScaleWavelengthDescriptionDatatype
L1C & L2AB10.0001443.9nm (S2A) / 442.3nm (S2B)Aerosols.np.int16
B20.0001496.6nm (S2A) / 492.1nm (S2B)Blue.np.int16
B30.0001560nm (S2A) / 559nm (S2B)Green.np.int16
B40.0001664.5nm (S2A) / 665nm (S2B)Red.np.int16
B50.0001703.9nm (S2A) / 703.8nm (S2B)Red Edge 1.np.int16
B60.0001740.2nm (S2A) / 739.1nm (S2B)Red Edge 2.np.int16
B70.0001782.5nm (S2A) / 779.7nm (S2B)Red Edge 3.np.int16
B80.0001835.1nm (S2A) / 833nm (S2B)NIR.np.int16
B8A0.0001864.8nm (S2A) / 864nm (S2B)Red Edge 4.np.int16
B90.0001945nm (S2A) / 943.2nm (S2B)Water vapor.np.int16
B110.00011613.7nm (S2A) / 1610.4nm (S2B)SWIR 1.np.int16
B120.00012202.4nm (S2A) / 2185.7nm (S2B)SWIR 2.np.int16
L1C_B100.00011373.5nm (S2A) / 1376.9nm (S2B)Cirrus.np.int16
L2A_AOT0.001-Aerosol Optical Thickness.np.int16
WVP0.001-Water Vapor Pressure.np.int16
TCI_R1-True Color Image, Red.np.int16
TCI_G1-True Color Image, Green.np.int16
TCI_B1-True Color Image, Blue.np.int16
S1_VV15.405GHzDual-band cross-polarization, vertical transmit/horizontal receive.np.float32
VH15.405GHzSingle co-polarization, vertical transmit/vertical receive.np.float32
angle1-Incidence angle generated by interpolating the ‘incidenceAngle’ property.np.float32
EXTRA_CDI0.0001-Cloud Displacement Index.np.int16
Shwdirection0.01-Azimuth. Values range from 0°- 360°.np.int16
elevation1-Elevation in meters. Obtained from MERIT Hydro datasets.np.int16
ocurrence1-JRC Global Surface Water. The frequency with which water was present.np.int16
LC1001-Copernicus land cover product. CGLS-LC100 Collection 3.np.int16
LC101-ESA WorldCover 10m v100 product.np.int16
LABEL_fmask1-Fmask4.0 cloud masking.np.int16
QA601-SEN2 Level-1C cloud mask.np.int8
s2cloudless1-sen2cloudless results.np.int8
sen2cor1-Scene Classification band. Obtained from SEN2 level 2A.np.int8
cdfcnnrgbi1-López-Puigdollers et al. results based on RGBI bands.np.int8
cdfcnnrgbi_swir1-López-Puigdollers et al. results based on RGBISWIR bands.np.int8
kappamask_L1C1-KappaMask results using SEN2 level L1C as input.np.int8
kappamask_L2A1-KappaMask results using SEN2 level L2A as input.np.int8
manual_hq1High-quality pixel-wise manual annotation.np.int8
manual_sc1Scribble manual annotation.np.int8

<br>

Label Description

**CloudSEN12****KappaMask****Sen2Cor****Fmask****s2cloudless****CD-FCNN****QA60**
0 Clear1 Clear4 Vegetation0 Clear land0 Clear0 Clear0 Clear
2 Dark area pixels1 Clear water
5 Bare Soils3 Snow
6 Water
11 Snow
1 Thick cloud4 Cloud8 Cloud medium probability4 Cloud1 Cloud1 Cloud1024 Opaque cloud
9 Cloud high probability
2 Thin cloud3 Semi-transparent cloud10 Thin cirrus2048 Cirrus cloud
3 Cloud shadow2 Cloud shadow3 Cloud shadows2 Cloud shadow

<br>

<be>

Dataset information, working with np.memmap:

Sentinel-1 and Sentinel-2 collect images that span an area of 5090 x 5090 meters at 10 meters per pixel. This results in 509 x 509 pixel images, presenting a challenge.

Given each layer is a two-dimensional matrix, true image data is held from pixel (1,1) to (509,509)

The subsequent images have been padded with three pixels around the image to make the images 512 x 512, a size that most models accept.

To give a visual representation of where the padding has been added: x marks blank pixels stored as black (255)

xxxxxxxxxxxxxx x xx x xx x xx x xx x xx xxxxxxxxxxxxxx xxxxxxxxxxxxxx

The effects of the padding can be mitigated by adding a random crop within (1,1) to (509, 509) or completing a center crop to the desired size for network architecture.

The current split of image data is into three categories:

  • Training: 84.90 % of total
  • Validation: 5.35 % of total
  • Testing: 9.75 % of total

For the recomposition of the data to take random samples of all 10,000 available images, we can combine the np.memmap objects and take random selections at the beginning of each trial, selecting random samples of the 10,000 images based on the desired percentage of the total data available.

This approach ensures the mitigation of training bias based on the original selection of images for each category.

<br>

Example

train shape: (8490, 512, 512) <br> val shape: (535, 512, 512) <br> test shape: (975, 512, 512) <br>

py
import numpy as np

# Read high-quality train
train_shape = (8490, 512, 512)
B4X = np.memmap('train/L1C_B04.dat', dtype='int16', mode='r', shape=train_shape)
y = np.memmap('train/manual_hq.dat', dtype='int8', mode='r', shape=train_shape)

# Read high-quality val
val_shape = (535, 512, 512)
B4X = np.memmap('val/L1C_B04.dat', dtype='int16', mode='r', shape=val_shape)
y = np.memmap('val/manual_hq.dat', dtype='int8', mode='r', shape=val_shape)


# Read high-quality test
test_shape = (975, 512, 512)
B4X = np.memmap('test/L1C_B04.dat', dtype='int16', mode='r', shape=test_shape)
y = np.memmap('test/manual_hq.dat', dtype='int8', mode='r', shape=test_shape)

<br>

This work has been partially supported by the Spanish Ministry of Science and Innovation project PID2019-109026RB-I00 (MINECO-ERDF) and the Austrian Space Applications Programme within the [SemantiX project](https://austria-in-space.at/en/projects/2019/semantix.php).