FDR4VGT-CLOUD / ensemble /ensemble_global_2_flex.json
JulioContrerasH's picture
Upload 9 files
81bed60 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_FLEXIBLE_20251202",
"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-12-02T12:54:24Z",
"created": "2025-12-02T12:54:24Z",
"updated": "2025-12-02T12:54:24Z",
"description": "Flexible ensemble of 2 models (1dpwunetpp, unetpp) with runtime aggregation (mean/max/min) and uncertainty quantification for cloud detection in VGT-1, VGT-2, and PROBA-V satellite imagery. Models are loaded separately and combined at inference time.",
"title": "Ensemble Cloud Detection Model (2 Models + Uncertainty) - VGT1/VGT2/Proba-V",
"mlm:name": "ensemble_2models_flexible_fdr4vgt_cloudmask",
"mlm:architecture": "Flexible Ensemble (runtime Mean/Max/Min + Uncertainty): 1dpwunetpp, unetpp",
"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:batch_size_suggestion": 4,
"mlm:pretrained": true,
"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 2 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."
}
],
"custom:export_format": "torch.export.pt2",
"custom:has_sigmoid": true,
"custom:sigmoid_location": "built-in wrapper",
"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,
"dependencies": [
"torch>=2.0.0",
"segmentation-models-pytorch>=0.3.0",
"pytorch-lightning>=2.0.0"
],
"custom:export_datetime": "2025-12-02T12:54:24Z",
"custom:ensemble_size": 2,
"custom:ensemble_members": [
"1dpwunetpp",
"unetpp"
],
"custom:ensemble_strategy": "Flexible runtime aggregation - supports mean/max/min modes with uncertainty quantification",
"custom:ensemble_fused": false,
"custom:returns_tuple": true,
"custom:tuple_format": "(probabilities, uncertainty)"
},
"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": {
"load": {
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/single/load.py",
"type": "application/x-python-code",
"title": "Ensemble model loader",
"description": "Python code to load all models and combine them into an EnsembleModel class with mean/max/min aggregation.",
"roles": [
"code"
]
},
"example_data": {
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/single/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"
]
},
"model_01_1dpwunetpp": {
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/single/f_global_1dpwunetpp.pt2",
"type": "application/octet-stream; application=pytorch",
"title": "Model 1: 1dpwunetpp_fdr4vgt_cloudmask_ft",
"description": "The weights of the 1DPWUNETPP model in torch.export .pt2 format with built-in sigmoid activation.",
"mlm:artifact_type": "torch.export.pt2",
"roles": [
"mlm:model",
"mlm:weights",
"data"
]
},
"model_02_unetpp": {
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/single/f_global_unetpp.pt2",
"type": "application/octet-stream; application=pytorch",
"title": "Model 2: unetpp_fdr4vgt_cloudmask_ft",
"description": "The weights of the UNETPP model in torch.export .pt2 format with built-in sigmoid activation.",
"mlm:artifact_type": "torch.export.pt2",
"roles": [
"mlm:model",
"mlm:weights",
"data"
]
}
},
"collection": "FDR4VGT_CloudMask_Ensemble_Flexible_2models"
}