Upload 3 files
Browse files- .gitattributes +1 -0
- ensemble/ensem_2_5.json +269 -0
- ensemble/ensem_2_5.pt2 +3 -0
- ensemble/ensem_2_5_flex.json +260 -0
.gitattributes
CHANGED
|
@@ -68,3 +68,4 @@ single/spot_segformer.pt2 filter=lfs diff=lfs merge=lfs -text
|
|
| 68 |
single/spot_unetpp.pt2 filter=lfs diff=lfs merge=lfs -text
|
| 69 |
ensemble/ensemble_4.pt2 filter=lfs diff=lfs merge=lfs -text
|
| 70 |
ensemble/ensem_4_4.pt2 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 68 |
single/spot_unetpp.pt2 filter=lfs diff=lfs merge=lfs -text
|
| 69 |
ensemble/ensemble_4.pt2 filter=lfs diff=lfs merge=lfs -text
|
| 70 |
ensemble/ensem_4_4.pt2 filter=lfs diff=lfs merge=lfs -text
|
| 71 |
+
ensemble/ensem_2_5.pt2 filter=lfs diff=lfs merge=lfs -text
|
ensemble/ensem_2_5.json
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"type": "Feature",
|
| 3 |
+
"stac_version": "1.1.0",
|
| 4 |
+
"stac_extensions": [
|
| 5 |
+
"https://stac-extensions.github.io/mlm/v1.5.0/schema.json",
|
| 6 |
+
"https://stac-extensions.github.io/file/v2.1.0/schema.json"
|
| 7 |
+
],
|
| 8 |
+
"id": "ENSEMBLE_2MODELS_MEAN_UNCERTAINTY_2025-10-27",
|
| 9 |
+
"geometry": {
|
| 10 |
+
"type": "Polygon",
|
| 11 |
+
"coordinates": [
|
| 12 |
+
[
|
| 13 |
+
[
|
| 14 |
+
-180.0,
|
| 15 |
+
-90.0
|
| 16 |
+
],
|
| 17 |
+
[
|
| 18 |
+
-180.0,
|
| 19 |
+
90.0
|
| 20 |
+
],
|
| 21 |
+
[
|
| 22 |
+
180.0,
|
| 23 |
+
90.0
|
| 24 |
+
],
|
| 25 |
+
[
|
| 26 |
+
180.0,
|
| 27 |
+
-90.0
|
| 28 |
+
],
|
| 29 |
+
[
|
| 30 |
+
-180.0,
|
| 31 |
+
-90.0
|
| 32 |
+
]
|
| 33 |
+
]
|
| 34 |
+
]
|
| 35 |
+
},
|
| 36 |
+
"bbox": [
|
| 37 |
+
-180,
|
| 38 |
+
-90,
|
| 39 |
+
180,
|
| 40 |
+
90
|
| 41 |
+
],
|
| 42 |
+
"properties": {
|
| 43 |
+
"datetime": "2025-10-27T11:26:07Z",
|
| 44 |
+
"created": "2025-10-27T11:26:07Z",
|
| 45 |
+
"updated": "2025-12-02T12:53:01.472464Z",
|
| 46 |
+
"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.",
|
| 47 |
+
"title": "Ensemble Cloud Detection Model (2 Models + Uncertainty) - VGT1/VGT2/Proba-V",
|
| 48 |
+
"mlm:name": "ensemble_2models_mean_uncertainty_fdr4vgt_cloudmask",
|
| 49 |
+
"mlm:architecture": "Ensemble (Mean+Uncertainty): UNet+++PW, UNet++",
|
| 50 |
+
"mlm:tasks": [
|
| 51 |
+
"semantic-segmentation",
|
| 52 |
+
"uncertainty-quantification"
|
| 53 |
+
],
|
| 54 |
+
"mlm:framework": "pytorch",
|
| 55 |
+
"mlm:framework_version": "2.5.1+cu121",
|
| 56 |
+
"mlm:accelerator": "cuda",
|
| 57 |
+
"mlm:accelerator_constrained": false,
|
| 58 |
+
"mlm:accelerator_summary": "NVIDIA GPU with CUDA support (compute capability >= 7.0)",
|
| 59 |
+
"mlm:accelerator_count": 1,
|
| 60 |
+
"mlm:memory_size": 92291982,
|
| 61 |
+
"mlm:batch_size_suggestion": 4,
|
| 62 |
+
"mlm:total_parameters": 13651331,
|
| 63 |
+
"mlm:pretrained": true,
|
| 64 |
+
"mlm:pretrained_source": "Global VGT-1/VGT-2/PROBA-V cloud detection models (100k+ training samples)",
|
| 65 |
+
"mlm:input": [
|
| 66 |
+
{
|
| 67 |
+
"name": "VGT_PROBA_TOC_reflectance",
|
| 68 |
+
"bands": [
|
| 69 |
+
"Blue (B0, ~450nm)",
|
| 70 |
+
"Red (B2, ~645nm)",
|
| 71 |
+
"Near-Infrared (B3, ~835nm)",
|
| 72 |
+
"SWIR (MIR, ~1665nm)"
|
| 73 |
+
],
|
| 74 |
+
"input": {
|
| 75 |
+
"shape": [
|
| 76 |
+
-1,
|
| 77 |
+
4,
|
| 78 |
+
512,
|
| 79 |
+
512
|
| 80 |
+
],
|
| 81 |
+
"dim_order": [
|
| 82 |
+
"batch",
|
| 83 |
+
"channel",
|
| 84 |
+
"height",
|
| 85 |
+
"width"
|
| 86 |
+
],
|
| 87 |
+
"data_type": "float32"
|
| 88 |
+
},
|
| 89 |
+
"norm": {
|
| 90 |
+
"type": "raw_toc_reflectance",
|
| 91 |
+
"range": [
|
| 92 |
+
0,
|
| 93 |
+
10000
|
| 94 |
+
],
|
| 95 |
+
"description": "Raw Top-of-Canopy reflectance values scaled by 10000"
|
| 96 |
+
},
|
| 97 |
+
"pre_processing_function": null
|
| 98 |
+
}
|
| 99 |
+
],
|
| 100 |
+
"mlm:output": [
|
| 101 |
+
{
|
| 102 |
+
"name": "cloud_probability",
|
| 103 |
+
"tasks": [
|
| 104 |
+
"semantic-segmentation"
|
| 105 |
+
],
|
| 106 |
+
"result": {
|
| 107 |
+
"shape": [
|
| 108 |
+
-1,
|
| 109 |
+
1,
|
| 110 |
+
512,
|
| 111 |
+
512
|
| 112 |
+
],
|
| 113 |
+
"dim_order": [
|
| 114 |
+
"batch",
|
| 115 |
+
"channel",
|
| 116 |
+
"height",
|
| 117 |
+
"width"
|
| 118 |
+
],
|
| 119 |
+
"data_type": "float32"
|
| 120 |
+
},
|
| 121 |
+
"classification:classes": [
|
| 122 |
+
{
|
| 123 |
+
"value": 0.0,
|
| 124 |
+
"name": "clear",
|
| 125 |
+
"description": "Clear sky (may contain cloud shadows)",
|
| 126 |
+
"color_hint": "00000000"
|
| 127 |
+
},
|
| 128 |
+
{
|
| 129 |
+
"value": 1.0,
|
| 130 |
+
"name": "cloud",
|
| 131 |
+
"description": "Cloud present",
|
| 132 |
+
"color_hint": "FFFF00"
|
| 133 |
+
}
|
| 134 |
+
],
|
| 135 |
+
"post_processing_function": "Apply threshold to get binary mask. Recommended threshold: 0.5. Returns tuple: (probabilities, uncertainty)",
|
| 136 |
+
"standard_threshold": 0.5,
|
| 137 |
+
"recommended_threshold": 0.5,
|
| 138 |
+
"value_range": [
|
| 139 |
+
0.0,
|
| 140 |
+
1.0
|
| 141 |
+
],
|
| 142 |
+
"description": "Per-pixel mean probability across ensemble models. Built-in sigmoid activation. Values close to 1.0 indicate high confidence of cloud."
|
| 143 |
+
},
|
| 144 |
+
{
|
| 145 |
+
"name": "prediction_uncertainty",
|
| 146 |
+
"tasks": [
|
| 147 |
+
"uncertainty-quantification"
|
| 148 |
+
],
|
| 149 |
+
"result": {
|
| 150 |
+
"shape": [
|
| 151 |
+
-1,
|
| 152 |
+
1,
|
| 153 |
+
512,
|
| 154 |
+
512
|
| 155 |
+
],
|
| 156 |
+
"dim_order": [
|
| 157 |
+
"batch",
|
| 158 |
+
"channel",
|
| 159 |
+
"height",
|
| 160 |
+
"width"
|
| 161 |
+
],
|
| 162 |
+
"data_type": "float32"
|
| 163 |
+
},
|
| 164 |
+
"value_range": [
|
| 165 |
+
0.0,
|
| 166 |
+
1.0
|
| 167 |
+
],
|
| 168 |
+
"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."
|
| 169 |
+
}
|
| 170 |
+
],
|
| 171 |
+
"mlm:hyperparameters": {
|
| 172 |
+
"ensemble_size": 2,
|
| 173 |
+
"ensemble_members": [
|
| 174 |
+
"1dpwunetpp",
|
| 175 |
+
"unetpp"
|
| 176 |
+
],
|
| 177 |
+
"aggregation_method": "mean",
|
| 178 |
+
"uncertainty_method": "normalized_std",
|
| 179 |
+
"avg_val_loss": 0.0644,
|
| 180 |
+
"member_details": [
|
| 181 |
+
{
|
| 182 |
+
"model": "1dpwunetpp",
|
| 183 |
+
"epoch": 22,
|
| 184 |
+
"val_loss": 0.0625
|
| 185 |
+
},
|
| 186 |
+
{
|
| 187 |
+
"model": "unetpp",
|
| 188 |
+
"epoch": 5,
|
| 189 |
+
"val_loss": 0.0663
|
| 190 |
+
}
|
| 191 |
+
]
|
| 192 |
+
},
|
| 193 |
+
"file:size": 61527988,
|
| 194 |
+
"custom:export_format": "torch.export.pt2",
|
| 195 |
+
"custom:has_sigmoid": true,
|
| 196 |
+
"custom:sigmoid_location": "built-in per-model wrapper",
|
| 197 |
+
"custom:export_datetime": "2025-12-02T12:53:01.472464Z",
|
| 198 |
+
"custom:training_stage": "ensemble-mean-uncertainty",
|
| 199 |
+
"custom:project": "FDR4VGT",
|
| 200 |
+
"custom:project_url": "https://fdr4vgt.eu/",
|
| 201 |
+
"custom:sensors": [
|
| 202 |
+
"VGT-1",
|
| 203 |
+
"VGT-2",
|
| 204 |
+
"PROBA-V"
|
| 205 |
+
],
|
| 206 |
+
"custom:sensor_notes": "Model applicable to SPOT-VGT1, SPOT-VGT2, and PROBA-V imagery",
|
| 207 |
+
"custom:spatial_resolution": "1km",
|
| 208 |
+
"custom:tile_size": 512,
|
| 209 |
+
"custom:recommended_overlap": 64,
|
| 210 |
+
"custom:applicable_start": "1998-03-01T00:00:00Z",
|
| 211 |
+
"custom:applicable_end": null,
|
| 212 |
+
"custom:returns_tuple": true,
|
| 213 |
+
"custom:tuple_format": "(probabilities, uncertainty)",
|
| 214 |
+
"dependencies": [
|
| 215 |
+
"torch>=2.0.0",
|
| 216 |
+
"segmentation-models-pytorch>=0.3.0",
|
| 217 |
+
"pytorch-lightning>=2.0.0",
|
| 218 |
+
"numpy>=1.20.0"
|
| 219 |
+
]
|
| 220 |
+
},
|
| 221 |
+
"links": [
|
| 222 |
+
{
|
| 223 |
+
"rel": "about",
|
| 224 |
+
"href": "https://fdr4vgt.eu/",
|
| 225 |
+
"type": "text/html",
|
| 226 |
+
"title": "FDR4VGT Project - Harmonized VGT Data Record"
|
| 227 |
+
},
|
| 228 |
+
{
|
| 229 |
+
"rel": "license",
|
| 230 |
+
"href": "https://creativecommons.org/licenses/by/4.0/",
|
| 231 |
+
"type": "text/html",
|
| 232 |
+
"title": "CC-BY-4.0 License"
|
| 233 |
+
}
|
| 234 |
+
],
|
| 235 |
+
"assets": {
|
| 236 |
+
"model": {
|
| 237 |
+
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/ensemble/ensem_2_5.pt2",
|
| 238 |
+
"type": "application/octet-stream; application=pytorch",
|
| 239 |
+
"title": "PyTorch ensemble model weights",
|
| 240 |
+
"description": "Ensemble of 2 models in torch.export .pt2 format. Returns tuple: (probabilities, uncertainty).",
|
| 241 |
+
"mlm:artifact_type": "torch.export.pt2",
|
| 242 |
+
"roles": [
|
| 243 |
+
"mlm:model",
|
| 244 |
+
"mlm:weights",
|
| 245 |
+
"data"
|
| 246 |
+
]
|
| 247 |
+
},
|
| 248 |
+
"example_data": {
|
| 249 |
+
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/ensemble/example_data.safetensor",
|
| 250 |
+
"type": "application/octet-stream; application=safetensors",
|
| 251 |
+
"title": "Example VGT/PROBA-V image",
|
| 252 |
+
"description": "Example VGT/PROBA-V Top-of-Canopy reflectance image for model inference.",
|
| 253 |
+
"roles": [
|
| 254 |
+
"mlm:example_data",
|
| 255 |
+
"data"
|
| 256 |
+
]
|
| 257 |
+
},
|
| 258 |
+
"load": {
|
| 259 |
+
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/ensemble/load.py",
|
| 260 |
+
"type": "application/x-python-code",
|
| 261 |
+
"title": "PyTorch Ensemble Loader",
|
| 262 |
+
"description": "Python helper code to load the exported .pt2 ensemble model. Includes predict_large() function for large images.",
|
| 263 |
+
"roles": [
|
| 264 |
+
"code"
|
| 265 |
+
]
|
| 266 |
+
}
|
| 267 |
+
},
|
| 268 |
+
"collection": "ENSEMBLE_2MODELS_FDR4VGT_CloudMask_MeanUncertainty"
|
| 269 |
+
}
|
ensemble/ensem_2_5.pt2
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e9c3839f38d8b379d590d7cecaf3ac32d63f7422f616c3bde20471af12d0a8aa
|
| 3 |
+
size 61527988
|
ensemble/ensem_2_5_flex.json
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"type": "Feature",
|
| 3 |
+
"stac_version": "1.1.0",
|
| 4 |
+
"stac_extensions": [
|
| 5 |
+
"https://stac-extensions.github.io/mlm/v1.5.0/schema.json",
|
| 6 |
+
"https://stac-extensions.github.io/file/v2.1.0/schema.json"
|
| 7 |
+
],
|
| 8 |
+
"id": "ENSEMBLE_2MODELS_FLEXIBLE_20251202",
|
| 9 |
+
"geometry": {
|
| 10 |
+
"type": "Polygon",
|
| 11 |
+
"coordinates": [
|
| 12 |
+
[
|
| 13 |
+
[
|
| 14 |
+
-180.0,
|
| 15 |
+
-90.0
|
| 16 |
+
],
|
| 17 |
+
[
|
| 18 |
+
-180.0,
|
| 19 |
+
90.0
|
| 20 |
+
],
|
| 21 |
+
[
|
| 22 |
+
180.0,
|
| 23 |
+
90.0
|
| 24 |
+
],
|
| 25 |
+
[
|
| 26 |
+
180.0,
|
| 27 |
+
-90.0
|
| 28 |
+
],
|
| 29 |
+
[
|
| 30 |
+
-180.0,
|
| 31 |
+
-90.0
|
| 32 |
+
]
|
| 33 |
+
]
|
| 34 |
+
]
|
| 35 |
+
},
|
| 36 |
+
"bbox": [
|
| 37 |
+
-180,
|
| 38 |
+
-90,
|
| 39 |
+
180,
|
| 40 |
+
90
|
| 41 |
+
],
|
| 42 |
+
"properties": {
|
| 43 |
+
"datetime": "2025-12-02T12:54:24Z",
|
| 44 |
+
"created": "2025-12-02T12:54:24Z",
|
| 45 |
+
"updated": "2025-12-02T12:54:24Z",
|
| 46 |
+
"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.",
|
| 47 |
+
"title": "Ensemble Cloud Detection Model (2 Models + Uncertainty) - VGT1/VGT2/Proba-V",
|
| 48 |
+
"mlm:name": "ensemble_2models_flexible_fdr4vgt_cloudmask",
|
| 49 |
+
"mlm:architecture": "Flexible Ensemble (runtime Mean/Max/Min + Uncertainty): 1dpwunetpp, unetpp",
|
| 50 |
+
"mlm:tasks": [
|
| 51 |
+
"semantic-segmentation",
|
| 52 |
+
"uncertainty-quantification"
|
| 53 |
+
],
|
| 54 |
+
"mlm:framework": "pytorch",
|
| 55 |
+
"mlm:framework_version": "2.5.1+cu121",
|
| 56 |
+
"mlm:accelerator": "cuda",
|
| 57 |
+
"mlm:accelerator_constrained": false,
|
| 58 |
+
"mlm:accelerator_summary": "NVIDIA GPU with CUDA support (compute capability >= 7.0)",
|
| 59 |
+
"mlm:accelerator_count": 1,
|
| 60 |
+
"mlm:batch_size_suggestion": 4,
|
| 61 |
+
"mlm:pretrained": true,
|
| 62 |
+
"mlm:input": [
|
| 63 |
+
{
|
| 64 |
+
"name": "VGT_PROBA_TOC_reflectance",
|
| 65 |
+
"bands": [
|
| 66 |
+
"Blue (B0, ~450nm)",
|
| 67 |
+
"Red (B2, ~645nm)",
|
| 68 |
+
"Near-Infrared (B3, ~835nm)",
|
| 69 |
+
"SWIR (MIR, ~1665nm)"
|
| 70 |
+
],
|
| 71 |
+
"input": {
|
| 72 |
+
"shape": [
|
| 73 |
+
-1,
|
| 74 |
+
4,
|
| 75 |
+
512,
|
| 76 |
+
512
|
| 77 |
+
],
|
| 78 |
+
"dim_order": [
|
| 79 |
+
"batch",
|
| 80 |
+
"channel",
|
| 81 |
+
"height",
|
| 82 |
+
"width"
|
| 83 |
+
],
|
| 84 |
+
"data_type": "float32"
|
| 85 |
+
},
|
| 86 |
+
"norm": {
|
| 87 |
+
"type": "raw_toc_reflectance",
|
| 88 |
+
"range": [
|
| 89 |
+
0,
|
| 90 |
+
10000
|
| 91 |
+
],
|
| 92 |
+
"description": "Raw Top-of-Canopy reflectance values scaled by 10000"
|
| 93 |
+
},
|
| 94 |
+
"pre_processing_function": null
|
| 95 |
+
}
|
| 96 |
+
],
|
| 97 |
+
"mlm:output": [
|
| 98 |
+
{
|
| 99 |
+
"name": "cloud_probability",
|
| 100 |
+
"tasks": [
|
| 101 |
+
"semantic-segmentation"
|
| 102 |
+
],
|
| 103 |
+
"result": {
|
| 104 |
+
"shape": [
|
| 105 |
+
-1,
|
| 106 |
+
1,
|
| 107 |
+
512,
|
| 108 |
+
512
|
| 109 |
+
],
|
| 110 |
+
"dim_order": [
|
| 111 |
+
"batch",
|
| 112 |
+
"channel",
|
| 113 |
+
"height",
|
| 114 |
+
"width"
|
| 115 |
+
],
|
| 116 |
+
"data_type": "float32"
|
| 117 |
+
},
|
| 118 |
+
"classification:classes": [
|
| 119 |
+
{
|
| 120 |
+
"value": 0.0,
|
| 121 |
+
"name": "clear",
|
| 122 |
+
"description": "Clear sky (may contain cloud shadows)",
|
| 123 |
+
"color_hint": "00000000"
|
| 124 |
+
},
|
| 125 |
+
{
|
| 126 |
+
"value": 1.0,
|
| 127 |
+
"name": "cloud",
|
| 128 |
+
"description": "Cloud present",
|
| 129 |
+
"color_hint": "FFFF00"
|
| 130 |
+
}
|
| 131 |
+
],
|
| 132 |
+
"post_processing_function": "Apply threshold to get binary mask. Recommended threshold: 0.5. Returns tuple: (probabilities, uncertainty)",
|
| 133 |
+
"standard_threshold": 0.5,
|
| 134 |
+
"recommended_threshold": 0.5,
|
| 135 |
+
"value_range": [
|
| 136 |
+
0.0,
|
| 137 |
+
1.0
|
| 138 |
+
],
|
| 139 |
+
"description": "Per-pixel mean probability across 2 ensemble models. Built-in sigmoid activation. Values close to 1.0 indicate high confidence of cloud."
|
| 140 |
+
},
|
| 141 |
+
{
|
| 142 |
+
"name": "prediction_uncertainty",
|
| 143 |
+
"tasks": [
|
| 144 |
+
"uncertainty-quantification"
|
| 145 |
+
],
|
| 146 |
+
"result": {
|
| 147 |
+
"shape": [
|
| 148 |
+
-1,
|
| 149 |
+
1,
|
| 150 |
+
512,
|
| 151 |
+
512
|
| 152 |
+
],
|
| 153 |
+
"dim_order": [
|
| 154 |
+
"batch",
|
| 155 |
+
"channel",
|
| 156 |
+
"height",
|
| 157 |
+
"width"
|
| 158 |
+
],
|
| 159 |
+
"data_type": "float32"
|
| 160 |
+
},
|
| 161 |
+
"value_range": [
|
| 162 |
+
0.0,
|
| 163 |
+
1.0
|
| 164 |
+
],
|
| 165 |
+
"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."
|
| 166 |
+
}
|
| 167 |
+
],
|
| 168 |
+
"custom:export_format": "torch.export.pt2",
|
| 169 |
+
"custom:has_sigmoid": true,
|
| 170 |
+
"custom:sigmoid_location": "built-in wrapper",
|
| 171 |
+
"custom:project": "FDR4VGT",
|
| 172 |
+
"custom:project_url": "https://fdr4vgt.eu/",
|
| 173 |
+
"custom:sensors": [
|
| 174 |
+
"VGT-1",
|
| 175 |
+
"VGT-2",
|
| 176 |
+
"PROBA-V"
|
| 177 |
+
],
|
| 178 |
+
"custom:sensor_notes": "Model applicable to SPOT-VGT1, SPOT-VGT2, and PROBA-V imagery",
|
| 179 |
+
"custom:spatial_resolution": "1km",
|
| 180 |
+
"custom:tile_size": 512,
|
| 181 |
+
"custom:recommended_overlap": 64,
|
| 182 |
+
"custom:applicable_start": "1998-03-01T00:00:00Z",
|
| 183 |
+
"custom:applicable_end": null,
|
| 184 |
+
"dependencies": [
|
| 185 |
+
"torch>=2.0.0",
|
| 186 |
+
"segmentation-models-pytorch>=0.3.0",
|
| 187 |
+
"pytorch-lightning>=2.0.0"
|
| 188 |
+
],
|
| 189 |
+
"custom:export_datetime": "2025-12-02T12:54:24Z",
|
| 190 |
+
"custom:ensemble_size": 2,
|
| 191 |
+
"custom:ensemble_members": [
|
| 192 |
+
"1dpwunetpp",
|
| 193 |
+
"unetpp"
|
| 194 |
+
],
|
| 195 |
+
"custom:ensemble_strategy": "Flexible runtime aggregation - supports mean/max/min modes with uncertainty quantification",
|
| 196 |
+
"custom:ensemble_fused": false,
|
| 197 |
+
"custom:returns_tuple": true,
|
| 198 |
+
"custom:tuple_format": "(probabilities, uncertainty)"
|
| 199 |
+
},
|
| 200 |
+
"links": [
|
| 201 |
+
{
|
| 202 |
+
"rel": "about",
|
| 203 |
+
"href": "https://fdr4vgt.eu/",
|
| 204 |
+
"type": "text/html",
|
| 205 |
+
"title": "FDR4VGT Project - Harmonized VGT Data Record"
|
| 206 |
+
},
|
| 207 |
+
{
|
| 208 |
+
"rel": "license",
|
| 209 |
+
"href": "https://creativecommons.org/licenses/by/4.0/",
|
| 210 |
+
"type": "text/html",
|
| 211 |
+
"title": "CC-BY-4.0 License"
|
| 212 |
+
}
|
| 213 |
+
],
|
| 214 |
+
"assets": {
|
| 215 |
+
"load": {
|
| 216 |
+
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/single/load.py",
|
| 217 |
+
"type": "application/x-python-code",
|
| 218 |
+
"title": "Ensemble model loader",
|
| 219 |
+
"description": "Python code to load all models and combine them into an EnsembleModel class with mean/max/min aggregation.",
|
| 220 |
+
"roles": [
|
| 221 |
+
"code"
|
| 222 |
+
]
|
| 223 |
+
},
|
| 224 |
+
"example_data": {
|
| 225 |
+
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/single/example_data.safetensor",
|
| 226 |
+
"type": "application/octet-stream; application=safetensors",
|
| 227 |
+
"title": "Example VGT/PROBA-V image",
|
| 228 |
+
"description": "Example VGT/PROBA-V Top-of-Canopy reflectance image for model inference.",
|
| 229 |
+
"roles": [
|
| 230 |
+
"mlm:example_data",
|
| 231 |
+
"data"
|
| 232 |
+
]
|
| 233 |
+
},
|
| 234 |
+
"model_01_1dpwunetpp": {
|
| 235 |
+
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/single/f_global_1dpwunetpp.pt2",
|
| 236 |
+
"type": "application/octet-stream; application=pytorch",
|
| 237 |
+
"title": "Model 1: 1dpwunetpp_fdr4vgt_cloudmask_ft",
|
| 238 |
+
"description": "The weights of the 1DPWUNETPP model in torch.export .pt2 format with built-in sigmoid activation.",
|
| 239 |
+
"mlm:artifact_type": "torch.export.pt2",
|
| 240 |
+
"roles": [
|
| 241 |
+
"mlm:model",
|
| 242 |
+
"mlm:weights",
|
| 243 |
+
"data"
|
| 244 |
+
]
|
| 245 |
+
},
|
| 246 |
+
"model_02_unetpp": {
|
| 247 |
+
"href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/single/f_global_unetpp.pt2",
|
| 248 |
+
"type": "application/octet-stream; application=pytorch",
|
| 249 |
+
"title": "Model 2: unetpp_fdr4vgt_cloudmask_ft",
|
| 250 |
+
"description": "The weights of the UNETPP model in torch.export .pt2 format with built-in sigmoid activation.",
|
| 251 |
+
"mlm:artifact_type": "torch.export.pt2",
|
| 252 |
+
"roles": [
|
| 253 |
+
"mlm:model",
|
| 254 |
+
"mlm:weights",
|
| 255 |
+
"data"
|
| 256 |
+
]
|
| 257 |
+
}
|
| 258 |
+
},
|
| 259 |
+
"collection": "FDR4VGT_CloudMask_Ensemble_Flexible_2models"
|
| 260 |
+
}
|