Eklavya16's picture
Update README.md
b6618a8 verified
---
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.