FDR4VGT-CLOUD / ensemble /ensemble_global_2.json
JulioContrerasH's picture
Update ensemble/ensemble_global_2.json
936a17a verified
{
"type": "Feature",
"stac_version": "1.1.0",
"stac_extensions": [
"https://stac-extensions.github.io/mlm/v1.5.0/schema.json",
"https://stac-extensions.github.io/file/v2.1.0/schema.json"
],
"id": "ENSEMBLE_2MODELS_MEAN_UNCERTAINTY_2025-10-27",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-180.0,
-90.0
],
[
-180.0,
90.0
],
[
180.0,
90.0
],
[
180.0,
-90.0
],
[
-180.0,
-90.0
]
]
]
},
"bbox": [
-180,
-90,
180,
90
],
"properties": {
"datetime": "2025-10-27T11:26:07Z",
"created": "2025-10-27T11:26:07Z",
"updated": "2025-12-02T12:53:01.472464Z",
"description": "Ensemble of 2 models (1dpwunetpp, unetpp) with Mean aggregation and uncertainty quantification for cloud detection in VGT-1, VGT-2, and PROBA-V satellite imagery.",
"title": "Ensemble Cloud Detection Model (2 Models + Uncertainty) - VGT1/VGT2/Proba-V",
"mlm:name": "ensemble_2models_mean_uncertainty_fdr4vgt_cloudmask",
"mlm:architecture": "Ensemble (Mean+Uncertainty): UNet+++PW, UNet++",
"mlm:tasks": [
"semantic-segmentation",
"uncertainty-quantification"
],
"mlm:framework": "pytorch",
"mlm:framework_version": "2.5.1+cu121",
"mlm:accelerator": "cuda",
"mlm:accelerator_constrained": false,
"mlm:accelerator_summary": "NVIDIA GPU with CUDA support (compute capability >= 7.0)",
"mlm:accelerator_count": 1,
"mlm:memory_size": 92291982,
"mlm:batch_size_suggestion": 4,
"mlm:total_parameters": 13651331,
"mlm:pretrained": true,
"mlm:pretrained_source": "Global VGT-1/VGT-2/PROBA-V cloud detection models (100k+ training samples)",
"mlm:input": [
{
"name": "VGT_PROBA_TOC_reflectance",
"bands": [
"Blue (B0, ~450nm)",
"Red (B2, ~645nm)",
"Near-Infrared (B3, ~835nm)",
"SWIR (MIR, ~1665nm)"
],
"input": {
"shape": [
-1,
4,
512,
512
],
"dim_order": [
"batch",
"channel",
"height",
"width"
],
"data_type": "float32"
},
"norm": {
"type": "raw_toc_reflectance",
"range": [
0,
10000
],
"description": "Raw Top-of-Canopy reflectance values scaled by 10000"
},
"pre_processing_function": null
}
],
"mlm:output": [
{
"name": "cloud_probability",
"tasks": [
"semantic-segmentation"
],
"result": {
"shape": [
-1,
1,
512,
512
],
"dim_order": [
"batch",
"channel",
"height",
"width"
],
"data_type": "float32"
},
"classification:classes": [
{
"value": 0.0,
"name": "clear",
"description": "Clear sky (may contain cloud shadows)",
"color_hint": "00000000"
},
{
"value": 1.0,
"name": "cloud",
"description": "Cloud present",
"color_hint": "FFFF00"
}
],
"post_processing_function": "Apply threshold to get binary mask. Recommended threshold: 0.5. Returns tuple: (probabilities, uncertainty)",
"standard_threshold": 0.5,
"recommended_threshold": 0.5,
"value_range": [
0.0,
1.0
],
"description": "Per-pixel mean probability across ensemble models. Built-in sigmoid activation. Values close to 1.0 indicate high confidence of cloud."
},
{
"name": "prediction_uncertainty",
"tasks": [
"uncertainty-quantification"
],
"result": {
"shape": [
-1,
1,
512,
512
],
"dim_order": [
"batch",
"channel",
"height",
"width"
],
"data_type": "float32"
},
"value_range": [
0.0,
1.0
],
"description": "Normalized standard deviation across 2 ensemble members. Values close to 1.0 indicate high disagreement between models (high uncertainty). Automatically returned as second element of output tuple."
}
],
"mlm:hyperparameters": {
"ensemble_size": 2,
"ensemble_members": [
"1dpwunetpp",
"unetpp"
],
"aggregation_method": "mean",
"uncertainty_method": "normalized_std",
"avg_val_loss": 0.0644,
"member_details": [
{
"model": "1dpwunetpp",
"epoch": 22,
"val_loss": 0.0625
},
{
"model": "unetpp",
"epoch": 5,
"val_loss": 0.0663
}
]
},
"file:size": 61527988,
"custom:export_format": "torch.export.pt2",
"custom:has_sigmoid": true,
"custom:sigmoid_location": "built-in per-model wrapper",
"custom:export_datetime": "2025-12-02T12:53:01.472464Z",
"custom:training_stage": "ensemble-mean-uncertainty",
"custom:project": "FDR4VGT",
"custom:project_url": "https://fdr4vgt.eu/",
"custom:sensors": [
"VGT-1",
"VGT-2",
"PROBA-V"
],
"custom:sensor_notes": "Model applicable to SPOT-VGT1, SPOT-VGT2, and PROBA-V imagery",
"custom:spatial_resolution": "1km",
"custom:tile_size": 512,
"custom:recommended_overlap": 64,
"custom:applicable_start": "1998-03-01T00:00:00Z",
"custom:applicable_end": null,
"custom:returns_tuple": true,
"custom:tuple_format": "(probabilities, uncertainty)",
"dependencies": [
"torch>=2.0.0",
"segmentation-models-pytorch>=0.3.0",
"pytorch-lightning>=2.0.0",
"numpy>=1.20.0"
]
},
"links": [
{
"rel": "about",
"href": "https://fdr4vgt.eu/",
"type": "text/html",
"title": "FDR4VGT Project - Harmonized VGT Data Record"
},
{
"rel": "license",
"href": "https://creativecommons.org/licenses/by/4.0/",
"type": "text/html",
"title": "CC-BY-4.0 License"
}
],
"assets": {
"model": {
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/ensemble/ensemble_global_2.pt2",
"type": "application/octet-stream; application=pytorch",
"title": "PyTorch ensemble model weights",
"description": "Ensemble of 2 models in torch.export .pt2 format. Returns tuple: (probabilities, uncertainty).",
"mlm:artifact_type": "torch.export.pt2",
"roles": [
"mlm:model",
"mlm:weights",
"data"
]
},
"example_data": {
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/ensemble/example_data.safetensor",
"type": "application/octet-stream; application=safetensors",
"title": "Example VGT/PROBA-V image",
"description": "Example VGT/PROBA-V Top-of-Canopy reflectance image for model inference.",
"roles": [
"mlm:example_data",
"data"
]
},
"load": {
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/ensemble/load.py",
"type": "application/x-python-code",
"title": "PyTorch Ensemble Loader",
"description": "Python helper code to load the exported .pt2 ensemble model. Includes predict_large() function for large images.",
"roles": [
"code"
]
}
},
"collection": "ENSEMBLE_2MODELS_FDR4VGT_CloudMask_MeanUncertainty"
}