FDR4VGT-CLOUD
Cloud mask model for the ESA FDR4VGT record, the reprocessing of the SPOT-VGT and Proba-V archives. One model covers VGT-1, VGT-2 and Proba-V at 1 km.
Paper: A multisensor deep learning framework for robust cloud segmentation in SPOT-VGT and Proba-V. Contreras, Aybar, Gomez-Chova. IEEE Geoscience and Remote Sensing Letters, submitted 2026.
Model
- DeepLabV3 with a MobileNetV2 encoder, plus a 1x1 pixel-wise MLP. A 1x1 convolution fuses both branches. 12.65M parameters.
- Input: 4 top-of-atmosphere reflectance bands (Blue, Red, NIR, SWIR), 512 x 512 tiles, batch 1 to 256.
- The values are reflectance, not DN. Nominal range 0 to 2.05.
- Output: cloud probability. The sigmoid is inside the exported graph.
- Recommended threshold: 0.5.
Data used
- 78 hand-annotated scenes for fine-tuning: 66 train and 12 validation.
- 31 held-out scenes that never entered training.
- Test set of 81 scenes: 24 Proba-V pixel scenes, 8 SPOT-VGT pixel scenes and 49 Proba-V scenes annotated with points.
- Training starts from a weak pre-training stage and then fine-tunes on the annotated scenes. The masks were drawn with IRIS.
Data availability
This repository hosts the model weights and configuration. Code and splits are on GitHub. Training data are not redistributed:
| Data | Provider | Access |
|---|---|---|
| Proba-V / SPOT-VGT reflectance | VITO (Terrascope) | Terrascope |
| Human-annotated cloud masks | ESA Φ-lab Round Robin | available on request |
| Point validation data | Brockmann Consult | available on request |
| Code and splits | GitHub | IPL-UV/fdr4vgt-cloud |
Performance
F2, IoU and kappa at threshold 0.5, on test scenes that were not used for training.
| Test set | Scenes | Annotation | F2 | IoU | Kappa |
|---|---|---|---|---|---|
| Proba-V | 49 | points | 0.889 | 0.840 | 0.806 |
| SPOT-VGT | 8 | pixels | 0.929 | 0.849 | 0.819 |
Earlier numbers counted scenes that were in training. These are the clean ones.
Install
pip install "mlstac==0.4.9" "torch==2.7.0" rasterio
The single model and the 6-member ensemble were exported with torch 2.7.0. torch.export refuses to load a file written by another torch version, so install that exact version. A 512 x 512 example patch is published as single/example_data.safetensor and loads with safetensors.numpy.load_file under the key image.
Quick start
import torch
import mlstac
import rasterio as rio
url = "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/single/multisensor_single_1dpwdeeplabv3.json"
local = mlstac.load(url).download("FDR4VGT-CLOUD")
net = local.compiled_model()
with rio.open("https://huggingface.co/datasets/isp-uv-es/ProbaV-SPOT/resolve/main/PROBAV_L2A_20141111_184634_2_1KM_V201.tif") as src:
image = src.read()
prob = local.predict_large(
image=image,
model=net,
device="cuda" if torch.cuda.is_available() else "cpu",
batch_size=8,
num_workers=8,
nodata=0.0,
)
cloud = (prob.squeeze() > 0.5).astype("uint8")
image is a full 4-band Proba-V scene from the public sample dataset, about 35 MB. prob is a float array in 0 to 1 with the same height and width as the input.
Notebook
- GitHub: https://github.com/IPL-UV/fdr4vgt-cloud/blob/main/notebooks/01_quickstart.ipynb
- Colab: https://colab.research.google.com/github/IPL-UV/fdr4vgt-cloud/blob/main/notebooks/01_quickstart.ipynb
Ablation models
The repo also keeps the checkpoints from the ablation study, 19 in total: 7 global models (f_global_*), 6 Proba-V models (proba_*) and 6 SPOT-VGT models (spot_*). Each one has a JSON next to it with the same structure.
Those checkpoints were exported with torch 2.5.1 and need torch 2.5.x. The operational single model and the 6-member ensemble were re-exported with torch 2.7.
Links
- Sample Proba-V scene: https://huggingface.co/datasets/isp-uv-es/ProbaV-SPOT
- Code: https://github.com/IPL-UV/fdr4vgt-cloud
Citation
If you use this code, the model weights or the ProbaV-SPOT sample, please cite:
@article{contreras2026fdr4vgt,
title = {A multisensor deep learning framework for robust cloud segmentation in SPOT-VGT and Proba-V},
author = {Contreras, Julio and Aybar, C{\'e}sar and G{\'o}mez-Chova, Luis},
journal = {IEEE Geoscience and Remote Sensing Letters},
year = {2026},
}
License
Model weights are released under CC0-1.0. The SPOT-VGT and Proba-V imagery used to train and evaluate the model follows the terms of the FDR4VGT archive.
Acknowledgements
Work supported by the European Space Agency within the FDR4VGT project, led by VITO. Developed at the Image Processing Laboratory (IPL), University of Valencia.

