| { |
| "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": "MSS_CLOUDMASK_UNET_EFFB3", |
| "geometry": { |
| "type": "Polygon", |
| "coordinates": [ |
| [ |
| [ |
| -180, |
| -90 |
| ], |
| [ |
| -180, |
| 90 |
| ], |
| [ |
| 180, |
| 90 |
| ], |
| [ |
| 180, |
| -90 |
| ], |
| [ |
| -180, |
| -90 |
| ] |
| ] |
| ] |
| }, |
| "bbox": [ |
| -180, |
| -90, |
| 180, |
| 90 |
| ], |
| "properties": { |
| "datetime": "2026-01-18T22:42:31.441233Z", |
| "created": "2026-01-18T22:42:31.441233Z", |
| "updated": "2026-01-19T01:01:38.488397Z", |
| "title": "MSS Cloud Detection Model (UNet-EfficientNetB3)", |
| "description": "UNet architecture with EfficientNet-B3 encoder for cloud detection in Landsat MSS (Multispectral Scanner) imagery. Trained on CloudSEN12 data emulated to MSS spectral bands using satharmony package. Detects 4 classes: clear, thin cloud, thick cloud, and shadow.", |
| "mlm:name": "mss_cloudmask_unet_effb3", |
| "mlm:architecture": "UNet with EfficientNet-B3 encoder + SCSE attention", |
| "mlm:tasks": [ |
| "semantic-segmentation", |
| "cloud-detection" |
| ], |
| "mlm:framework": "pytorch", |
| "mlm:framework_version": "2.5.1+cu121", |
| "mlm:accelerator": "cuda", |
| "mlm:memory_size": 309827650, |
| "mlm:batch_size_suggestion": 8, |
| "mlm:total_parameters": 13223490, |
| "mlm:input": [ |
| { |
| "name": "mss_reflectance", |
| "bands": [ |
| "Green (500-600nm)", |
| "Red (600-700nm)", |
| "NIR1 (700-800nm)", |
| "NIR2 (800-1100nm)" |
| ], |
| "input": { |
| "shape": [ |
| -1, |
| 4, |
| "H", |
| "W" |
| ], |
| "dim_order": [ |
| "batch", |
| "channel", |
| "height", |
| "width" |
| ], |
| "data_type": "float32" |
| }, |
| "norm": { |
| "type": "reflectance", |
| "range": [ |
| 0.0, |
| 1.0 |
| ], |
| "description": "TOA reflectance normalized to [0, 1]. DN values should be divided by 10000." |
| }, |
| "preprocessing": "Divide DN by 10000 to get reflectance in [0, 1]" |
| } |
| ], |
| "mlm:output": [ |
| { |
| "name": "cloud_mask", |
| "classes": [ |
| { |
| "id": 0, |
| "name": "clear", |
| "description": "Clear sky" |
| }, |
| { |
| "id": 1, |
| "name": "thin_cloud", |
| "description": "Thin/cirrus clouds" |
| }, |
| { |
| "id": 2, |
| "name": "thick_cloud", |
| "description": "Thick/opaque clouds" |
| }, |
| { |
| "id": 3, |
| "name": "shadow", |
| "description": "Cloud shadow" |
| } |
| ], |
| "result": { |
| "shape": [ |
| -1, |
| 4, |
| "H", |
| "W" |
| ], |
| "dim_order": [ |
| "batch", |
| "class", |
| "height", |
| "width" |
| ], |
| "data_type": "float32" |
| }, |
| "description": "Per-pixel logits for 4 classes. Use argmax to get class labels, or softmax for probabilities.", |
| "postprocessing": "Apply argmax(dim=1) to get class labels (0-3), or softmax(dim=1) for probabilities" |
| } |
| ], |
| "mlm:hyperparameters": { |
| "learning_rate": 0.0003, |
| "weight_decay": 0.0001, |
| "optimizer": "AdamW", |
| "scheduler": "CosineAnnealingWarmRestarts", |
| "batch_size": 256, |
| "training_epochs": 55, |
| "final_val_iou": 0.6164, |
| "loss_function": "CrossEntropyLoss", |
| "encoder_depth": 5, |
| "decoder_attention": "SCSE" |
| }, |
| "custom:sensor": "Landsat MSS", |
| "custom:spatial_resolution": "60m", |
| "custom:temporal_coverage": "1972-2013", |
| "custom:training_data": "CloudSEN12 emulated to MSS bands", |
| "custom:emulator": "satharmony", |
| "custom:project": "QA4EO-2", |
| "custom:project_url": "https://github.com/IPL-UV/qa4eo", |
| "file:size": 154913825, |
| "dependencies": [ |
| "torch>=2.0.0", |
| "pytorch-lightning>=2.0.0", |
| "segmentation-models-pytorch>=0.3.0", |
| "rasterio>=1.3.0", |
| "numpy>=1.21.0" |
| ] |
| }, |
| "assets": { |
| "model": { |
| "href": "https://huggingface.co/isp-uv-es/QA4EO-2/resolve/main/unet.ckpt", |
| "type": "application/octet-stream", |
| "title": "PyTorch Lightning checkpoint", |
| "roles": [ |
| "mlm:model", |
| "mlm:weights" |
| ], |
| "file:size": 154913825 |
| }, |
| "load": { |
| "href": "https://huggingface.co/isp-uv-es/QA4EO-2/resolve/main/load.py", |
| "type": "application/x-python-code", |
| "title": "Model loading and inference functions", |
| "roles": [ |
| "mlm:inference-code" |
| ] |
| } |
| }, |
| "links": [ |
| { |
| "rel": "about", |
| "href": "https://github.com/IPL-UV/qa4eo", |
| "type": "text/html", |
| "title": "Project repository" |
| }, |
| { |
| "rel": "license", |
| "href": "https://creativecommons.org/licenses/by/4.0/", |
| "type": "text/html", |
| "title": "CC-BY-4.0" |
| } |
| ] |
| } |