JulioContrerasH commited on
Commit
e02ff7f
·
verified ·
1 Parent(s): d887ae1

Upload 3 files

Browse files
.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
+ }