| { |
| "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": "UNET_CLOUDMASK_FT_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:08:23Z", |
| "created": "2025-10-27T11:08:23Z", |
| "updated": "2025-11-18T11:44:08.635435Z", |
| "description": "UNet architecture fine-tuned for cloud detection in VGT-1, VGT-2, and PROBA-V satellite imagery from the FDR4VGT harmonized dataset.", |
| "title": "UNET Cloud Detection Model - VGT1/VGT2/Proba-V (Fine-tuned)", |
| "mlm:name": "unet_fdr4vgt_cloudmask_ft", |
| "mlm:architecture": "UNet", |
| "mlm:tasks": [ |
| "semantic-segmentation" |
| ], |
| "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": 47548636, |
| "mlm:batch_size_suggestion": 8, |
| "mlm:total_parameters": 6629233, |
| "mlm:pretrained": true, |
| "mlm:pretrained_source": "Global VGT-1/VGT-2/PROBA-V cloud detection model (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. Standard threshold: 0.5. Recommended (balanced) threshold: 0.4.", |
| "standard_threshold": 0.5, |
| "recommended_threshold": 0.4646, |
| "value_range": [ |
| 0.0, |
| 1.0 |
| ], |
| "description": "Per-pixel probability of cloud presence. Built-in sigmoid activation. Values close to 1.0 indicate high confidence of cloud." |
| } |
| ], |
| "mlm:hyperparameters": { |
| "base_channels": null, |
| "encoder": "mobilenet_v2", |
| "encoder_weights": null, |
| "loss_function": "MaskedBCEWithLogitsLoss", |
| "loss_ignore_value": 255, |
| "optimizer": "Adam", |
| "learning_rate": 0.0001, |
| "weight_decay": 0.0, |
| "batch_size": 32, |
| "training_epochs": 20, |
| "max_epochs": 50, |
| "final_val_loss": 0.0606, |
| "scheduler": "ReduceLROnPlateau", |
| "scheduler_patience": 3, |
| "scheduler_factor": 0.5, |
| "early_stopping_patience": 10, |
| "gradient_clip_val": 1.0, |
| "precision": 16 |
| }, |
| "file:size": 31699091, |
| "custom:export_format": "torch.export.pt2", |
| "custom:has_sigmoid": true, |
| "custom:sigmoid_location": "built-in wrapper", |
| "custom:export_datetime": "2025-11-18T11:44:08.635435Z", |
| "custom:training_datetime": "2025-10-27T11:08:23Z", |
| "custom:training_stage": "fine-tuning", |
| "custom:base_model_source": "global_cloudmask", |
| "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" |
| ] |
| }, |
| "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/single/f_global_unet.pt2", |
| "type": "application/octet-stream; application=pytorch", |
| "title": "PyTorch model weights checkpoint", |
| "description": "The weights of the UNET model in torch.export .pt2 format with built-in sigmoid activation.", |
| "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/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" |
| ] |
| }, |
| "load": { |
| "href": "https://huggingface.co/isp-uv-es/FDR4VGT-CLOUD/resolve/main/single/load.py", |
| "type": "application/x-python-code", |
| "title": "PyTorch Model Loader", |
| "description": "Python helper code to load the exported .pt2 model for inference.", |
| "roles": [ |
| "code" |
| ] |
| } |
| }, |
| "collection": "UNET_FDR4VGT_CloudMask_FT" |
| } |