|
|
--- |
|
|
license: apache-2.0 |
|
|
tags: |
|
|
- computer-vision |
|
|
- image-segmentation |
|
|
- satellite-imagery |
|
|
- remote-sensing |
|
|
- pytorch |
|
|
- uncertainty-estimation |
|
|
datasets: |
|
|
- 38-cloud |
|
|
metrics: |
|
|
- iou |
|
|
- dice |
|
|
- precision |
|
|
- recall |
|
|
- f1 |
|
|
--- |
|
|
|
|
|
# π AERIS β Cloud Detection for Landsat 8 |
|
|
|
|
|
AERIS (Automated Environmental Remote Imaging System) is a deep learning model for **cloud segmentation in Landsat 8 satellite imagery** with built-in **uncertainty quantification** using Monte Carlo Dropout. |
|
|
|
|
|
The model performs high-accuracy binary segmentation on 4-channel satellite inputs (RGB + NIR). |
|
|
|
|
|
--- |
|
|
|
|
|
## π Model Description |
|
|
|
|
|
- **Architecture:** U-Net |
|
|
- **Encoder:** ResNet34 |
|
|
- **Input:** 4-channel (Red, Green, Blue, Near-Infrared) |
|
|
- **Input Size:** 256 Γ 256 |
|
|
- **Output:** Binary cloud segmentation mask |
|
|
- **Framework:** PyTorch + segmentation-models-pytorch |
|
|
- **Uncertainty Estimation:** MC Dropout (30 stochastic forward passes) |
|
|
|
|
|
AERIS not only predicts cloud masks but also provides calibrated confidence estimates for more reliable remote sensing workflows. |
|
|
|
|
|
--- |
|
|
|
|
|
## π Performance |
|
|
|
|
|
Evaluation on the **38-Cloud dataset**: |
|
|
|
|
|
| Metric | Score | |
|
|
|--------|--------| |
|
|
| Validation IoU | **92.20%** | |
|
|
| Dice Coefficient | **94.28%** | |
|
|
| Precision | 92.15% | |
|
|
| Recall | 96.73% | |
|
|
| F1 Score | 94.28% | |
|
|
| Expected Calibration Error (ECE) | **0.70%** | |
|
|
|
|
|
Low ECE indicates strong confidence calibration. |
|
|
|
|
|
--- |
|
|
|
|
|
## ποΈ Training Details |
|
|
|
|
|
- **Dataset:** 38-Cloud (16,800 training patches) |
|
|
- **Loss Function:** Combined Dice + Binary Cross-Entropy |
|
|
- **Optimizer:** AdamW (learning rate = 1e-4) |
|
|
- **Epochs:** 30 |
|
|
- **Hardware:** NVIDIA RTX 4060 |
|
|
|
|
|
--- |
|
|
|
|
|
## π Usage |
|
|
|
|
|
### Installation |
|
|
|
|
|
```bash |
|
|
pip install torch torchvision |
|
|
pip install segmentation-models-pytorch |
|
|
``` |
|
|
|
|
|
### Load Model |
|
|
|
|
|
```python |
|
|
import torch |
|
|
import segmentation_models_pytorch as smp |
|
|
|
|
|
model = smp.Unet( |
|
|
encoder_name="resnet34", |
|
|
in_channels=4, |
|
|
classes=1 |
|
|
) |
|
|
|
|
|
model.load_state_dict(torch.load("Aeris_Model.pth", map_location="cpu")) |
|
|
model.eval() |
|
|
``` |
|
|
|
|
|
### Inference |
|
|
|
|
|
```python |
|
|
with torch.no_grad(): |
|
|
output = model(input_tensor) # input_tensor shape: [B, 4, 256, 256] |
|
|
``` |
|
|
|
|
|
For uncertainty estimation, run multiple stochastic forward passes with dropout enabled. |
|
|
|
|
|
--- |
|
|
|
|
|
## π Intended Use |
|
|
|
|
|
- Satellite image preprocessing |
|
|
- Atmospheric correction pipelines |
|
|
- Cloud cover estimation |
|
|
- Weather monitoring systems |
|
|
- Remote sensing research |
|
|
|
|
|
--- |
|
|
|
|
|
## β οΈ Limitations |
|
|
|
|
|
- Trained only on Landsat 8 imagery |
|
|
- Input size fixed at 256Γ256 patches |
|
|
- Performance may degrade on unseen satellite domains |
|
|
- Binary cloud detection (does not classify cloud types) |
|
|
|
|
|
--- |
|
|
|
|
|
## π License |
|
|
|
|
|
This model is released under the **Apache 2.0 License**. |
|
|
|
|
|
--- |
|
|
|
|
|
## π€ Contributions |
|
|
|
|
|
Contributions, improvements, and research collaborations are welcome. |